- 2021.4.1 移転しました...
-
- このページの旧URLは
http://www10.plala.or.jp/palm84/kexec_loader.html
- このページの旧URLは
2010.5.30 作成
う〜ん、ベストな方法はどんなもんかと試行錯誤中...まだまだ勉強が足りないかも (´・ω・`) 。
CD(iso) 作成についても書いとりますが、主たる目的はCDブートできない旧世代PCでの Linux LiveCD のブートなのです。
※ USB CDドライブには対応していません。
これってナニ?
- 参考リンク
kexec-loader は“Linux based bootloader”、つまりLinux上で動くブートローダー。それをFD1枚に入る小さなLinuxに組み込んだのが、kexec-loader-floppy でありんす。
このFDはブートローダーとしてはGRUB起動ディスクなどに比べ機能は低いです。しかしながら、これはLinux上で動くということで、Linux上で認識したUSBデバイス(※ USBフラッシュメモリ, USB HD)のカーネルをロードできるという、他のブートローダーにない利点があるのであります。
つまり、BIOSがUSB(フラッシュメモリ、HD)ブート非対応であっても、このFDでブートすれば、USB(フラッシュメモリ、HD)からカーネルなどのロードが可能になるということですな。
PLoP Boot Manager が使えるならその方が楽なのですが、使えないこともあるので、そんな場合はこちらを試してみませう。
※ USB CDドライブは認識しません。
設定ファイルを書くのが少し手間ですが、PLoP Boot Manager を追加した起動ディスク(イメージ)を作っておけば、古めのPCのメンテ用として、結構重宝するんでないかなと思いますー。
- 特徴
-
- 認識可能なデバイスは、FD + USBデバイスのFATフォーマットのみ(内蔵HD用モジュールなど追加可能ですけど)
- カーネル・ロード専用
- GRUBなどの様にPBRのチェインロード機能はなし
- 起動させるLinuxの設定(kernel, initrd, オプション)は、自分で書いておくか、コマンドラインから入力する必要がある
- grub.exe (GRUB for DOS) のチェインロードはできるが、GRUB上でUSBデバイスは認識しない
- SYSLINUX, GRUB “から”ロード可能
モジュールを追加すれば、ext3, ext4 なども認識可能になる様ですが、私の環境ではうまくいかないので、未確認です。すみません。
FD作成
- kexec-loader - Downloads
- kexec-loader-x.x.x-floppy.img.gz をダウンロードして展開
- floppy.img を RawWrite for Windows などでFDへ書き込み
- 備考
-
- ボリューム ラベルは
KEXECLOADER
- 内蔵FDブートでは、
kxloader.cfg
などのロードはUSB(HD/フラッシュメモリ)よりも優先となる - USB-FDブートでは
sda
で認識した場合は優先
- ボリューム ラベルは
CD(isoイメージ)作成
※ CDブート可能ならUSBメモリを使う必要はないような気がしないでもないですが、そこはそれ...
Linux上にて
- ダウンロードして展開する
-
- kexec-loader-x.x.x-cdrom.tar.gz
- シェル・スクリプト 実行
-
展開したディレクトリに移動し、スクリプト実行
$ ./mkiso.sh kexec-loader.iso
- 備考
-
- ボリューム・ラベルは
kexecloader
- modules を追加しない場合は、kexec-loader 起動後にCDは認識しないのでCD内の設定ファイルはロードされない
- iso-modulesディレクトリに追加モジュールがあれば、initrd(initramfs) に統合される
- kexec-loader 起動時にCDが認識可能な場合、CD内の設定ファイルが優先的にロードされる
- ボリューム・ラベルは
Windows上でISOLINUX CD
Windows版 mkisofs.exe でisoを作成してみました。
- ダウンロードして展開する
-
- kexec-loader-x.x.x-cdrom.tar.gz
- CDRtools バイナリ
- ファイルの配置
-
kexec-loader - iso-files ディレクトリ | linux.cfg | kexec-loader.conf | cygwin1.dll --- CDRtools バイナリ | mkisofs.exe --- CDRtools バイナリ | \---isolinux initrd.img isolinux.bin isolinux.cfg vmlinuz
- mkisofs 実行
-
mkisofs -v -R -J -o ../kexec_win_isolinux.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -V "kexecloader" -no-emul-boot -boot-load-size 4 -boot-info-table .
- 備考
-
- ボリューム・ラベルは
kexecloader
- modules を追加しない場合は、kexec-loader 起動後にCDは認識しないのでCD内の設定ファイルはロードされない
- CD内に modules を追加するは、initrd(initramfs) に統合する必要がある模様?
- USB側(LABEL = KEXECLOADER) にmodulesを置けば、IDE-CDなど kexec-loader 起動後のファイルの参照は可能
- ボリューム・ラベルは
Windows上でISOLINUX + memdisk
FDイメージをSYSLINUXのmemdiskを使いブートさせます。Windows版 mkisofs.exe でisoを作成してみました。
- ダウンロードして展開する
-
- kexec-loader FDイメージ -
kexec-loader-x.x.x-floppy.img.gz
- CDRtools バイナリ -
cdrtools-binary.zip
- SYSLINUX -
syslinux-x.xx.zip
- kexec-loader FDイメージ -
- ファイルの配置
-
isolinux.cfg
作成
DEFAULT memdisk APPEND initrd=floppy.img
適当な作業ディレクトリ: cygwin1.dll --- CDRtools バイナリ floppy.img --- kexec-loader FDイメージ isolinux.cfg --- 作成 isolinux.bin --- SYSLINUXの core\isolinux.bin memdisk --- SYSLINUXの memdisk\memdisk mkisofs.exe --- CDRtools バイナリ
- mkisofs 実行
-
mkisofs -v -R -J -o ../kexec_win_isolinux_memdisk.iso -b isolinux.bin -c boot.cat -V "kexecloader" -no-emul-boot -boot-load-size 4 -boot-info-table .
- 備考
-
- CD,FDイメージともボリューム・ラベルは
kexecloader
- kexec-loader 起動後、FDイメージは見えない、CD認識しない
- USB側(LABEL = KEXECLOADER) にmodulesを置けば、IDE-CDなど kexec-loader 起動後のファイルの参照は可能
- CD,FDイメージともボリューム・ラベルは
基本的な使い方
- USB(HD/フラッシュメモリ)のフォーマットについて
-
デフォルト状態のイメージで認識するのは、USB上のFATフォーマット (FAT16/FAT32) のみみたいです。他のフォーマットについてはモジュールの追加が可能ですが、確認できてません...すみません。
FDブートするとコマンド入力画面で止まります。(※ kexec-loader.conf
or kxloader.cfg
に起動設定がないため)
※ keymap.txt がない場合、キーボードはUS配列となってるので注意。
help
で使用可能コマンド表示
disks
コマンドで認識されたデバイス(ファイル)名、ボリューム ラベル (LABEL) など表示
root
でパーティションを指定。
kernel
, initrd
、(※ 必要なら)cmdline
でカーネル・コマンドライン・パラメータ(カーネル・オプション)を指定します。
この後、boot
コマンドで指定されたLinuxがブートします。
ボリューム ラベル (LABEL) について
- ボリューム ラベル (LABEL) の確認
-
【マイコンピュータ】からドライブのアイコンを右クリックでプロパティ画面を開く
- XP - FDドライブ
7 ではFDドライブのLABELが表示されない様です。この場合は【コマンド プロンプト】から vol コマンド
C:\Users\yassy>vol a: ドライブ A のボリューム ラベルは KEXECLOADER です ボリューム シリアル番号は 5CCE-35B2 です
- 7 - USBメモリ
- ボリューム ラベル (LABEL) の変更
-
XP、及び7上のUSBメモリは上記画面より。
7上のFDドライブでは【コマンド プロンプト】から label コマンド
C:\Users\yassy>label a: ドライブ A: のボリュームは KEXECLOADER です ボリューム シリアル番号は 5CCE-35B2 です ボリューム ラベルを入力してください。 (半角で 11 文字、全角で 5 文字以内) 必要なければ、Enter キーを押してください: KEXECLOADE C:\Users\yassy>vol a: ドライブ A のボリューム ラベルは KEXECLOADE です ボリューム シリアル番号は 5CCE-35B2 です
- ddコマンドでFDイメージを操作
-
- Windows版dd
- LABEL確認
D:\CommandLine\dd>dd if=floppy.img of=test.bin bs=1 skip=9728 count=11 rawwrite dd for windows version 0.5. Written by John Newbigin <jn@it.swin.edu.au> This program is covered by the GPL. See copying.txt for details 11+0 records in 11+0 records out D:\CommandLine\dd>more test.bin KEXECLOADER
D:\CommandLine\dd>dd if=floppy.img bs=1 skip=9728 count=11 | more rawwrite dd for windows version 0.5. Written by John Newbigin <jn@it.swin.edu.au> This program is covered by the GPL. See copying.txt for details 11+0 records in 11+0 records out KEXECLOADER
- LABEL変更(※ 1文字消し)
D:\CommandLine\dd>dd if=/dev/zero of=floppy.img bs=1 seek=9738 count=1 rawwrite dd for windows version 0.5. Written by John Newbigin <jn@it.swin.edu.au> This program is covered by the GPL. See copying.txt for details 1+0 records in 1+0 records out D:\CommandLine\dd>dd if=floppy.img of=test2.bin bs=1 skip=9728 count=11 rawwrite dd for windows version 0.5. Written by John Newbigin <jn@it.swin.edu.au> This program is covered by the GPL. See copying.txt for details 11+0 records in 11+0 records out D:\CommandLine\dd>more test2.bin KEXECLOADE
D:\CommandLine\dd>dd if=floppy.img bs=1 skip=9728 count=11 | more rawwrite dd for windows version 0.5. Written by John Newbigin <jn@it.swin.edu.au> This program is covered by the GPL. See copying.txt for details 11+0 records in 11+0 records out KEXECLOADE
設定ファイル - kxloader.cfg - について
選択メニューを表示する設定ファイルは kxloader.cfg
(kexec-loader.conf
) であります。
floppy.img には kexec-loader.conf
がありますが、起動エントリは書かれていません。
※ kexec-loader.conf
が優先みたいですが、kxloader.cfg
にリネームして使用した方がいいと思います。
デフォルトではキーボード配列がUS仕様なので JP106 仕様にするには下記からダウンロード、keymap.txt
にリネームして使用します。
- Index of /kexec-loader/keymaps/qwerty (
jp106.txt
)
kxloader.cfg
の置き場所-
- 設定ファイル -
kxloader.cfg
(kexec-loader.conf
) - は ボリューム ラベル = KEXECLOADER のデバイス(パーティション)から読み込まれる keymap.txt
も同上modules
ディレクトリも同上- floppy.img のデフォルトの ボリューム ラベルは KEXECLOADER
同じ LABEL(= KEXECLOADER) が複数ある場合は
fd0
が優先の様です。※ USB-FDブートの際はUSB-FDが
sdb
、USBメモリがsda
となりsdax
が優先されることがあるので注意。 - 設定ファイル -
- 起動エントリの書き方
-
title CDlinux 0.9.3 Standard (vga=0x318) root LABEL=KEXECLOADER kernel /CDlinux/bzImage cmdline CDL_LANG=ja_JP.UTF-8 root=/dev/ram0 vga=0x318 initrd /CDlinux/initrd
- root(パーティション)の指定
-
root(パーティション)の指定は3通り
sda1
などのデバイス(ファイル)名
root sda1
- ボリューム ラベル (LABEL) 名
root LABEL=KEXECLOADER
- uuid
- uuid を調べるには、Windows -
vol X:
、Linux -blkid
- uuid を調べるには、Windows -
root UUID=xxxx-xxxx
- 注意点
- USB FDブートの場合は、USB FDが
sda
, USBメモリがsdb
となることがある - kexec-loader から grub.exe のチェインロードはできるが、GRUB上でUSBデバイスは認識しない
- grub.exe をチェインロードした場合、FD上のファイルは見えないことがある
- USB FDブートの場合は、USB FDが
というわけで...
- 内蔵FDのブートでは、USBメモリは
sdax
となるのでroot sda1
などと指定する - USB FDブートでは USB FD が
sda
となってしまうこと“も”あるため、USBメモリの ボリューム ラベル (LABEL) を BOOTUSB などとしてroot LABEL=BOOTUSB
などと指定する方が確実 - HDブートやネットワークブートなどでは kexec-loader 起動後はFDは見えない(FDの ボリューム ラベルが無効となる)ため、USBメモリの ボリューム ラベルを
KEXECLOADER
とし、USBメモリ側にkxloader.cfg
,keymap.txt
を置いておく、root LABEL=KEXECLOADER
を指定するのが確実
下記はあくまでワタシのやりかたですが、ネットワークブートなどでもFDイメージがそのままつかえるようにしてみました。ちょっとややこしいような気もしますが...
- 【私的】おすすめ設定
-
- FD(イメージ)の ボリューム ラベル (LABEL) を
KEXECLOADE
に変更する - USBメモリの ボリューム ラベルを
KEXECLOADER
に変更する kxloader.cfg
,keymap.txt
をUSBメモリ側に保存するkxloader.cfg
ではroot LABEL=KEXECLOADER
を指定する
- FD(イメージ)の ボリューム ラベル (LABEL) を
カスタマイズ
あくまで【私的】ですが...
USBメモリ側へ kxloader.cfg をコピー
HDブートやネットワークブートでもFDイメージがそのまま使えるようにしてみます。
- FDの ボリューム ラベル (LABEL) を
KEXECLOADE
(※ 1文字消し)に変更する - USBメモリの ボリューム ラベル を
KEXECLOADER
にする - USBメモリに
kxloader.cfg
,keymap.txt
をコピーする
keymap.txt
- Index of /kexec-loader/keymaps/qwerty
jp106.txt
をkeymap.txt
にリネーム
- 【私的】
kxloader.cfg
【私的】kxloader.cfg
には下記のデフォルト設定を書いてあります。
- KNOPPIX 5.3.1CD
- CDlinux 0.9.3 Standard
- Puppy Linux
- SystemRescueCd
- SLAX 6 (ja)
- Berry Linux 0.90
- Parted Magic 4.10
- Kaspersky Rescue Disk 10
- ddコマンドでFDイメージの ボリューム ラベル (LABEL) を変更
-
dd if=/dev/zero of=floppy.img bs=1 seek=9738 count=1
※ 1文字消して
KEXECLOADE
にしてるだけですが...
FDのリメイク
PLoP Boot Manager, SYSLINUX メニュー、GRUB(for DOS) などを追加します。
※ GRUB for DOS に関しては、halt(poweroff), reboot, chainloader コマンドを使用することを目的として追加しています。FD内のファイルが読めず menu.lst が表示されないことがあり、GRUB起動ディスクとして使用するにはちょっと不安ありです。また、GRUB上ではUSBデバイスは認識しません。
上記作業3点の実行後に、FDへファイルを追加します。
- ダウンロード
-
- SYSLINUX (
syslinux-x.xx.zip
) - PLoP Boot Manager (
plpbt-x.x.x.zip
) - GRUB for DOS (
grub4dos-0.4.4.zip
) - 【私的】jp106.kbd
- 【私的】menu.lst
- 【私的】syslinux.cfg
【注意】SYSLINUX上では、アンダースコア【_】はShift-0となってます。
- SYSLINUX (
- ファイルの配置
-
- ファイル一覧
A:. | grub.exe --- GRUB for DOS | initrd.img | linux.cfg | menu.lst | README.html | vmlinuz | +---syslinux | jp106.kbd | ldlinux.sys | menu.c32 --- SYSLINUXの com32\menu\menu.c32 | plpbt.bin --- PLoP Boot Manager | poweroff.com --- SYSLINUXの modules\poweroff.com | reboot.c32 --- SYSLINUXの com32\modules\reboot.c32 | syslinux.cfg | \---modules
- SYSLINUX の再インストール
-
menu.c32 が使えなかったので...
展開したSYSLINUXのwin32ディレクトリに移動して下記コマンドを(「管理者として」)実行
syslinux.exe -d syslinux a:
CD (iso) のリメイク
FDブート比べるとなんかややこしいです。CD内には追加ファイルは一切置かずに、USB側のボリューム ラベルを KEXECLOADER
にして、USB側に kxloader.cfg
, keymap.txt
, modules
ディレクトリなど置くのがわかりやすいかな?
【その1】
- ダウンロード
-
- CDRtools バイナリ
- SYSLINUX (
syslinux-x.xx.zip
) - PLoP Boot Manager (
plpbt-x.x.x.zip
) - GRUB for DOS (
grub4dos-0.4.4.zip
) - 【私的】isolinux.cfg
- 【私的】jp106.kbd
- 【私的】menu.lst
【注意】SYSLINUX上では、アンダースコア【_】はShift-0となってます。
- ファイルの配置
-
kexec-loader - iso-files ディレクトリ | cygwin1.dll --- CDRtools バイナリ | grub.exe --- GRUB for DOS | linux.cfg | menu.lst | mkisofs.exe --- CDRtools バイナリ | \---isolinux initrd.img isolinux.bin isolinux.cfg jp106.kbd menu.c32 --- SYSLINUXの com32\menu\menu.c32 plpbt.bin --- PLoP Boot Manager poweroff.com --- SYSLINUXの modules\poweroff.com reboot.c32 --- SYSLINUXの com32\modules\reboot.c32 vmlinuz
- mkisofs 実行
-
mkisofs -v -R -J -o ../kexec_win_isolinux_remake.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -V "kexecloade" -no-emul-boot -boot-load-size 4 -boot-info-table .
【注意】ボリューム ラベルは
kexecload
を指定。USB側の modules ディレクトリにide.tlz
,isofs.tlz
を置けば kexec-loader 起動後にGRUBの reboot コマンドなどが使えました(IDE-CDドライブの場合ですが)。
【その2】リメイクしたFDイメージをそのまま使う
前述の方法と同じで。
スクリーン・ショット
- SYSLINUX メニュー
- kexec-loader メニュー
- dキーでディスク一覧表示
- cキーでコマンドライン
- メニューに戻るには
exit
- PLoP Boot Manager メニュー
- GRUB for DOS メニュー
※ 環境によっては、FD内のファイルが見えず、メニューが出ない場合あります(※ コマンド画面となる)。メニューが出なくても halt や reboot コマンド、chainloader コマンド(※ HDのチェインロード)は使えるはずです...
【注意】このGRUB上ではUSBデバイスは見えません。
FD/CD以外でブート
通常のLinuxと同様に普通に kernel, initrd をロードしてもいいのですが、下記はFDイメージをそのまま使う方法。
※ 【注意】kexec-loader 起動後はFDは見えなくなります。kexec-loader 起動後はFD内のファイルはロードできません。
- USBメモリの ボリューム ラベル を
KEXECLOADER
にする - USBメモリに
kxloader.cfg
,keymap.txt
をコピーする
- HDブート
-
GRUB for DOS が楽かな?
menu.lst
title kexec-loader-floppy find --set-root /floppy.img map --mem /floppy.img (fd0) map --hook chainloader (fd0)+1 rootnoverify (fd0)
isoイメージの場合は...
title kexec-loader.iso find --set-root /kexec-loader.iso map --mem /kexec-loader.iso (0xff) map --hook chainloader (0xff) rootnoverify (0xff)
- ネットワークブート
-
PXELINUX + memdisk
pxelinux.cfg/default
(※ など)
LABEL kxloader KERNEL /memdisk INITRD /floppy.img
isoイメージの場合は...
LABEL kxloader_iso KERNEL /memdisk APPEND iso INITRD /kexec-loader.iso
- kexec-loader 起動後に grub.exe の reboot コマンドなどを使うには
-
USBメモリ側に grub.exe を 置き、USBメモリ側の
kxloader.cfg
を修正しませう。title boot from HD root LABEL=KEXECLOADER kernel /grub.exe cmdline --config-file="chainloader (hd0)+1" title Reboot root LABEL=KEXECLOADER kernel /grub.exe cmdline --config-file="reboot" title Poweroff root LABEL=KEXECLOADER kernel /grub.exe cmdline --config-file="halt"
いろいろ
- モジュールの追加
-
※ 未確認ですが...
- ダウンロード
- kexec-loader - Downloads (modules-xxx.tar.gz)
FD内LABEL = KEXECLOADER の FD or USBメモリのmodules
ディレクトリに追加すると起動時にFD,USB以外のデバイスも認識可能になるようです。ide.tlz
- IDE(PATA) HDext3.tlz
- ext3 ファイルシステムext4.tlz
- ext4 ファイルシステムisofs.tlz
- iso(CD) ファイルシステム
※ USB HD上の ext4 パーティションについては、
ide.tlz
+ext4.tlz
で可能でした。※ USB CDドライブも認識できたらいいのになぁ...
- ダウンロード