最終更新日:

KNOPPIX実験室


KNOPPIXの

ブートオプションの指定方法

1.CDブートでのブートオプションの指定

KNOPPIX 3.3をCDからブートすると、最初に以下のような画面になります。

この画面の下部の「boot: 」プロンプトに指定するものがブートオプションです。通常は何も指定せずに[Enter]を押していると思いますが、マシンによっては、「fb800x600」とか、「knoppix-txt screen=800x600」とかを指定しないと起動しない場合もあります。

ここで指定できるブートオプションの解説には、以下のものがあります。

 

名称 言語 説明
knoppix-cheatcodes.txt 英語 knoppixで追加されたブートオプションを説明したファイルです。
KNOPPIXのCDROMの以下の場所に保存されています。
/cdrom/KNOPPIX/knoppix-cheatcodes.txt
[F2}キーによるヘルプ 英語 上のプロンプト画面で[F2}キーを押すと表示されるものです。
knoppix-cheatcodes.txtの主要部分を要領よくまとめてあります。
kernel-parameters.txt 英語 KNOPPIXをはじめとする多くのLinuxでは、カーネルが標準でサポートするブートオプションを説明したドキュメントファイルが、以下の場所に保存されています。
/usr/src/linux/Documentation/kernel-parameters.txt
日本語 このファイルの日本語訳が以下のURLにあります。
http://www.linux.or.jp/JF/JFdocs/kernel-docs-2.4/kernel-parameters.txt.html

 

さらに、このKNOPPIX実験室にアップしたminiroot.gzでは、いくつかのブートオプションを追加または拡張しています。ここでは、これらの追加・拡張オプション(下表の状態欄に明記)を中心に、既存オプションのうち関係の深いオプションや重要なオプションも含めて、指定方法を説明します。

 

ブートオプション 提供元の
シェル手続き
状態 説明
linuxrc2 linuxrc 追加 linuxrcの処理が全て終了した後でlinuxrc2を実行するかどうかを指定するオプションです。現在、本実験室にアップしているminiroot.gzには、以下の処理を行うlinuxrc2が組み込まれています。
  • /etc/init.d/knoppix-autoconfigを入れ替えます。したがって、knoppix-autoconfigでサポートされる追加オプションは、このlinuxrc2オプションを指定しないと有効になりません。
  • /usr/sbinのmkdosswapfile、mkpersistenthome、saveconfigを入れ替えます。入れ替えることによって、どのような修正が行われるかは、実験1-1の説明を参照してください。
  • /linuxrc2.d/binにあるmkwritableなどのシェル手続きへのシンボリックリンクを/usr/sbinに追加します。
  • ブート処理のログ(linuxrc、linuxrc2、knoppix-autoconfigなどのログ)を/var/log/.rc.logに出力します。
cdrom=/dev/xxxx linuxrc 追加 cloopファイルのあるパーティションをxxxxのところに指定します。このパーティションを/cdromにマウントし、/cdrom/KNOPPIX/KNOPPIXをcloopデバイスとしてマウントします。
cloop=xxxx linuxrc 追加 cloopデバイスとしてマウントするファイルを/cdrom/KNOPPIX/KNOPPIXの代わりに、/cdrom/KNOPPIX/xxxxに変更します。xxxxには英小文字のファイル名を指定してください。英大文字を含んでいると、ファイルシステムによってはうまくいかないことがあります。
KNOPPIX-RWの場合、/cdrom/KNOPPIX/xxxx.tbzがあれば、これをシステム設定ファイルとして、/cdrom/KNOPPIX/KNOPPIX-RWの代わりに読み込みます。存在しないときは、KNOPPIX-RWがそのまま使われます。
knoppix-autoconfig 追加 保存されている設定を読み込むために呼び出すシェル手続きの名前をknoppix.shからxxxx.shに変更します。
mvetc linuxrc 追加 ルートファイルシステムにある/etcを/ramdiskに移動します。
具体的には、linuxrcで/ramdiskをマウントした直後に、以下の処理を実行します。
    cp -pr /etc /ramdisk/etc
    rm -rf /etc
    ln -s /ramdisk/etc /etc
