labunix's blog

labunixのラボUnix

Debian Jessieローカルインストール用の16GBのUSB起動メディアを作成する。

■Debian Jessieローカルインストール用の16GBのUSB起動メディアを作成する。
 普通にインストールするのがつまらない方向け。

■ダウンロード。
 今回は16GBに収まるサイズまでDVDを選択。
 netinstは最小インストール用なのでその後の手順を読み替えれば無くてもOK。

$ BASE="http://cdimage.debian.org/debian-cd/8.1.0/amd64/"; \
  wget ${BASE}iso-cd/debian-8.1.0-amd64-netinst.iso
$ BASE="http://cdimage.debian.org/debian-cd/8.1.0/amd64/"; \
  wget ${BASE}iso-cd/MD5SUMS
$ grep net MD5SUMS && rm MD5SUMS
1a311f9afb68d6365211b13b4342c40b  debian-8.1.0-amd64-netinst.iso

$ wget ${BASE}/iso-dvd/MD5SUMS; \
  grep "debian-8.1.0-amd64-DVD-[123].iso" MD5SUMS && rm MD5SUMS
f7da4df83de36b3db105d79f85d97b59  debian-8.1.0-amd64-DVD-1.iso
c6db5c866bb54fdb38024a55924d345f  debian-8.1.0-amd64-DVD-2.iso
c386b06ae9fb62d562d67cfa6e6bac0c  debian-8.1.0-amd64-DVD-3.iso

$ md5sum dlsv/debian-8.1.0-amd64-*.iso
f7da4df83de36b3db105d79f85d97b59  dlsv/debian-8.1.0-amd64-DVD-1.iso
c6db5c866bb54fdb38024a55924d345f  dlsv/debian-8.1.0-amd64-DVD-2.iso
c386b06ae9fb62d562d67cfa6e6bac0c  dlsv/debian-8.1.0-amd64-DVD-3.iso
1a311f9afb68d6365211b13b4342c40b  dlsv/debian-8.1.0-amd64-netinst.iso

■起動フラグ「0xaa55」とパーティションのブートフラグ「80」を確認。

$ od -v -tx1 -j 510 -N 2 dlsv/debian-8.1.0-amd64-netinst.iso | \
  awk '(NF>1){print "0x"$3$2}'
0xaa55

$ od -v -tx1 -j 446 -N 64 dlsv/debian-8.1.0-amd64-netinst.iso 
0000676 80 00 01 00 00 3f 20 f6 00 00 00 00 00 b8 07 00
0000716 00 fe ff ff ef fe ff ff 8c 0f 00 00 40 03 00 00
0000736 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000756 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000776

■他のHDDやUSBメモリと同様の情報なので、fdiskでも取得出来る。

$ sudo fdisk -l dlsv/debian-8.1.0-amd64-netinst.iso 

Disk dlsv/debian-8.1.0-amd64-netinst.iso: 247 MiB, 258998272 bytes, 505856 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x1876769c

Device                               Boot Start    End Sectors  Size Id Type
dlsv/debian-8.1.0-amd64-netinst.iso1 *        0 505855  505856  247M  0 Empty
dlsv/debian-8.1.0-amd64-netinst.iso2       3980   4811     832  416K ef EFI (FAT-12/16/32)

■最近のnetinstallerは247MBもあるんですね。
 8cm CD-Rが180MBから300MBになったことに関係しているのでしょうか。。。

$ echo "505856" | awk '{print $1*512"byte,"$1/2/1024"MB"}'
258998272byte,247MB

■USBメモリは容量16GBです。

$ sudo fdisk -l /dev/sdb

Disk /dev/sdb: 15.1 GiB, 16219373568 bytes, 31678464 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device     Boot Start      End  Sectors  Size Id Type
/dev/sdb1        2048 31678463 31676416 15.1G  c W95 FAT32 (LBA)

■まずは、netinstallerを書き込みます。

$ sudo dd if=debian-8.1.0-amd64-netinst.iso of=/dev/sdb bs=512

$ sudo fdisk -l /dev/sdb

Disk /dev/sdb: 15.1 GiB, 16219373568 bytes, 31678464 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x1876769c

Device     Boot Start    End Sectors  Size Id Type
/dev/sdb1  *        0 505855  505856  247M  0 Empty
/dev/sdb2        3980   4811     832  416K ef EFI (FAT-12/16/32)

■追加のパーティションを作成。

$ sudo fdisk /dev/sdb

Welcome to fdisk (util-linux 2.25.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): p
Disk /dev/sdb: 15.1 GiB, 16219373568 bytes, 31678464 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x1876769c

Device     Boot Start    End Sectors  Size Id Type
/dev/sdb1  *        0 505855  505856  247M  0 Empty
/dev/sdb2        3980   4811     832  416K ef EFI (FAT-12/16/32)


