D.3. Unix/Linux システムからの Debian GNU/Linux のインストール

この節は、マニュアルの他の部分で説明されているメニュードリブンインストーラを使用せずに、既存の Unix・Linux システムから Debian GNU/Linux をインストールする方法について説明します。この クロスインストール HOWTO は、Red Hat, Mandriva, SUSE から Debian GNU/Linux に移行するユーザの要望で書かれました。本節では、*nix コマンドの入力について熟知し、ファイルシステムを操作できるのが前提となっています。本節では、#が Debian chroot に入力されたコマンドを示し、$ はユーザの現在のシステムに入力されるコマンドを表します。

一旦、新しい Debian システムを好みに設定したら、既存のユーザデータを (あるなら) 稼働したまま移行できます。したがって、これは ダウンタイム無しでの Debian GNU/Linux インストールになります。またこれは、様々な起動・インストールメディアと相性のよくないハードウェアに対処するうまい方法です。

[注記] 注記

これはほとんど手作業になりますから、自分でシステムの大部分の基本設定を行う必要があります。それには通常のインストールよりも Debian や Linux の一般的な知識が必要なことを覚えておいてください。また、この手順で通常のインストールと全く同じシステムになると期待してはいけません。これはシステムをセットアップする基本的な手順でしかありません。追加インストールや追加設定が必要になるかもしれません。

D.3.1. はじめに

今の *nix のパーティション分割ツールで、スワップと最低 1 つファイルシステムを作成するよう、ハードディスクを希望に添って再分割してください。コンソールのみのインストールには、最低 1012MB の空き領域が必要ですし、X をインストールする予定なら 2539MB (GNOME や KDE Plasma のようなデスクトップ環境をインストールする場合はもっと) 必要です。

次に、パーティションにファイルシステムを作成してください。例えば、/dev/sda6 パーティションに、ext3 ファイルシステムを作成するには、以下のようにします。(今回の例ではこのパーティションを root パーティションとします)

# mke2fs -j /dev/sda6

ext3 ではなく ext2 ファイルシステムを作成するには、-j を取ってください。

スワップを以下のように初期化して有効にしてください。(パーティション番号は、Debian スワップパーティションにするパーティション番号に、読み替えてください)

# mkswap /dev/sda5
# sync
# swapon /dev/sda5

パーティションを /mnt/debinst (インストールポイント。新システムの root (/) ファイルシステムになります) にマウントしてください。厳密にいうとマウントポイント名は何でも構いません。以降の説明ではこれを使用します。

# mkdir /mnt/debinst
# mount /dev/sda6 /mnt/debinst

[注記] 注記

分割したパーティションをファイルシステムの一部 (例 /usr) にマウントする場合、次のステージに進む前に、手動でそのディレクトリを作成・マウントする必要があります。

D.3.2. debootstrap のインストール

Debian インストーラが使用するユーティリティで、Debian 基本システムをインストールする公式の方法と認められているのが debootstrap です。wgetar を使用しますが、/bin/sh と基本的な Unix/Linux ツール[21]にのみ依存しています。今のシステムにまだインストールしていなければ、wgetar をインストールし、その後 debootstrap をダウンロード・インストールしてください。

また、手動でインストールするには、以下の手順になります。まず .deb を展開するために作業フォルダを次のように作ってください。

# mkdir work
# cd work

debootstrap バイナリは、Debian アーカイブ (あなたのアーキテクチャに適合するファイルを必ず選ぶこと) にあります。pool から debootstrap .deb をダウンロードして、作業フォルダにパッケージをコピーし、ファイルを展開してください。ファイルをインストールする際には root 権限を持つ必要があるでしょう。

# ar -x debootstrap_0.X.X_all.deb
# cd /
# zcat /full-path-to-work/work/data.tar.gz | tar xv

D.3.3. debootstrap の実行

debootstrap を実行すると、アーカイブから必要なファイルを直接ダウンロードできます。以下のコマンドの例では、http.us.debian.org/debian としていますが、ネットワーク的に近い Debian アーカイブミラーサイトで代用できます。ミラーサイトは、http://iwawocd.cewmufwd.tk/mirror/list に一覧があります。

bookworm Debian GNU/Linux インストールイメージを持っていて、/cdrom にマウントしていれば、http URL に代えて file URL (file:/cdrom/debian/) を使用することができます。

debootstrap コマンドの ARCH は、amd64, arm64, armel, armhf, i386, mips64el, mipsel, ppc64el, s390x のどれかと置き換えるか、

# /usr/sbin/debootstrap --arch ARCH bookworm \
     /mnt/debinst http://ftp.us.debian.org/debian

のようにします。所用のアーキテクチャがホストとは異なる場合には --foreign オプションを追加します。

D.3.4. 基本システムの設定

