freebsdやlinuxにおいて、インストールする際には大抵 isoファイル を利用してセットアップを行います。この isoファイル を自分で作ってみよう!というわけで、このFYIを書きました。
注意:
ちなみに、本文中の問題である「DL320 G3」の解決には至っていません。
現在もハングアップしてしまいます。
ただ、作成したisoファイルについては、bootしてインストール画面がでる事を確認しています。
「別にネットからダウンロードしてCD作ればいいじゃん」
という話ですが、実はこの裏話にはちょっとしたtipsが含まれます。今回、セットアップを試みたマシンは HP DL320 G3 の Serial ATAモデルです。これに利用されているS-ATAコントローラーは、Intel E7211 – i82801FR(ICH6R) というものになります。
現状、これが対応しているOSはOpenBSDや一部のlinuxのみとなっています。私がインストールするOSは、freebsd 4.11で現状ICH6Rには対応していません。この状態でインストールを行うには2つの方法があります。
・ BIOSでS-ATAを切り、LegacyModeにして普通のATAとして利用する
・ ata-pci.c と ata-dma.c にパッチを当てたkernelでインストールする
HP DL320 G3 については、前者に対応しておらず普通のATAとして動作させる事はできませんでした。なので、今回は後者を使う事にします。そのためには、パッチを当てたkernelでブートするCDが必要になります。
ここで最初の話に戻るわけです。
まずCDを作成するためには、普通にインストールされた freebsd が必要になります。今回は、4.11-RELEASE で作成しています。(勿論ネットに接続できる前提です)
まずは、cvsup が必要となるので、pkg_add から取得してください。
# pkg_add cvsup-without-gui
これで、/usr/local/bin/cvsup にインストールされます。次にcvsupをする際に必要なstable-supfileを作成します。サンプルを別フォルダにコピーして、そこで編集をするようにしました。
# mkdir /usr/local/etc/cvsup
# cp /usr/share/examples/cvsup/stable-supfile /usr/local/etc/cvsup/
# vi /usr/local/etc/cvsup/stable-supfile
stable-supfile の中で変更するのは2箇所です。*default host と *default release です。私は以下のように変更しました。
*default host=cvsup3.jp.FreeBSD.org
*default release=cvs tag=RELENG_4_11
4_11 は RELEASE名です。ホスト名のcvsupサーバは、1~6まであるのですきなものを選んでください。私はネットワーク的に一番近い場所を指定しました。まずは、これでcvsupします。
# /usr/local/bin/cvsup -g -L 2 -s /usr/local/etc/cvsup/stable-supfile
次に、isoファイル作成のために欠かせない、CVSROOTの取得をします。CVSROOTについては細かく書きませんが、所謂ログファイルです。先程のstable-supfileを利用して、取得に必要なコンフィグファイルを作ります。今回は大量に容量を食ってしまうので、別フォルダに保存します。私は /home/cvs にしました。
# mkdir /home/cvs
# cp /usr/local/etc/cvsup/stable-supfile /usr/local/etc/cvsup/cvs-supfile
# vi /usr/local/etc/cvsup/cvs-supfile
cvs-supfile は *default release と *default prefix の修正 、後は src-all 以下に項目を追加する必要があります。
*default prefix=/home/cvs
*default release=cvssrc-all
cvsroot-all
ports-all
doc-all
こんな感じです。後は先程と同じ様にcvsupをしてCVSROOTの取得を行います。非常に時間がかかります。
# /usr/local/bin/cvsup -g /usr/local/etc/cvsup/cvs-supfile
後は、kernelをビルドして、release用のmakeをするだけで良いのですが、その前にドライバにパッチを当てる必要があります。これが今回の目玉でもあるので・・・。パッチファイルは以下の通り。
*** sys/dev/ata/ata-pci.c.orig Fri Sep 17 15:23:46 2004
— sys/dev/ata/ata-pci.c Fri Sep 17 15:37:13 2004
***************
*** 156,161 ****
— 156,164 —-
case 0x24db8086:
return “Intel ICH5 ATA100 controller”;+ case 0x26528086:
+ return “Intel ICH6 SATA150 controller”;
+
case 0x522910b9:
if (pci_get_revid(dev) >= 0xc4)
return “AcerLabs Aladdin ATA100 controller”;
***************
*** 634,639 ****
— 637,643 —-
break;case 0x24d18086: /* Intel ICH5 SATA150 */
+ case 0x26528086: /* Intel ICH6 SATA150 */
dmastat = ATA_INB(ch->r_bmio, ATA_BMSTAT_PORT);
if ((dmastat & (ATA_BMSTAT_ACTIVE | ATA_BMSTAT_INTERRUPT)) !=
ATA_BMSTAT_INTERRUPT)
*** sys/dev/ata/ata-dma.c.orig Wed Dec 31 13:05:16 2003
— sys/dev/ata/ata-dma.c Fri Sep 17 15:39:40 2004
***************
*** 218,223 ****
— 218,224 —-case 0x24db8086: /* Intel ICH5 */
case 0x24d18086: /* Intel ICH5 SATA */
+ case 0x26528086: /* Intel ICH6 SATA */
case 0x24ca8086: /* Intel ICH4 mobile */
case 0x24cb8086: /* Intel ICH4 */
case 0x248a8086: /* Intel ICH3 mobile */
もしかしたら、blogで保存する時に文字が変換されてしまう可能性もあるので、パッチファイルも置いておきます。
これを /usr/src 以下に置き、以下のコマンドを実行すればパッチが適応されます。
# patch < ich6.patch
次に kernel のコンパイルをします。普通に buildworld してもらえれば大丈夫です。
# cd /usr/src
# make clean
# make buildworld
これには結構時間がかかりますので、しばし待ちます。完了したら、isoファイルの作成に入ります。/home/release にイメージを作ります。以下のコマンドを入力してください。
# mkdir /home/release
# cd /usr/src/release
# make release CHROOTDIR=/home/release BUILDNAME=4.11-RELEASE-p1-kmy. CVSROOT=/home/cvs RELEASETAG=RELENG_4_11 MAKE_ISOS=YES
BUILDNAME は uname -a コマンドの時に表示されますので、任意で大丈夫です。この時に足りないモジュールはネットからダウンロードしてきますので、ネットへの接続はしたままでお願いします。
しばらく待てば、/home/release/R/cdrom に isoファイルができていると思います。***-miniinst.iso をCDに焼いて完了です。
大きいにおいとかを利用しなかったよ。
かみらは、ネットで広い自分や自分や自分など行います
ネットで大きいにおいや、セットアップと大きいにおいとか作ってみよう
インストールとかを利用したかったの♪