toram linuxrc   CDROMの内容をメモリ上に読み込んでKNOPPIXを起動するブートオプションです。メモリ上に読み込んだ後は、CDROMはアンマウントされるので、起動直後は、CDもHDも一切マウントされていません。完全にメモリだけで動作する状態になっています。
反面、CDの内容を丸ごとメモリに読み込むことになるので、起動には少々時間がかかります。
KNOPPIX 3.3で追加されたオプションです。

より詳しくは、楽天広場の私のページの2003年10月11日の日記で説明しています。

fromhd linuxrc   CDROMの代わりにHDを使うことを指示します。これは、/cdromにマウントするデバイス・パーティションを探すときに、CDROMを探さないようにすることで実現しています。

このオプションはCDROMの内容をあらかじめHDにコピーしておき、これをCDROMの代わりに使うことで、ストレスなくKNOPPIXを使うことを目的としています。その意味で、cdrom=/dev/xxxxオプションと同じ目的ですが、cdromオプションでは、マウントするデバイス・パーティションを直接指定するのに対し、fromhdオプションでは、接続されているHDDパーティションの中からマウントするパーティションを探す点が異なります。

toramオプションと併用すると、HDからメモリ上に読み込んでKNOPPIXを起動することで、直接CDROMから読み込むよりも起動時間を短縮できます。さらに、dmaオプションも併用すると、HDからメモリ上に読み込む時にdmaオプションを効かせて非常に高速に読み込むことができるようになります。ただし、産総研製KNOPPIXでdmaオプションが効くようになるのは20040216-20040220版からです。 20030924-20031002版〜20031119-20040202版の産総研製KNOPPIXではdmaオプションは効きませんでした。KNOPPIX実験室で提供しているminiroot.gzでは、これらの版でもdmaオプションが聞くように対策していました。

fromhd=/dev/xxxx linuxrc   産総研製KNOPPIXでは20040216-20040220版からサポートされたオプションで、「cdrom=/dev/xxxx」と同じ機能を実現します。すなわち、cloopファイルのあるパーティションをxxxxのところに指定すると、そのパーティションを/cdromにマウントし、/cdrom/KNOPPIX/KNOPPIXをcloopデバイスとしてマウントします。

これ以前の産総研製KNOPPIX 3.3(20030924-20031002版〜20031119-20040202版)では、knoppix-cheatcodes.txtにはこの形式で指定できることになっていましたが、実際には、この形式で指定しても、「=/dev/xxxx」の部分は無視されていました。

tohd linuxrc   あらかじめCDROMの内容をHDにコピーするためのオプションです。HDにコピー後、CDROMはアンマウントされます。

なお、KNOPPIXのオリジナルのminiroot.gzを使用している場合、dmaオプションを指定しても、HDへのコピー時には、dmaはまだ無効のままです(これが有効になるのは、knoppix-autoconfig実行後です)。KNOPPIX実験室で提供しているminiroot.gzを使う場合は、dmaオプションの指定が有効になり、高速にコピーできます。

usbboot linuxrc 追加 USBデバイスからのブートをサポートするため、linuxrcの処理のかなり早い段階で、SCSIドライバと一緒にUSBドライバを組み込みます。このオプションを指定すると、nousbオプションを指定しても、USBドライバが組み込まれます。
usb2.0 linuxrc 追加 usbbootオプションを指定しているときのみ意味を持ち、linuxrcの処理のかなり早い段階で、SCSIドライバやUSBドライバ(USB 1.1)と一緒にUSB 2.0ドライバ(ehci-hcd.o)も組み込みます。
nousb knoppix-autoconfig   usbbootオプションを省略しているときのみ意味を持ち、USBドライバを組み込みません。
usbbootオプションを指定しているとき、nousbを指定すると、エラーメッセージ(すでにUSBドライバが組み込まれている旨のメッセージ)は表示されなくなりますが、USBマウスやホットプラグ機能が使えなくなるなどの問題が生じますので、お止めください。
usb2.0 knoppix-autoconfig 追加 linuxrc2オプションを指定し、かつ、usbbootオプションとnousbオプションを省略しているときのみ意味を持ち、USBドライバ(USB 1.1)と一緒にUSB 2.0ドライバも組み込みます。この処理は、ブート処理の終盤の拡張デバイスをスキャンする段階で実行されます。
nouhci knoppix-autoconfig 追加 linuxrc2オプションを指定し、かつ、usbbootオプションとnousbオプションを省略しているときのみ意味を持ち、USB1.1ポート用のUSB1.1ドライバ(usb-uhci.o)を組み込みません。
noohci knoppix-autoconfig 追加 linuxrc2オプションを指定し、かつ、usbbootオプションとnousbオプションを省略しているときのみ意味を持ち、USB2.0ポート用のUSB1.1ドライバ(usb-ohci.o)を組み込みません。
dma knoppix-autoconfig   IDEドライブにアクセスするとき、DMAモードを使用するかどうかを指定します。
DMAを使用しない(つまり、PIOモードを使用する)場合、アクセス速度は最大でも、16MB/秒ですが、DMAを使用すれば最大33〜100MB/秒に達します。しかも、転送処理中にCPUが開放されるため、その分、システムの負荷が軽減されます。この両者があいまって、ディスクアクセスの性能は見違えるほど改善されます。特に、FAT32ブートの場合、その効果は顕著です。