Command (m for help): n
Partition type
   p   primary (2 primary, 0 extended, 2 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (3,4, default 3): 
First sector (505856-31678463, default 505856): 
Last sector, +sectors or +size{K,M,G,T,P} (505856-31678463, default 31678463): 

Created a new partition 3 of type 'Linux' and of size 14.9 GiB.

Command (m for help): wq
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: デバイスもしくはリソースがビジー状態です

The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).

$ sudo sync
$ sudo sync
$ sudo sync

■USBメモリを抜き差しすると、
 3つ目のパーティションが出来ていることが確認出来ます。

$ sudo fdisk -l /dev/sdb

Disk /dev/sdb: 15.1 GiB, 16219373568 bytes, 31678464 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x1876769c

Device     Boot  Start      End  Sectors  Size Id Type
/dev/sdb1  *         0   505855   505856  247M  0 Empty
/dev/sdb2         3980     4811      832  416K ef EFI (FAT-12/16/32)
/dev/sdb3       505856 31678463 31172608 14.9G 83 Linux

■3つ目のパーティションをフォーマット。
 約15GBの初期化なので、気長に待ちます。

$ sudo mkfs.ext3 /dev/sdb3
mke2fs 1.42.12 (29-Aug-2014)
Creating filesystem with 3896576 4k blocks and 974848 inodes
Filesystem UUID: 2b362c6f-73b1-4f9a-bbcc-be1cb11f7f58
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information:        
done

■マウントしてDVDをコピーします。

$ sudo mount /dev/sdb3 /media/usb0/
$ sudo cp dlsv/debian-8.1.0-amd64-DVD-[123].iso /media/usb0/
$ sudo umount /dev/sdb3

■USBメディアをISOとして書き戻します。

$ sudo dd if=/dev/sdb of=usb-installer.iso

■VMPlayerのCD/DVDイメージに指定してインストールしてみます。
 これで起動の確認とインストールが出来まることが確認出来ます。
 ディスクを間違えないように、aptの設定はミラー設定なしで進めます。

■再起動したら、今度はUSBメモリを共有して、
 3つ目のパーティションを読めるようにします。

# test -d /media/sdb3 || mkdir /media/sdb3; \
  mount /dev/sdb3 /media/sdb3
# n=0; \
  for list in /media/sdb3/debian-8.1.0-amd64-DVD-*;do \
    echo "$list /media/usb${n} iso9660 loop,ro 0 0"; \
    let n=${n}+1; \
  done | tee -a /etc/fatab
/media/sdb3/debian-8.1.0-amd64-DVD-1.iso /media/usb0 iso9660 loop,ro 0 0
/media/sdb3/debian-8.1.0-amd64-DVD-2.iso /media/usb1 iso9660 loop,ro 0 0
/media/sdb3/debian-8.1.0-amd64-DVD-3.iso /media/usb2 iso9660 loop,ro 0 0

# echo "/dev/sdb3 /media/sdb3 ext3 errors=remount-ro 0 0" >> /etc/fstab
# mount -a
# apt-cdrom -d /media/usb0 add
# apt-cdrom -d /media/usb1 add
# apt-cdrom -d /media/usb2 add

■「/media/cdrom」を読んでしまうようなら
 「deb cdrom:」行をコメントアウトして以下を追加。

deb file:///media/usb0 jessie main contrib
deb file:///media/usb1 jessie main contrib
deb file:///media/usb2 jessie main contrib

■外部アクセスをコメントアウトしてapt-get。

# sed -i -e 's/^deb.*http/#&/g' /etc/apt/sources.list
# apt-get update
# env LANG=C apt-get install vim

■ちなみにvimはメディア番号が上がるにつれ、マイナーなdebパッケージがある。

# find /media/usb{0,1,2} -type f -name "vim*"
/media/usb0/pool/main/v/vim/vim_7.4.488-7_amd64.deb
/media/usb0/pool/main/v/vim/vim-common_7.4.488-7_amd64.deb
/media/usb0/pool/main/v/vim/vim-runtime_7.4.488-7_all.deb
/media/usb0/pool/main/v/vim/vim-tiny_7.4.488-7_amd64.deb
/media/usb1/pool/main/v/vim/vim-doc_7.4.488-7_all.deb
/media/usb1/pool/main/v/vim/vim-gnome_7.4.488-7_amd64.deb
/media/usb1/pool/main/v/vim/vim-gtk_7.4.488-7_amd64.deb
/media/usb1/pool/main/v/vim/vim-gui-common_7.4.488-7_all.deb
/media/usb1/pool/main/v/vim/vim-nox_7.4.488-7_amd64.deb
/media/usb1/pool/main/v/vim-addon-manager/vim-addon-manager_0.5.3_all.deb
/media/usb1/pool/main/v/vim-scripts/vim-scripts_20130814_all.deb
/media/usb2/pool/main/p/puppet/vim-puppet_3.7.2-4_all.deb
/media/usb2/pool/main/v/vim-latexsuite/vim-latexsuite_20130116.788-1_all.deb

■chkconfigと、mateデスクトップをインストール。

# env LANG=C apt-get install chkconfig mate gdm3 xorg

■きちんとGUIも使えるようになった。