NetBSD: GPTの練習

ブートディスクを作る練習

GPT関連のコマンドまとめるとこう。

gpt create wd1
gpt add -i 1 -b 80 -s Size -t ffs wd1
dkctl wd1 addwedge DiskName 80 Size ffs
newfs -O2 dk0
(mountして/からファイルをコピー)
gpt biosboot -i 1 wd1
installboot /dev/rdk0 /usr/mdec/bootxx_ffsv2
wd1: <QEMU HARDDISK>
wd1: drive supports 16-sector PIO transfers, LBA48 addressing
wd1: 2048 MB, 4161 cyl, 16 head, 63 sec, 512 bytes/sect x 4194304 sectors

というディスク。gptで / と /usr パーティションを作ったところに システムをコピーして gpt な / から起動できるようにしよう,おー。

さいしょは空っぽ

gpt show wd1
    start     size  index  contents
        0  4194304

新規にgpt

gpt create wd1
gpt show wd1
    start     size  index  contents
        0        1         PMBR
        1        1         Pri GPT header
        2       32         Pri GPT table
       34  4194237         
  4194271       32         Sec GPT table
  4194303        1         Sec GPT header

indexの1を/に,indexの2を/usrにしてみる。/を1GBで,残りを/usrで。 まず / のぶん。

gpt add -i 1 -b 80 -s $((1*1024**3/512)) -t ffs wd1
Partition added, use:
        dkctl wd1 addwedge <wedgename> 80 2097152 <type>
to create a wedge for it
dkctl wd1 addwedge foo 80  $((1*1024**3/512)) ffs
dk0 created successfully.
newfs -O2 dk0
/dev/rdk0: 1024.0MB (2097152 sectors) block size 16384, fragment size 2048
        using 6 cylinder groups of 170.67MB, 10923 blks, 21184 inodes.
super-block backups (for fsck_ffs -b #) at:
160, 349696, 699232, 1048768, 1398304, 1747840,

次/usrは残り全部なので -s は省略。

gpt add -i 2 -b $((80+1*1024**3/512)) -t ffs wd1
Partition added, use:
        dkctl wd1 addwedge <wedgename> 2097232 2097039 <type>
to create a wedge for it
dkctl wd1 addwedge bar $((80+1*1024**3/512)) 2097039 ffs
dk1 created successfully.
newfs -O2 dk1
/dev/rdk1: 1023.9MB (2097036 sectors) block size 16384, fragment size 2048
        using 6 cylinder groups of 170.67MB, 10923 blks, 21184 inodes.
super-block backups (for fsck_ffs -b #) at:
160, 349696, 699232, 1048768, 1398304, 1747840,

ディスクが揃った。確認。

gpt show wd1
    start     size  index  contents
        0        1         PMBR
        1        1         Pri GPT header
        2       32         Pri GPT table
       34       46
       80  2097152      1  GPT part - NetBSD FFSv1/FFSv2
  2097232  2097039      2  GPT part - NetBSD FFSv1/FFSv2
  4194271       32         Sec GPT table
  4194303        1         Sec GPT header
dkctl wd1 listwedges
/dev/rwd1d: 2 wedges:
dk0: ef11eeb6-9f69-11e3-9678-525400123456, 2097152 blocks at 80, type: ffs
dk1: ef11f2cc-9f69-11e3-9678-525400123456, 2097039 blocks at 2097232, type: ffs

mountしてファイルをコピー

cd /
mount -o async,noatime /dev/dk0 /mnt
mkdir /mnt/usr
mount -o async,noatime /dev/dk1 /mnt/usr
tar lcf - .|tar xpfC - /mnt

fstabを変更

vi /mnt/etc/fstab

→ / を /dev/dk0, /usr を /dev/dk1 に。

bootcode書き込み

gpt biosboot -i 1 wd1
installboot -v /dev/rdk0 /usr/mdec/bootxx_ffsv2

wd0を外してブート

qemu -hdb wd1.img

確認

df -htffs
Filesystem         Size       Used      Avail %Cap Mounted on
/dev/dk0           993M       158M       785M  16% /
/dev/dk1           993M       745M       198M  78% /usr

でも,gptはraidframeにするとブートできない問題が。