このため、KNOPPIX 3.1までは、DMAモードがデフォルトで、このDMAを抑止するためのオプション「nodma」がサポートされていました。しかし、KNOPPIX 3.2(20030324-20030404)以降、これが逆、すなわち、PIOモードがデフォルトになり、「nodma」オプションはなくなって、代わりにDMAモードを指定する「dma」オプションがサポートされるようになりました。

なぜ、DMA⇒PIOという時代の流れに逆行するような変更が行われたのでしょうか。それは、たぶん、当時(カーネル2.4.20とcloop 0.6xを使っていた頃)、DMAを使用するとシステムが不安定になることが多かったからだと思います。どんな不安定さがあったのかは、実験1-1の記事を読んでいただけると分かると思います。

この不安定さは、20030726-20030812版でカーネルが2.4.21に、cloopが1.0に、それぞれバージョンアップされてからは、ほとんどなくなりました。その後、20030924-20031002版でカーネルが2.4.22に、cloopは20031103-20031119版で2.00にバージョンアップされて、さらに安定d歩が向上していると期待できるので、もう、このdmaを無条件に指定してもよいのではないかと考えています。

nocddma knoppix-autoconfig 追加 dmaオプションを指定しているときのみ意味を持ち、DMAモードでアクセスするIDEドライブをHDのみに限定します。

実は、dmaオプションの意味が20030726-20030812版から変わっています。それ以前は、IDEのHDのみをDMAモードでアクセスするように指定するものでしたが、20030726-20030812版以降は、IDEのHDだけでなく、IDEのCDROMなど、他のIDEドライブもDMAモードでアクセスするように指定するものに代わりました。この結果、最近の新しいCDROMドライブを使用している場合は、CDブートでも、dmaオプションを指定することで性能が向上するようになりました。

反面、私が使用するマシンのうちの1台は、dmaオプションを指定すると、CDROMへの最初のアクセスでシステムがハングアップしてしまい、起動しないようになってしまいました。

そこで、以前と同じように、IDEのHDのみをDMAモードでアクセスするように指定するために、このオプションを追加しました。

home=scan
home=auto
home=find

(上のどれを指定しても同じ結果となります。)
knoppix-autoconfig 拡張 継続的ホームディレクトリのマウントを指示するブートオプションです。このオプションを指定すると、/etc/fstabに登録されたパーティションの中から継続的ホームディレクトリファイル「knoppix.img」を探し出して/home/knoppixにマウントします。

本実験室では継続的ホームディレクトリファイルを探すときに考慮するパスを拡張しています。(下表参照)  この拡張版のknoppix-autoconfigはブートオプションに「linuxrc2」を指定すると組み込まれます。

  オリジナル 本実験室の拡張版 拡張の意図
考慮する
マウント
ポイント
/mnt/xxxx /mnt/xxxx
/cdrom
/cdromにマウントされるFAT32パーティションに継続的ホームディレクトリを作ることが出来るようにするため。
考慮する
相対パス

