FreeBSD QandA 1549
Q. 既存の FreeBSD 領域の前 (HDD の中に存在するスライスの順番でいう前) に
FreeBSD 領域を作ったら起動しなくなった。
A. FreeBSD 2.2 系のブートブロックは、HDD のスライステーブル (PC/AT 用語で
言う fdisk(8) パーティション) から、最初に見つけた FreeBSD 領域から
/kernel を読み込もうとするため、同一の HDD の既存の FreeBSD 領域の前に
新たな FreeBSD 領域を作成すると、間違えて新規に作った領域から /kernel
を読み込もうとして FreeBSD が起動できなくなります。
逆に言うと、後ろにスライスを作成する分には問題になりませんし、新しく作っ
た領域に / (ルート)パーティション (BSD パーティション) を移動すれば動
作します。または、3.1R 以降ならこの問題は修正されていますので、可能な
ら 3.4R 以降へのアップグレードをお薦めします。
どうしても新領域にルートパーティションを入れずに解決したい場合、ブート
ブロックに新しい領域を FreeBSD 以外のスライスと思い込ませておくことに
より、この領域をスキップして FreeBSD が既存領域から立ち上がるようにで
きます。一旦システムが起動してしまえば、マウントして使用する事には影響
しません。この発展形として [管理番号 797] があります。
<解決法の一例>
1) root 権限で /stand/sysinstall を起動します。
2) メニューから「設定」->「パーティション」(Configure -> Partition) を
選び、目的のディスクを選択して新規スライスを作成します。
開始位置 大きさ 終了位置 名称 タイプ 種別 副タイプ フラグ
0 63 62 - 6 unused 0
63 2459457 2459519 wd0s2 2 fat 6
2459520 1024128 3483647 wd0s3 3 freebsd 165 C <----
3483648 2661120 6144767 wd0s4 3 freebsd 165
6144768 201600 6346367 wd0s1 1 unknown 132
6346368 8064 6354431 - 6 unused 0
矢印のように領域を作成したら「Q」でこの画面を終了します。
3) 続いて「ディスクラベル」(Label) をメニューから選択します。ディスク
ラベルを書き込み、ファイルシステムを作ります。
「C」で新たな FreeBSD のパーティションを作成します。最初にパーティショ
ンのサイズを聞かれますが、デフォルトで使用可能な全ブロックサイズが指定
されますから、ディスク全体を一つのパーティションで使用する場合はこのま
まで良いでしょう。次にパーティションのタイプを聞かれますから、ファイル
システムを選択します。さらにそのパーティションをマウントする位置を聞か
れます。/mnt などのパスを指定します。このとき、指定したディレクトリが
なければ、自動的に作成されます。
ディスク: wd0 区画名: wd0s3 空き領域: 0 ブロック (0MB)
ディスク: wd0 区画名: wd0s4 空き領域: 0 ブロック (0MB)
区画 マウント位置 容量 Newfs 区画 マウント位置 容量 Newfs
---- ------------ ---- ----- ---- ------------ ---- -----
wd0s2 <none> 1200MB DOS
wd0s3e /mnt 500MB UFS Y <---------
wd0s4a <none> 32MB *
wd0s4b swap 199MB SWAP
wd0s4e <none> 30MB *
wd0s4f <none> 1037MB *
「W」で書き込むと disklabel(8), newfs(8), mount(8) まで行なわれますの
で、「Q」でこの画面を終了し、一旦 sysinstall を終了します。
4) df で調べると無事 newfs が済み、/dev/wd0s3e がマウントされています
ので、umount /mnt でディスクを切り離しておきます。
5) 再度 /stand/sysinstall を起動して、「設定」->「パーティション」
(Configure -> Partition) を選んで、スライス情報を書き変えます。
ディスク名: wd0 FDISK パーティションエディタ
ジオメトリ: 788 シリンダ/128 ヘッド/63 セクタ (計 6354432 セクタ)
開始位置 大きさ 終了位置 名称 タイプ 種別 副タイプ フラグ
0 63 62 - 6 unused 0
63 2459457 2459519 wd0s2 2 fat 6
2459520 1024128 3483647 wd0s3 1 OpenBSD FFS 166 <------
3483648 2661120 6144767 wd0s4 3 freebsd 165 C
6144768 201600 6346367 wd0s1 1 unknown 132
6346368 8064 6354431 - 6 unused 0
上記のようにスライス種別 (Desc) を 'freebsd' 以外の ID (ここでは 166
を利用します) に変更して、「W」で書き込みます。この ID は 165 以外な
らなんでも良いですが、6 (FAT) や 132 (ハイバネーション用) など特定の
目的にリザーブされたものは避けてください。スライス種別を変更したら、
それ以外の値をいじらないようにして「Q」でこの画面を抜けて sysinstall
を終了します。
6) 起動時に自動的にマウントさせるには、以下の行を /etc/fstab に追加
します。
/dev/wd0s3e /mnt ufs rw 1 2
動作確認に使用した version: FreeBSD 2.2.6-RELEASE
間違い・追加情報を見付けた場合は、
修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで
お知らせください。