この節は、マニュアルの他の部分で説明されているメニュードリブンインストーラを使用せずに、既存の Unix・Linux システムから Debian GNU/Linux をインストールする方法について説明します。この 「クロスインストール」 HOWTO は、Red Hat, Mandriva, SUSE から Debian GNU/Linux に移行するユーザの要望で書かれました。本節では、*nix コマンドの入力について熟知し、ファイルシステムを操作できるのが前提となっています。本節では、#
が Debian chroot に入力されたコマンドを示し、$
はユーザの現在のシステムに入力されるコマンドを表します。
一旦、新しい Debian システムを好みに設定したら、既存のユーザデータを (あるなら) 稼働したまま移行できます。したがって、これは 「ダウンタイム無し」での Debian GNU/Linux インストールになります。またこれは、様々な起動・インストールメディアと相性のよくないハードウェアに対処するうまい方法です。
注記 | |
---|---|
これはほとんど手作業になりますから、自分でシステムの大部分の基本設定を行う必要があります。それには通常のインストールよりも Debian や Linux の一般的な知識が必要なことを覚えておいてください。また、この手順で通常のインストールと全く同じシステムになると期待してはいけません。これはシステムをセットアップする基本的な手順でしかありません。追加インストールや追加設定が必要になるかもしれません。 |
今の *nix のパーティション分割ツールで、スワップと最低 1 つファイルシステムを作成するよう、ハードディスクを希望に添って再分割してください。コンソールのみのインストールには、最低 769MB の空き領域が必要ですし、X をインストールする予定なら 2271MB (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) にマウントする場合、次のステージに進む前に、手動でそのディレクトリを作成・マウントする必要があります。 |
Debian インストーラが使用するユーティリティで、Debian 基本システムをインストールする公式の方法と認められているのが debootstrap です。wget と ar を使用しますが、/bin/sh
と基本的な Unix/Linux ツール[24]にのみ依存しています。今のシステムにまだインストールしていなければ、wget と ar をインストールし、その後 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
debootstrap を実行すると、アーカイブから必要なファイルを直接ダウンロードできます。以下のコマンドの例では、http.us.debian.org/debian
としていますが、ネットワーク的に近い Debian アーカイブミラーサイトで代用できます。ミラーサイトは、http://www.debian.org/mirror/list に一覧があります。
bullseye 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 bullseye \ /mnt/debinst http://ftp.us.debian.org/debian
のようにします。所用のアーキテクチャがホストとは異なる場合には --foreign
オプションを追加します。
さあ、これでディスクに真の 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
この時点で、/dev/
には、非常に基本的なデバイスファイルがあるだけです。おそらくインストールの次のステップで、追加デバイスファイルが必要になります。インストールに使用するホストシステムがモジュール化カーネルを使用するかどうかや、新しいシステムで動的デバイスファイル (例: udev
を使用) と静的デバイスファイルのどちらを使用するかにより、どの方法で行うかが異なります。
以下のような選択肢があります。
makedev パッケージをインストールし、次のようにして (chroot してから)、デフォルトの静的デバイスファイル群を作成してください。
# apt install makedev # mount none /proc -t proc # cd /dev # MAKEDEV generic
MAKEDEV を使用して、指定したデバイスファイルのみを手で作成します。
ホストシステムの /dev をターゲットシステムの /dev の先頭にマウントします。いくつかのパッケージの postinst スクリプトでは、デバイスファイルを作成しようとするのに注意してください。そのため、この選択肢は注意深く使用するべきです。
/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
/etc/adjtime
ファイルの 3 行目に、「UTC」 か 「LOCAL」 を設定し、システムがハードウェアの時計を UTC として解釈するか、それぞれの現地時間として解釈するかを決定します。以下のコマンドで、上記の選択とタイムゾーンの選択を行えます。
# editor /etc/adjtime
以下に例を示します。
0.0 0 0.0 0 UTC
以下のコマンドでタイムゾーンの選択ができます。
# dpkg-reconfigure tzdata
ネットワークの設定をするには、/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 など) と結びつけられます。
debootstrap は、追加パッケージをインストールする、非常に基本的な /etc/apt/sources.list
を作成します。しかし、他のパッケージ取得先を追加したくなると思います。以下の例はソースパッケージとセキュリティ更新を追加しています。
deb-src http://ftp.us.debian.org/debian bullseye main deb http://security.debian.org/ bullseye-security main deb-src http://security.debian.org/ bullseye-security main
sources list を更新したら、apt update
を必ず実行してください。
英語以外の言語を使用するようロケールの設定をするために、ロケールをサポートするパッケージ (locales
) をインストール・設定してください。現在は UTF-8 ロケールを使用するのをお勧めします。
# apt install locales # dpkg-reconfigure locales
(必要なら) 以下のようにキーボードの設定を行ってください。
# apt install console-setup # dpkg-reconfigure keyboard-configuration
chroot 内では、キーボードを設定できませんが、再起動後に有効になることに注意してください。
このシステムを起動できるようにするなら、おそらく Linux カーネルとブートローダが必要でしょう。以下のようにして、パッケージ化済みカーネルを確認してください。
# apt search linux-image
その後、パッケージ名を指定して、選択したカーネルパッケージをインストールしてください。
# apt install linux-image-arch-etc
Debian GNU/Linux システムを起動できるようにするために、インストールしたカーネルを新しい root パーティションから読み込むように、ブートローダをセットアップしてください。debootstrap は、ブートローダをインストールしないことに注意してください。とは言っても、セットアップするのに Debian chroot 内部の apt を使用できます。
ブートローダのセットアップについての説明は、info grub
をチェックしてください。Debian をインストールするのに使用したシステムを保持する場合、既存の grub2 の grub.cfg
に、Debian インストールへのエントリを単に加えてください。
grub2
のインストールと設定は以下のように簡単です。
# apt install grub-pc
# grub-install /dev/sda
# update-grub
2 つ目のコマンドで、grub2 を (この場合は sda
の MBR に) インストールします。最後のコマンドで、正しく動作する /boot/grub/grub.cfg
を作成します。
/dev/sda
デバイスファイルは、作成済みだと仮定していることに注意してください。grub2 のインストールには別の方法もありますが、それはこの付録では扱いません。
コンソール経由でシステムにログインできる場合はこの節を飛ばせます。後でネットワーク経由でシステムにアクセスできるようにする必要がある場合は 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
すでに述べたように、インストールしたシステムは非常に基本的な物になります。もっと成熟したシステムにしたければ、優先度が 「standard」 のパッケージを、すべてインストールする簡単な方法があります。以下のようにしてください。
# tasksel install standard
もちろん apt で、個々のパッケージをインストールすることもできます。
インストールが終わると、ダウンロードしたパッケージが /var/cache/apt/archives/
に大量に残っています。以下のようにして、ディスク領域を解放できます。
# apt clean