(マウント
ポイント
からの
相対パス)
knoppix.img KNOPPIX/$LANGUAGE/knoppix.img
$LANGUAGE/knoppix.img
KNOPPIX/knoppix.img
knoppix.img
多国語対応。
ブートオプションに「lang=xx」を指定してシステムの言語を切り替えるとき、継続的ホームディレクトリも言語ごとに異なったものを用意する必要があるため。
home=system knoppix-autoconfig 追加 home=scanと似ていますが、継続的ホームディレクトリファイルを探すときに考慮するマウントポイントが「/cdrom」だけになり、「/mnt/xxxx」は考慮されない点が異なります。
home=/dev/xxxx
home=/mnt/xxxx
home=/dev/xxxx/knoppix.img
home=/mnt/xxxx/knoppix.img
knoppix-autoconfig   /mnt/xxxx/knoppix.imgを継続的ホームディレクトリファイルとして/home/knoppixにマウントします。(この指定には多国語対応の拡張はありません)
home=/dev/xxxx/〜.img
home=/mnt/xxxx/〜.img
knoppix-autoconfig   /mnt/xxxx/〜.imgを継続的ホームディレクトリファイルとして/home/knoppixにマウントします。「〜」の部分は任意でサブディレクトリが含まれていても構いません。
home=/dev/xxxx/〜.img.bz2
home=/mnt/xxxx/〜.img.bz2
knoppix-autoconfig 追加 /mnt/xxxx/〜.img.bz2を/tmp/knoppix.imgに展開し、これを継続的ホームディレクトリファイルとして/home/knoppixにマウントします。「〜」の部分は任意でサブディレクトリが含まれていても構いません。
home=/dev/xxxx/〜.img.gz
home=/mnt/xxxx/〜.img.gz
knoppix-autoconfig 追加 /mnt/xxxx/〜.img.bz2を/tmp/knoppix.imgに展開し、これを継続的ホームディレクトリファイルとして/home/knoppixにマウントします。「〜」の部分は任意でサブディレクトリが含まれていても構いません。
本実験室に2004/3/xx以降にアップしたminiroot.gzから追加されました。
home=/cdrom
home=/cdrom/knoppix.img
home=/cdrom/〜.img
home=/cdrom/〜.img.bz2
home=/cdrom/〜.img.gz
knoppix-autoconfig 追加 マウントポイントとして/mnt/xxxxの代わりに/cdromを使います。他は/mnt/xxxxを指定したときと同じ結果となります。
       
       
       
       

 

.CDブートでのデフォルトブートオプションの変更

KNOPPIXのCDROMには、KNOPPIXフォルダ内にmkfloppy.batというバッチ手続きがあります。KNOPPIXのブートフロッピーディスクを作成するもので、何らかの理由でCDからブートできないときでもフロッピーディスクからブートできるようにするために提供されています。

このmkfloppy.batを実行すると、CDからブートするときに使用しているブートFDイメージファイルの内容を、そのまま、フロッピーディスクに書き出します。このフロッピーディスクには以下のファイルが入っています。

ファイル名 目的
BOOT.MSG ブート画面に表示されるメッセージ。
F2 F2キーを押したときに表示されるブートオプションの説明メッセージ。
GERMAN.KBD キーボードレイアウト定義。ただし、ドイツ語キーボードのレイアウトになっています。
これを日本語キーボードの定義に変更する方法は柘植さんのサイトで紹介されています。 
ldlinux.sys SYSLINUXプログラム本体。LinuxのカーネルとRAMディスクイメージをメモリに読み込んで実行開始します。 
LOGO.16 ブート画面に表示されるロゴイメージファイル。
MINIROOT.GZ ルートファイルシステムとしてマウントされるRAMディスクのイメージをgzipで圧縮したファイル。
SYSLINUX.CFG デフォルトのブートオプションや各種のブートオプションセット名称(fb1024x768など)が定義されています。
VMLINUZ Linuxのカーネル(常駐部)をgzipで圧縮したファイルです。

この中のSYSLINUX.CFGファイルがCDブート時のブートオプションの省略時解釈を定義しているファイルです。通常のテキストファイルですので、このファイルを使い慣れたエディタで修正します。

