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

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

この方法は

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

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

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

ディスクのフォーマット

新しいHDDのデバイスファイルを /dev/sdX とします

$ sudo  gdisk /dev/sdX
Command (? for help): n
Partition number: 1
First sector: <enter>
Last sector: 512M
GUID: EF00
Command (? for help): n
Partition number: 2
First sector: <enter>
Last sector: <enter>
GUID: <enter>
$ sudo /sbin/mkfs.vfat -F 16 /dev/sdX1
$ sudo /sbin/mkfs.ext4 /dev/sdX2

/sbin/mkfs.vfat がインストールされていない場合は dosfstools パッケージを追加すればOKです


gdisk よくワカラン,という人は gpart あたりがおすすめです

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 sid /media http://ftp.jp.debian.org/debian

最小構成のパッケージを自動ダウンロードして,自動インストールしてくれます

成功するとbinやsbinが作成され,合計で296Mほどファイルが展開されます

初期設定

$  sudo mount --bind /dev /media/dev
$  sudo mount --bind /proc /media/proc

chroot で環境を切り替えます

$ sudo chroot /media
/etc/fstab
# vi /etc/fstab
# /etc/fstab
#
/dev/sda1 /boot/grub/efi   vfat    umask=0077      0       1
/dev/sda2 /           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
  • /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
# 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