■USB起動Squeeze-amd64版の再作成
LennyからアップデートしたSqueezeでvmnetのサービスが立ち上がらなくなった。
クリーンなSqueezeと比べても特に異常は無かったので、お手上げ。
ということで、USB起動のLennyをSqueezeのインストーラに変身させる。
CD-Rが無かったのと、PXE-Bootはもうやったので、またUSB起動を試す。
■現状確認。
sdbとして認識しているUSB起動のディスクは、i686版のLennyです。
MBRの末尾が「55 aa」、つまり0xAA55なので、起動可能です。
$ dmesg | grep sd | grep blocks
[2931999.307682] sd 7:0:0:0: [sdb] 31506432 512-byte logical blocks: (16.1 GB/15.0 GiB)
$ sudo fdisk -l /dev/sdb | tail -4
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 1873 15044841 83 Linux
/dev/sdb2 1874 1961 706860 5 Extended
/dev/sdb5 1874 1961 706828+ 82 Linux swap / Solaris
$ sudo mount /dev/sdb1 /media/sdb1
$ sudo cat /media/sdb1/etc/debian_version
5.0.4
$ sudo ls /media/sdb1/boot/vmlinuz-2.6.26-2-686
$ dd if=/dev/sdb bs=512 count=1 | hexdump -C | less
00000000 fa 33 c0 8e d0 bc 00 7c 8b f4 50 07 50 1f fb fc |.3.....|..P.P...|
00000010 bf 00 06 b9 00 01 f2 a5 ea 1d 06 00 00 be b8 06 |................|
00000020 ac 3c 00 74 0e 56 bb 07 00 b4 0e cd 10 5e ea 20 |.<.t.V.......^. |
00000030 06 00 00 cd 18 00 00 00 00 00 00 00 00 00 00 00 |................|
00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000000b0 00 00 00 00 00 00 00 00 50 65 6e 20 44 72 69 76 |........Pen Driv|
000000c0 65 20 57 69 74 68 6f 75 74 20 4f 70 65 72 61 74 |e Without Operat|
000000d0 69 6e 67 20 53 79 73 74 65 6d 2e 52 65 6d 6f 76 |ing System.Remov|
000000e0 65 20 50 65 6e 20 44 72 69 76 65 20 41 6e 64 20 |e Pen Drive And |
000000f0 52 65 62 6f 6f 74 2e 20 00 00 00 00 00 00 00 00 |Reboot. ........|
00000100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000001b0 00 00 00 00 00 00 00 00 01 02 03 04 00 00 80 01 |................|
000001c0 01 00 83 fe ff ff 3f 00 00 00 d2 21 cb 01 00 fe |......?....!....|
000001d0 ff ff 05 fe ff ff 11 22 cb 01 58 92 15 00 00 00 |......."..X.....|
000001e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.|
00000200
(END) 1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.00125037 s, 409 kB/s
■おまけ
自分で作ったの、すっかり忘れていたけど、これやばいw。
GRUB用に想定しているコードなので、JUMPから先は気にしなくて大丈夫です。
hexdumpの結果も「Pen Drive」になってますし。
Debian簡易MBRチェック
http://d.hatena.ne.jp/labunix/20120205
$ sudo ./myscripts/mbrchk.sh
INFO:root check ok.
INFO:/dev/sda 0xaa55
INFO:/dev/sda1 0x80
INFO:JUMP 0x48eb
INFO:GRUB 0x0203
INFO:load 0x2000
INFO:Secter 0x00000000
INFO:Segment 0x0202
INFO:/dev/sdb 0xaa55
INFO:/dev/sdb1 0x80
ERROR:/dev/sdb MBR first jump
ERROR:Other bootloader version 0x0000
INFO:load 0x0000
INFO:Secter 0x00000000
INFO:Segment 0x0000
■squeezeのビジネスカードイメージのダウンロード、インストーライメージの確認
50MBほどのイメージなので、ダウンロードも2分程度です。
$ wget http://cdimage.debian.org/debian-cd/6.0.5/amd64/iso-cd/debian-6.0.5-amd64-businesscard.iso
$ du debian-6.0.5-amd64-businesscard.iso
51256 debian-6.0.5-amd64-businesscard.iso
$ test -d ~/tempiso || mkdir ~/tempidp;sudo mount -o loop debian-6.0.5-amd64-businesscard.iso ~/tempiso
$ ls ~/tempiso/install.amd/ | sed s/"gtk\|install.bat"// | xargs echo -n;echo
initrd.gz vmlinuz
■USBメモリのパーティションの切りなおし。
$ sudo fdisk /dev/sdb
Command (m for help):n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4):1
First cylinder (1-1961, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1961, default 1961):+100M
Command (m for help):n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4):2
First cylinder (15-1961, default 15):
Using default value 15
Last cylinder, +cylinders or +size{K,M,G} (15-1961, default 1961):+60M
Command (m for help):n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4):3
First cylinder (24-1961, default 24):
Using default value 24
Last cylinder, +cylinders or +size{K,M,G} (24-1961, default 1961):
Using default value 1961
Command (m for help): a
Partition number (1-4): 1
Command (m for help): p
Disk /dev/sdb: 16.1 GB, 16131293184 bytes
255 heads, 63 sectors/track, 1961 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x04030201
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 14 112423+ 83 Linux
/dev/sdb2 15 23 72292+ 83 Linux
/dev/sdb3 24 1961 15566985 83 Linux
Command (m for help):w
■USBメモリのパーティションの確認
$ sudo fdisk /dev/sdb -l | tail -4
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 14 112423+ 83 Linux
/dev/sdb2 15 23 72292+ 83 Linux
/dev/sdb3 24 1961 15566985 83 Linux
■USBメモリのフォーマット
$ sudo mke2fs /dev/sdb1
$ sudo mke2fs /dev/sdb2
$ sudo mke2fs /dev/sdb3
■USBメモリに起動イメージをコピー
$ sudo mount /dev/sdb1 /media/sdb1
$ mount | grep sdb1
/dev/sdb1 on /media/sdb1 type ext2 (rw)
$ sudo mkdir -p /media/sdb1/boot
$ sudo cp -pi ~/tempiso/install.amd/[iv]*z /media/sdb1/boot/
$ ls /media/sdb1/boot/
initrd.gz vmlinuz
■既存のMBRのバックアップとgrubのインストール
$ sudo dd if=/dev/sda of=backup.mbr bs=512 count=1
$ sudo umount /dev/sdb1
$ sudo mount /dev/sdb1 /boot
$ sudo grub-install --root-directory=/media/sdb1 /dev/sdb
Installation finished. No error reported.
$ sudo dd if=/dev/sda of=after.mbr bs=512 count=1
$ diff -s backup.mbr after.mbr
ファイルbackup.mbrとafter.mbrは同一
■見慣れたgrubのMBRになりました。
パーティション情報が変わってます。ただし、Stage1までです。
よって、起動は元の/dev/sdaのMBRを使います。
$ dd if=/dev/sdb bs=512 count=1 | hexdump -C
00000000 eb 63 90 8e d0 bc 00 7c 8b f4 50 07 50 1f fb fc |.c.....|..P.P...|
00000010 bf 00 06 b9 00 01 f2 a5 ea 1d 06 00 00 be b8 06 |................|
00000020 ac 3c 00 74 0e 56 bb 07 00 b4 0e cd 10 5e ea 20 |.<.t.V.......^. |
00000030 06 00 00 cd 18 00 00 00 00 00 00 00 00 00 00 00 |................|
00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000050 00 00 00 00 00 00 00 00 00 00 00 80 01 00 00 00 |................|
00000060 00 00 00 00 ff fa eb 07 f6 c2 80 75 02 b2 80 ea |...........u....|
00000070 74 7c 00 00 31 c0 8e d8 8e d0 bc 00 20 fb a0 64 |t|..1....... ..d|
00000080 7c 3c ff 74 02 88 c2 52 be 80 7d e8 1c 01 be 05 ||<.t...R..}.....|
00000090 7c f6 c2 80 74 48 b4 41 bb aa 55 cd 13 5a 52 72 ||...tH.A..U..ZRr|
000000a0 3d 81 fb 55 aa 75 37 83 e1 01 74 32 31 c0 89 44 |=..U.u7...t21..D|
000000b0 04 40 88 44 ff 89 44 02 c7 04 10 00 66 8b 1e 5c |.@.D..D.....f..\|
000000c0 7c 66 89 5c 08 66 8b 1e 60 7c 66 89 5c 0c c7 44 ||f.\.f..`|f.\..D|
000000d0 06 00 70 b4 42 cd 13 72 05 bb 00 70 eb 76 b4 08 |..p.B..r...p.v..|
000000e0 cd 13 73 0d f6 c2 80 0f 84 d8 00 be 8b 7d e9 82 |..s..........}..|
000000f0 00 66 0f b6 c6 88 64 ff 40 66 89 44 04 0f b6 d1 |.f....d.@f.D....|
00000100 c1 e2 02 88 e8 88 f4 40 89 44 08 0f b6 c2 c0 e8 |.......@.D......|
00000110 02 66 89 04 66 a1 60 7c 66 09 c0 75 4e 66 a1 5c |.f..f.`|f..uNf.\|
00000120 7c 66 31 d2 66 f7 34 88 d1 31 d2 66 f7 74 04 3b ||f1.f.4..1.f.t.;|
00000130 44 08 7d 37 fe c1 88 c5 30 c0 c1 e8 02 08 c1 88 |D.}7....0.......|
00000140 d0 5a 88 c6 bb 00 70 8e c3 31 db b8 01 02 cd 13 |.Z....p..1......|
00000150 72 1e 8c c3 60 1e b9 00 01 8e db 31 f6 bf 00 80 |r...`......1....|
00000160 8e c6 fc f3 a5 1f 61 ff 26 5a 7c be 86 7d eb 03 |......a.&Z|..}..|
00000170 be 95 7d e8 34 00 be 9a 7d e8 2e 00 cd 18 eb fe |..}.4...}.......|
00000180 47 52 55 42 20 00 47 65 6f 6d 00 48 61 72 64 20 |GRUB .Geom.Hard |
00000190 44 69 73 6b 00 52 65 61 64 00 20 45 72 72 6f 72 |Disk.Read. Error|
000001a0 0d 0a 00 bb 01 00 b4 0e cd 10 ac 3c 00 75 f4 c3 |...........<.u..|
000001b0 00 00 00 00 00 00 00 00 01 02 03 04 00 00 80 01 |................|
000001c0 01 00 83 fe 3f 0d 3f 00 00 00 4f 6e 03 00 00 00 |....?.?...On....|
000001d0 01 0e 83 fe 3f 16 8e 6e 03 00 c9 34 02 00 00 00 |....?..n...4....|
000001e0 01 17 83 fe ff ff 57 a3 05 00 12 11 db 01 00 00 |......W.........|
000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.|
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.00673785 s, 76.0 kB/s
00000200
■最近のdevicemapはidで識別しますので、安心です。
これだけのためにgrub-installしたのです。。。
$ cat /media/sdb1/boot/grub/device.map | sed s/"[2-9]\|[A-Z]"/"X"/g
(hd0) /dev/disk/by-id/ata-Xitachi_XXXXX1010XXXXX0_XXXX0XXX0XXXXX
(hd1) /dev/disk/by-id/usb-XXXXisk_XunXisk_X00X0X110000000000000001-0:0
■ISOイメージをコピー。
$ sudo dd if=debian-6.0.5-amd64-businesscard.iso of=/dev/sdb2 bs=512
102400+0 records in
102400+0 records out
52428800 bytes (52 MB) copied, 8.01307 s, 6.5 MB/s
■再起動して、grubメニューで「e」コマンドで編集、「b」コマンドで起動。
root (hd1,0)
kernel /boot/vmlinuz root=/dev/sdb1 ro quiet
initrd /boot/initrd.gz
■これで普通のインストーラが起動できます。
grubのインストールも中途半端なので、普通はやらないですよね。。。