ご注意 ただし、このテキストファイルは改行コードがLFのみになっています。このため、メモ帳では正しく読めません。 また、読むことはできても、書き込むと改行コードがCRLFに変わってしまうようなテキストエディタ(古い秀丸エディタなど)も使えません。 書き込むときは読み込んだときと同じ改行コード(LFのみ)で書いてくれるテキストエディタ(現在の秀丸エディタなど)をご利用ください。
SYSLINUX.CFGファイルの内容 説明

DEFAULT vmlinuz

APPEND ramdisk_size=100000 init=/etc/init lang=ja apm=power-off hda=scsi hdb=scsi hdc=scsi hdd=scsi hde=scsi hdf=scsi hdg=scsi hdh=scsi vga=791 initrd=miniroot.gz nomce quiet BOOT_IMAGE=knoppix

ブートオプションの省略時解釈を定義しています。ただし、あまり長いオプションを指定すると末尾の方が切り捨てられてしまいます。このような場合は、不要なブートオプションを削除して指定するようにします。
左の例では、ブートオプションの部分を黄色ピンク水色でマークしていますが、このうち、ピンクの部分は、現在意味を持たないと思われるオプション、水色の部分は通常の使い方では意味を持たないと思われるオプションを表します。
hdx=scsiはIDE CDROMをIDE-SCSIデバイスとして認識させるためのものです。存在しないデバイスやCDROMを接続しないデバイスに指定しても意味を持ちません。たとえば、hdaには通常Windowsのシステムディスクがつながっていますし、hde〜hdgは増設IDEボード(IDE RAIDなど)を使っているときだけ現れる増設デバイス名です。

TIMEOUT 300

30秒経過したらブートオプションの省略時解釈を使用して起動することを指定しています。数値は100ミリ秒単位で指定します。

PROMPT 1

DISPLAY boot.msg

F1 boot.msg

F2 f2

プロンプトメッセージとファンクションキーを定義しています。

LABEL knoppix

KERNEL vmlinuz

APPEND ramdisk_size=100000 init=/etc/init lang=ja apm=power-off hda=scsi hdb=scsi hdc=scsi hdd=scsi hde=scsi hdf=scsi hdg=scsi hdh=scsi vga=791 initrd=miniroot.gz nomce quiet BOOT_IMAGE=knoppix

ブートオプション「knoppix」と「knoppix-txt」を定義しています。

APPEND行で指定しているものが、実際にカーネルに引き渡されるパラメータです。

ブートオプションを指定するとき、「knoppix screen=1024x768」のように指定しますが、これは、APPEND行で指定したパラメータの右に「screen=1024x768」を追加したものをカーネルにパラメータとして引き渡すことを意味します。

起動時にどのようなパラメータがカーネルに引き渡されたかは、KNOPPIX起動後、以下のコマンドを実行することで確認できます。

cat /proc/cmdline

LABEL knoppix-txt

KERNEL vmlinuz

APPEND ramdisk_size=100000 init=/etc/init lang=ja apm=power-off hda=scsi hdb=scsi hdc=scsi hdd=scsi hde=scsi hdf=scsi hdg=scsi hdh=scsi vga=normal initrd=miniroot.gz nomce quiet BOOT_IMAGE=knoppix

(以下略)

 

 

3.GRUBでのブートオプションの指定

GRUBをインストールすると、通常は/boot/grubというディレクトリが作成され、その中にmenu.lstもしくはgrub.confというファイルがあります。このmenu.lstとgrub.confは同じもので、GRUBメニューの各エントリに対応するブートオプションを定義したファイルです。通常のテキストファイルですので、このファイルを使い慣れたエディタで修正します。

ご注意 ただし、このテキストファイルは改行コードがLFのみになっています。このため、メモ帳では正しく読めません。 また、読むことはできても、書き込むと改行コードがCRLFに変わってしまうようなテキストエディタ(古い秀丸エディタなど)も使えません。 書き込むときは読み込んだときと同じ改行コード(LFのみ)で書いてくれるテキストエディタ(現在の秀丸エディタなど)をご利用ください。
menu.lstファイルの内容 説明

default saved

