debian や fedora などの linux が稼働しているPCに,新しいHDDに接続して,そのHDDにdebian をインストールする方法をまとめます
この方法は
- installerを使うより早い (数分で新しい debain 環境が用意できます)
- 既存の設定のコピーが簡単
というメリットがあります
予備機を作る場合,同じ設定のPCを大量に用意する場合などに使うと便利です
この記事はインストーラを使わずにdebianをインストールする方法 (2016年版) - pyopyopyo - Linuxとかプログラミングの覚え書き -をベースに,2020年10月25日に更新したものです.
debootstrap の入手
debian 環境なら apt-get で debootstrap をインストールします
$ sudo apt-get install debootstrap
fedora などの非デビアン環境なら http://ftp.debian.org/debian/pool/main/d/debootstrap/ から tar.gz をダウンロードし作業ディレクトリに展開します
debootstrap の実行
"linux filesystem"のパーティションをマウントします
マウントポイントは /media とします
$ sudo mount /dev/sdXX /media
debootstrap を実行します
$ sudo /usr/sbin/debootstrap --arch amd64 stable /media http://ftp.jp.debian.org/debian
最小構成のパッケージを自動ダウンロードして,自動インストールしてくれます
成功するとbinやsbinが作成され,合計で296Mほどファイルが展開されます
回線の太さにもよりますが,2分ぐらいで終わります
初期設定
$ sudo mount --bind /dev /media/dev $ sudo mount --bind /proc /media/proc
$ sudo mkdir -p /media/boot/efi $ sudo mount /dev/sdX2 /media/boot/efi
/media/boot/efi は vfat のファイルシステムです.vfat になっているか確認します
確認方法は,たとえば /proc/mounts を覗くと判ります
$ cat /proc/mounts | grep /media/boot/efi /dev/sdf2 on /media/boot/efi type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=utf8,shortname=mixed,errors=remount-ro)
chroot
chroot で環境を切り替えます
$ sudo chroot /media
/etc/fstab の編集
# vi /etc/fstab
# /etc/fstab # /dev/sda2 /boot/efi vfat umask=0077 0 1 /dev/sda3 / ext4 errors=remount-ro,relatime 0 1 tmpfs /tmp tmpfs defaults 0 0
ちなみに SSD を discard でmountするのは非奨励だそうです
ネットワーク
DHCPを使う設定ファイルを用意します
ポイントは
- ネットワークのインタフェースの名前は eth0 とします.最近はinterface名を enp3s0 のような形式にするディストリビューションが多いですが,本エントリではあえて eth0 に固定するように設定します.
- 固定IPでの設定をコメント部分に書いておくと,緊急時に便利です
- vi /etc/network/interfaces.d/eth0
# dhcp: # auto eth0 iface eth0 inet dhcp # static: # # auto eth0 # iface eth0 inet static # address 192.168.0.100 # network 192.168.0.0 # netmask 255.255.255.0 # broadcast 192.168.0.255 # gateway 192.168.0.1
DHCPで必要なのは2行だけ(auto eth0 と iface eth0 inet dhcp)のこりは緊急時に固定IPで設定するさいのテンプレートです
- /etc/network/interfaces.d/local
auto lo iface lo inet loopback
- /etc/hostname
yourhostname.yourdomainname
- /etc/resolv.conf
# nameserver 1.2.3.4
locales
# apt-get install locales # dpkg-reconfigure locales
キーボード配列
# apt-get install console-data # dpkg-reconfigure console-data
カーネル
/etc/kernel-img.conf
# Kernel image management overrides # See kernel-img.conf(5) for details do_symlinks = yes relative_links = yes do_bootloader = yes do_bootfloppy = no do_initrd = yes link_in_boot = no
# apt-get install linux-image-amd64
ブートローダ
UEFIを使わない場合は
# apt-get install grub2 # /usr/sbin/grub-install /dev/sdX
UEFIを使う場合は
# apt-get install grub-efi-amd64 # grub-install --target=x86_64-efi /dev/sdX
ネットワークインタフェース名を eth0 に固定する設定を行います
# vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 biosdevname=0"
設定ファイルを用意します
# /usr/sbin/grub-mkconfig -o /boot/grub/grub.cfg
root パスワードの設定
# passwd
ユーザアカウントの作成
useradd を使っても良いですが,既存アカウントとそのパスワードをコピーするだけなら
- /etc/passwd
- /etc/shadow
- /etc/group
を直接編集したほうが早いです
必要なパッケージの追加インストール
適宜必要なパッケージをインストールしておきます
# apt-get install lv openssh-server sudo screen rsync
その他設定ファイルの用意
長くなりそうなので別エントリにまとめる予定です
unmount
設定が終了したら ディスクを外します
$ sudo umount /media/dev $ sudo umount /media/proc $ sudo umount /media
以上で debootstrap 完了です!