debootstrapでDebianをコマンドでインストールする
今回はKVMで動かす用のDebianをインストールしたイメージを作成します。
つまり:
- rootfs
- systemd
- kernel
- bootloader (Legacy BIOS)
全部入りのインストールです。
着手!
イメージを作成
私はbtrfsなのでreflinc(FICLONE)を使うのであえてQCOW2にはしませんでした。
truncate --size=16GiB vda.img
losetup
お手軽なlosetup
、これが単なるファイルの利点です。
sudo losetup -Pf vda.img
パーティショニング
今回はGPTで先頭にあるパーティション1MiBをBIOS Boot 残りをrootfs用に切りました。
sudo fdisk /dev/loop0
ファイルシステムの作成
ホスト環境のbtrfsとCoWのオーバーヘッドを意識して当たり障りのないext4を選びました。
sudo mkfs.ext4 /dev/loop0p2
rootfsのマウント
もしあれば他にもマウントします。
mkdir -p /target
sudo mount /dev/loop0p2
debootstrap
やっとdebootstrapです。repoがふつうのhttpsなのでca-certificateをインストールします。
さもなくば、後でapt-getでTLSの証明書がない系のエラーになります(私も以前のバージョンで経験しました)。
sudo debootstrap --include=ca-certificates --variant=minbase --force-check-gpg trixie /target https://deb.debian.org/debian/
chrootの準備
sudo sh -c 'for i in dev dev/pts proc sys;do mount --bind /$i /target/$i;done'
/etc/fstabの設定
これで必要なマウントポイントを記載します。
パイプはUUIDのコピペ用です。
sudo blkid |sudo nano - /target/etc/fstab
apt-getの設定
printf \
'deb https://deb.debian.org/debian trixie main contrib non-free non-free-firmware\n'\
'deb https://deb.debian.org/debian trixie-updates main contrib non-free non-free-firmware\n'\
'deb https://deb.debian.org/debian trixie-backports main contrib non-free non-free-firmware\n'\
'deb https://deb.debian.org/debian-security trixie-security main contrib non-free non-free-firmware\n'\
'\n'\
'deb https://deb.debian.org/debian sid main contrib non-free non-free-firmware\n'\
|sudo tee /target/etc/apt/sources.list\
>/dev/null
printf \
'Package: *\n'\
'Pin: release n=sid\n'\
'Pin-Priority: 80\n'\
|sudo tee /target/etc/apt/preferences.d/90sid\
>/dev/null
printf \
'Acquire::Languages none;\n'\
|sudo tee /target/etc/apt/apt.conf.d/90translation\
>/dev/null
起動+管理に必要か便利なアプリのインストール
sudo chroot /target /bin/sh -c 'apt-get update'
sudo chroot /target /bin/sh -c 'apt-get install systemd network-manager sudo nano linux-image-amd64 grub2'
ブートローダーのインストール
sudo chroot /target /bin/sh -c 'update-grub'
sudo chroot /target /bin/sh -c 'grub-install /dev/loop0'
管理者ユーザーの作成と初期設定
これ忘れがちです。
sudo chroot /target /bin/sh -c 'useradd -G sudo -m -s /bin/bash -u 1000 -U user'
sudo chroot /target /bin/sh -c 'passwd -d user'
sudo chroot /target /bin/sh -c 'visudo'
chrootの後片付け
sudo sh -c 'for i in dev/pts dev proc sys;do umount /target/$i;done'
rootfsのアンマウントなど
sudo umount /target
sudo losetup -d /dev/loop0
完成
起動して確認してみましょう