インストーラを使わずにdebianをインストールする方法(2020年版)

debianfedora などの linux が稼働しているPCに,新しいHDDに接続して,そのHDDにdebian をインストールする方法をまとめます

この方法は

  • installerを使うより早い (数分で新しい debain 環境が用意できます)
  • 既存の設定のコピーが簡単

というメリットがあります

予備機を作る場合,同じ設定のPCを大量に用意する場合などに使うと便利です

この記事はインストーラを使わずにdebianをインストールする方法 (2016年版) - pyopyopyo - Linuxとかプログラミングの覚え書き -をベースに,2020年10月25日に更新したものです.

ディスクのフォーマット

この方法でパーティションを用意,フォーマットします

pyopyopyo.hatenablog.com


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

boot/grub/efi をマウントしておきます

$ 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するのは非奨励だそうです

タイムゾーン
# dpkg-reconfigure tzdata
  1. Asia を選ぶ (aを数回押してasiaを探してenter)
  2. Tokyo を選ぶ (tを数回押してtokyoを探してenter)
ネットワーク


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

デフォルトのEDITORの設定

デフォルトのエディタを vim に変更します

# update-alternatives --config editor

その他設定ファイルの用意

長くなりそうなので別エントリにまとめる予定です

unmount

設定が終了したら ディスクを外します

$ sudo umount /media/dev
$ sudo umount /media/proc
$ sudo umount /media

以上で debootstrap 完了です!