:USBメモリでインストールの手順
ただし、実際に試したわけではないので、やってみた方、正誤についてコメント頂けるとうれしいです。
なお、ブートシーケンスに関しては、別の機会に詳しく記述したいと思います。
USBメモリの準備
最初にUSBメモリにインストールするためのイメージを作るディスクを用意しておきます。
次にcfdiskなどでUSBメモリ上にディスクイメージのパーティション(ディスクラベル:/dev/sda1など)を用意します。パーティションはbootableにしておいてください。
このパーティションをext2でフォーマットします。
# /sbin/mkfs.ext2 /dev/sda1
USBメモリをマウントします。
# mount -t ext2 /dev/sda1 /mnt
grubをインストールします。
# grub-install --install-directory=/mnt/ /dev/da1
(かなり時間がかかるようです。)
grubのmenu.lstを編集
カーネルとinitrdをきちんと設定しましょう。
title Debian installer kernel 2.6
root (hd0,0)
kernel /linux26 ramdisk_size=10396 root=/dev/rd/0 init=/sbin/init devfs=mount,dall rw
initrd /initrd26.gz
boot
イメージの作成
hd-medhiaなどからboot.img.gzをダウンロードして、解凍しループバックでマウントします。
マウントポイントは/usbbootとしました(適当なものにしてください。)。
$ gunzip boot.img.gz
# mkdir /usbboot
# mount -o loop boot.img /usbboot
次にマウントした/usbbootから必要なファイルを抜き出し、USBメモリーにコピーします。
必要なファイルは
initrd.gz initrd.list initrd26.gz linux linux26
だと思います。
カーネルがこれではうまくない場合は、linux linux26を差し替えてください。
(差し替え用カーネルの作成方法は後述します。)
最後に事前にダウンロードしておいたnetinstのisoイメージをコピーします。
# cp sarge-i386-netinst.iso /mnt/
なお、念のためにmbrをインストールします。(grubが動くので、必要ないはずですが・・・)
# /sbin/install-mbr /dev/sda
USB デバイスをumountして、できあがりです。
# umount /mnt
eject で外せるようにします。
# eject /dev/sda
書き込み禁止のロックのスイッチがついていれば禁止にしておくといいでしょう。
参考情報:USBメモリーのファイル配置
.
|-- boot
| `-- grub
| |-- device.map
| |-- e2fs_stage1_5
| |-- fat_stage1_5
| |-- jfs_stage1_5
| |-- menu.lst
| |-- minix_stage1_5
| |-- reiserfs_stage1_5
| |-- stage1
| |-- stage2
| `-- xfs_stage1_5
|-- initrd.gz
|-- initrd.list
|-- initrd26.gz
|-- linux
|-- linux26
|-- lost+found
`-- sarge-i386-netinst.iso
3 directories, 16 files
USBメモリの容量:113M
今回は netinst を利用しましたが、インストール用のisoならなんでも使えると思います。
差し替え用のカーネルの作り方
現状のdebianのカーネルはlenny(次期stable)まで調べた範囲では、2.6.18がベースになっています。
しかし、2.6.18は、最新のハードウェアへの対応が相当手薄です。
実際の最新カーネルソースは現在(2007.10.12)で2.6.23です。こちらであれば、core2-duoほか、新しいサウスブリッジのICH9やrealtekの1000〜10000Mネットワークカード、新しいGPU等に対応しています。
したがって、新しいハードを使ったPCの場合は、debian-stableやtestingではカーネルがうまくない場合が多いことになります。
そこで、最新カーネルソースをコンパイルして最新カーネルにインストーラのブートカーネル及びインストールするカーネルを差し替える方法を以下に示したいと思います。
手順概要
対象ディストリビューションがdebianなのですから、カーネルインストール用のdebパッケージを作成すればいいことになります。
カーネルのdebパッケージ作成には、以下のものが必要です。
最新カーネルソース:当たり前ですね。
カーネル作成用パッケージ:kernel-package
これをコンパイルしてdebファイルをつくり、実際にインストーラー作成マシンにインストールするとカーネルとinitrdが作られますので、これをインストールメディアに書き込めばOKです。
さて、実際の使い方は次の通りです。
最新カーネルソース取得
真のカーネルの最新情報はhttp://www.kernel.org/にあるのですが、ここはそんなに速くないし、そもそも総本山からダウンロードは避けるべきです。
ringを探すのが一番でしょう。
今回は、こちらhttp://ring.nict.go.jp/archives/linux/kernel.org/kernel/v2.6/からダウンしました。
バージョンは上記の通り2.6.23で、linux-2.6.23.tar.bz2というファイル名ですね。
近頃のカーネルソースは非常に容量が大きいです。まぁ、対象となっているハードウェアが多くなっていて、機能も豊富なので仕方ありませんが、43MBって、すごい大きさですね。展開すると100MBを楽々越えます。
コンパイル環境を揃えるのも一苦労ですね。
ソースの解凍とconfig
どこかコンパイルしてもいいディレクトリに展開します。bz2イメージなので、以下のコマンドが簡単でしょう。(gnu-tarでないとjオプションはありませんので、ご注意ください。)
$ tar jxf linux-2.6.23.tar.bz2
展開している中身が見たい人はvオプションもつけてください。
次にconfig作業を行います。trillimicはnursesベースのmenuconfigが好きなので、これでやってます。
$ cd linux-2.6.23
$ make menuconfig
必要なデバイスをモジュールまたはカーネル組み込みで指定していきます。
ブートするときにinitrd以降でマウントするディスクのファイルシステムは、ブートカーネルにカーネル組み込みされていないとマウントできず、rootイメージに切り替わるところでpanicしますので、ご注意ください。(経験済み:2時間ぐらい悩みました。)