さあ、これでディスクに真の Debian システムを (いくぶん中がスカスカですが) 手に入れました。そこに chroot してください。

# LANG=C.UTF-8 chroot /mnt/debinst /bin/bash

所用のアーキテクチャがホストとは異なる場合にはまず、qemu-user-static を新しいホストにコピーする必要があるかもしれません。

# cp /usr/bin/qemu-ARCH-static /mnt/debinst/usr/bin
# LANG=C.UTF-8 chroot /mnt/debinst qemu-ARCH-static /bin/bash

chroot した後で Debian 基本システムと互換のある端末定義を設定する必要があるかもしれません。例えば

# export TERM=xterm-color

のようにします。TERM の値により、その値をサポートするのに ncurses-term パッケージをインストールする必要があるかもしれません。

所用のアーキテクチャがホストとは異なる場合には複数段階の前処理を終えておく必要があるかもしれません。

/debootstrap/debootstrap --second-stage

D.3.4.1. デバイスファイルの作成

この時点で、/dev/ には、非常に基本的なデバイスファイルがあるだけです。おそらくインストールの次のステップで、追加デバイスファイルが必要になります。インストールに使用するホストシステムがモジュール化カーネルを使用するかどうかや、新しいシステムで動的デバイスファイル (例: udev を使用) と静的デバイスファイルのどちらを使用するかにより、どの方法で行うかが異なります。

以下のような選択肢があります。

  • makedev パッケージをインストールし、次のようにして (chroot してから)、デフォルトの静的デバイスファイル群を作成してください。

    # apt install makedev
    # mount none /proc -t proc
    # cd /dev
    # MAKEDEV generic
    

  • MAKEDEV を使用して、指定したデバイスファイルのみを手で作成します。

  • ホストシステムの /dev をターゲットシステムの /dev の先頭にマウントします。いくつかのパッケージの postinst スクリプトでは、デバイスファイルを作成しようとするのに注意してください。そのため、この選択肢は注意深く使用するべきです。

D.3.4.2. パーティションのマウント

/etc/fstab を作る必要があります。

# editor /etc/fstab

以下のサンプルを自分に合うように編集できます。

# /etc/fstab: static file system information.
#
# file system    mount point   type    options                  dump pass
/dev/XXX         /             ext3    defaults                 0    1
/dev/XXX         /boot         ext3    ro,nosuid,nodev          0    2

/dev/XXX         none          swap    sw                       0    0
proc             /proc         proc    defaults                 0    0

/dev/cdrom       /media/cdrom  iso9660 noauto,ro,user,exec      0    0

/dev/XXX         /tmp          ext3    rw,nosuid,nodev          0    2
/dev/XXX         /var          ext3    rw,nosuid,nodev          0    2
/dev/XXX         /usr          ext3    rw,nodev                 0    2
/dev/XXX         /home         ext3    rw,nosuid,nodev          0    2

/etc/fstab で指定したファイルシステムを、すべてマウントするには mount -a としてください。また、ファイルシステムを別々にマウントするには、以下のようにしてください。

# mount /path   # e.g.: mount /usr

現在 Debian システムでは、リムーバブルメディアのマウントポイントを /media にしていますが、/ にシンボリックリンクを置き互換性を保っています。以下の例のように、必要であれば作成してください。

# cd /media
# mkdir cdrom0
# ln -s cdrom0 cdrom
# cd /
# ln -s media/cdrom

proc ファイルシステムは、どこでも何度でもマウントすることができますが、慣習的に /proc にマウントします。mount -a を使用しなかった場合は、以下のように先に進む前に必ず proc をマウントしてください。

# mount -t proc proc /proc

ls /proc コマンドは、今度は空のディレクトリにはならないはずです。これが失敗するようなら、以下のように chroot の外側から proc をマウントできるかもしれません。

# mount -t proc proc /mnt/debinst/proc

D.3.4.3. タイムゾーンの設定

/etc/adjtime ファイルの 3 行目に、UTCLOCAL を設定し、システムがハードウェアの時計を UTC として解釈するか、それぞれの現地時間として解釈するかを決定します。以下のコマンドで、上記の選択とタイムゾーンの選択を行えます。

# editor /etc/adjtime

以下に例を示します。

0.0 0 0.0
0
UTC

以下のコマンドでタイムゾーンの選択ができます。

# dpkg-reconfigure tzdata

D.3.4.4. ネットワークの設定

ネットワークの設定をするには、/etc/network/interfaces, /etc/resolv.conf, /etc/hostname and /etc/hosts を編集してください。

# editor /etc/network/interfaces

次は、/usr/share/doc/ifupdown/examples のシンプルな例です。