どのエントリで定義したブートオプションを省略時解釈として使用するかを定義しています。「saved」は最後にブートしたときに使用したメニューエントリを省略時解釈として使用することを指定します。

timeout 6

6秒経過したらブートオプションの省略時解釈を使用して起動することを指定しています。数値は1秒単位で指定します。
# 日本語キーボードのために
setkey doublequote at
setkey ampersand caret
setkey quote ampersand
setkey parenleft asterisk
setkey parenright parenleft
setkey tilde parenright
setkey equal underscore
setkey plus colon
setkey colon quote
setkey asterisk doublequote
setkey bracketleft bracketright
setkey braceleft braceright
setkey bracketright backslash
setkey braceright bar
setkey backslash equal
setkey underscore plus
setkey backslash bracketleft
setkey bar braceleft
setkey F9 equal
setkey F10 bracketleft
setkey equal k73
setkey bracketleft k7d
日本語キーボードのためのキーマップを定義しています。この部分は柘植さんのサイトから頂いてきたものですが、もともとは、以下のURLで紹介されていたもののようです。
http://www.itmedia.co.jp/help/tips/linux/l0592.html
title Windows
root (hd0,0)
makeactive
chainloader +1
savedefault
Windowsを起動するための指定です。/dev/hda1がWindowsのドライブCになっている場合、先のように指定します。
title Knoppix 3.3 japanese (home=scan)
kernel (hd0,1)/boot/vmlinuz ro lang=ja cdrom=/dev/hda2 init=/etc/init hdb=scsi hdc=scsi hdd=scsi noapic nofirewire linuxrc2 mvetc usb2.0 vga=791 screen=1024x768 dma nocddma home=scan myconf=scan
initrd (hd0,1)/boot/miniroot.gz
savedefault
継続的ホームディレクトリをマウントしてKNOPPIXを起動する場合のブートオプションの指定例です。水色でマークした部分はGRUBのブートメニューに表示される文字列、黄色でマークした部分はブートオプションを定義しています。

ピンクでマークした部分は、ハードディスクのパーティションの指定で、(hd0,1)は/dev/hda2を表します。この「hd0」はGRUBでのデバイス名で、Linuxのデバイス名との対応関係はdevice.map(menu.lstと同じディレクトリ内に存在するファイル)で確認できます。「1」はデバイス内のパーティション番号(0始まり)で、Linuxのデバイス名の末尾の番号より1つ小さい値になります。

ロードするカーネルイメージファイル(vmlinuz)の所在やRAMディスクイメージファイル(miniroot.gz)の所在は、このGRUB流のパーティション指定と、パーティションのルートディレクトリからの相対パスを組み合わせて「(hd0,1)/boot/vmlinuz」のように指定します。

最後の「savedefault」はmenu.lstファイルの先頭行の「default saved」と組み合わせて使用するオプションで、このエントリを選択してブートした場合は、次回のGRUB実行時の省略時解釈をこのエントリに変更することを指定します。この「savedefault」が記述されていないエントリを選択してブートした場合は、省略時解釈は変更されません。

title Knoppix 3.3 japanese (home=ramdisk)
kernel (hd0,1)/boot/vmlinuz ro lang=ja cdrom=/dev/hda2 init=/etc/init hdb=scsi hdc=scsi hdd=scsi noapic nofirewire linuxrc2 mvetc usb2.0 vga=791 screen=1024x768 dma nocddma
initrd (hd0,1)/boot/miniroot.gz
savedefault
継続的ホームディレクトリをマウントせずにKNOPPIXを起動する場合のブートオプションの指定例です。
title Knoppix 3.3 japanese (original)
kernel (hd0,1)/boot/vmlinuz ro lang=ja fromhd=/dev/hda2 init=/etc/init hdb=scsi hdc=scsi hdd=scsi noapic nofirewire vga=791 screen=1024x768 dma
initrd (hd0,1)/boot/miniroot.aist.gz
savedefault
産総研製のKNOPPIXのminiroot.gz(この例ではminiroot.aist.gzにリネームしてあります)をそのまま使ってKNOPPIXを起動する場合の指定例です。

cdrom=/dev/hda2の代わりにKNOPPIX_20040216-20040220版以降でサポートされたfromhd=/dev/hda2を使用しています。