######################################################################
# /etc/network/interfaces -- ifup(8), ifdown(8) 用設定ファイル
# どのようなオプションが使えるかについては interfaces(5) man ページを参照してください
######################################################################

# loopback インターフェイスは絶対に必要では無くなっていますが、必要になった時に使えます
#
auto lo
iface lo inet loopback

# dhcp を使う:
#
# auto eth0
# iface eth0 inet dhcp

# 静的 IP 設定の例: (network, broadcast, gateway はオプション)
#
# auto eth0
# iface eth0 inet static
#     address 192.168.0.42
#     network 192.168.0.0
#     netmask 255.255.255.0
#     broadcast 192.168.0.255
#     gateway 192.168.0.1

/etc/resolv.conf に、ネームサーバと search ディレクティブを入力してください。

# editor /etc/resolv.conf

以下は、/etc/resolv.conf の簡単な例です。

search example.com
nameserver 10.1.1.36
nameserver 192.168.9.100

システムのホスト名 (2 から 63 文字) を入力してください。

# echo DebianHostName > /etc/hostname

また、IPv6 をサポートした基本的な /etc/hosts は以下のようにします。

127.0.0.1 localhost
127.0.1.1 DebianHostName

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

複数のネットワークカードを持っているなら、/etc/modules ファイルに希望の順番で、ドライバモジュールの名前を配置してください。その後起動中に、各カードは期待通りにインターフェース名 (eth0, eth1 など) と結びつけられます。

D.3.4.5. apt の設定

debootstrap は、追加パッケージをインストールする、非常に基本的な /etc/apt/sources.list を作成します。しかし、他のパッケージ取得先を追加したくなると思います。以下の例はソースパッケージとセキュリティ更新を追加しています。

deb-src http://ftp.us.debian.org/debian bookworm main

deb http://security.debian.org/ bookworm-security main
deb-src http://security.debian.org/ bookworm-security main

sources list を更新したら、apt update を必ず実行してください。

D.3.4.6. ロケールとキーボードの設定

英語以外の言語を使用するようロケールの設定をするために、ロケールをサポートするパッケージ (locales) をインストール・設定してください。現在は UTF-8 ロケールを使用するのをお勧めします。

# apt install locales
# dpkg-reconfigure locales

(必要なら) 以下のようにキーボードの設定を行ってください。

# apt install console-setup
# dpkg-reconfigure keyboard-configuration 

chroot 内では、キーボードを設定できませんが、再起動後に有効になることに注意してください。

D.3.5. カーネルのインストール

このシステムを起動できるようにするなら、おそらく Linux カーネルとブートローダが必要でしょう。以下のようにして、パッケージ化済みカーネルを確認してください。

# apt search linux-image

その後、パッケージ名を指定して、選択したカーネルパッケージをインストールしてください。

# apt install linux-image-arch-etc

D.3.6. ブートローダのセットアップ

Debian GNU/Linux システムを起動できるようにするために、インストールしたカーネルを新しい root パーティションから読み込むように、ブートローダをセットアップしてください。debootstrap は、ブートローダをインストールしないことに注意してください。とは言っても、セットアップするのに Debian chroot 内部の apt を使用できます。

/dev/sda デバイスファイルは、作成済みだと仮定していることに注意してください。grub2 のインストールには別の方法もありますが、それはこの付録では扱いません。

D.3.7. リモートアクセス: SSH のインストールとアクセス方法の設定

コンソール経由でシステムにログインできる場合はこの節を飛ばせます。後でネットワーク経由でシステムにアクセスできるようにする必要がある場合は SSH をインストールしてアクセス方法を用意する必要があります。

# apt install ssh

パスワードによる root のログインはデフォルトで無効になっているため、パスワードを設定してパスワードによる root のログインを有効にしてアクセス方法を用意します:

# passwd
# editor /etc/ssh/sshd_config

有効にするオプション:

PermitRootLogin yes

root アカウントに SSH の鍵を追加してアクセス方法を用意することもできます:

# mkdir /root/.ssh
# cat << EOF > /root/.ssh/authorized_keys
ssh-rsa ....
EOF

最後に、root ユーザを追加してパスワードを設定してアクセス方法を用意することもできます:

# adduser joe
# passwd joe

D.3.8. 仕上げに

すでに述べたように、インストールしたシステムは非常に基本的な物になります。もっと成熟したシステムにしたければ、優先度が standard のパッケージを、すべてインストールする簡単な方法があります。以下のようにしてください。

# tasksel install standard

もちろん apt で、個々のパッケージをインストールすることもできます。

インストールが終わると、ダウンロードしたパッケージが /var/cache/apt/archives/ に大量に残っています。以下のようにして、ディスク領域を解放できます。

# apt clean



[21] これには、sed, grep, tar, gzip といった、GNU コアユーティリティが含まれます。