#title kexec-loader を利用する [[http://www.solemnwarning.net/kexec-loader/|kexec-loader]]は、MBRやPBRにインストールしなくても、起動時に読み込めるパーティションにvmlinuzとinitrd.imgのみをコピーして、それらをカーネルローダで読み込めば起動できます。<
> 公式サイトは[[http://www.solemnwarning.net/kexec-loader/|こちら]] <> == kexec-loader起動用CDの作成方法 == 以下の方法はkexec-loaderのバージョン2.2.1についての方法です。違うバージョンでは異なるかもしれません。 1. [[http://www.solemnwarning.net/kexec-loader/download.cgi|kexec-loaderのダウンロードサイト]]から * kexec-loader-?-cdrom.tar.gz * modules-?.tar.gz をダウンロードします。 1. modules-?.tar.gzを展開して生成したディレクトリの中の必要そうなモデュールファイル(拡張子がmodのファイル)を、 kexec-loader-?-cdrom.tar.gzを展開して生成したディレクトリの中のiso-modulesディレクトリにコピーします。 1. 展開して生成したディレクトリの中のiso-filesディレクトリの中のkexec-loader.confを適当に編集します。その内容については、[[http://www.solemnwarning.net/kexec-loader/readme.html#s3|WEB上の説明(英語)]]あるいは、以下の「[[#kexecloader_conf|kexec-loader.confの書式]]」を参考ください。 1. [[https://wiki.ubuntulinux.jp/UbuntuTips/Others/HowToUseTerminal|端末]]で展開したディレクトリに移動し、 {{{ ./mkiso.sh 作成したいISOファイルの名前.iso }}} を実行します。 1. すると、上記で設定した「作成したいISOファイルの名前.iso」という名前のファイルが生成されます。これをCD-Rなどに[[https://wiki.ubuntulinux.jp/UbuntuTips/Install/BurningISO|書き込んで]]ください。 1. Debian7 では、kexec-loader-?-cdrom.tar.gz を展開したディレクトリにある、mkiso.sh、addmod.sh はエラー終了します。暫定的に対応したシェルファイルを添付しておきます。 * [[attachment:mkiso.debian7.sh]] * [[attachment:addmod.debian7.sh]] <> == 内蔵HDDにコピーしたkexec-loaderを利用する方法 == CD-Rに書き込まなくても、内蔵HDDからkexec-loaderを起動できます。 以下の方法はkexec-loaderのバージョン2.2.1についての方法です。違うバージョンでは異なるかもしれません。 [[http://www.solemnwarning.net/kexec-loader/download.cgi|kexec-loaderのダウンロードサイト]]から * kexec-loader-?-cdrom.tar.gz * modules-?.tar.gz をダウンロードします。 modules-?.tar.gzを展開して生成したディレクトリの中の必要そうなモデュールファイル(拡張子がmodのファイル)を、 kexec-loader-?-cdrom.tar.gzを展開して生成したディレクトリの中のiso-modulesディレクトリにコピーします。 kexec-loader-?-cdrom.tar.gzを展開して生成したディレクトリの中のmkiso.shをテキストエディタで編集し、その最後の行の {{{ rm -rf iso-root }}} の先頭に {{{ # }}} を付けて保存します。(行ごと削除しても良いです。) テキストエディタを閉じます。 端末で展開したディレクトリに移動し、 {{{ ./mkiso.sh 作成したいISOファイルの名前.iso }}} を実行します。すると、iso-rootというディレクトリの中にモデュールを組み込んだinitrd.imgが生成されます。起動時に読み込めるパーティションにkexecldrという名前のディレクトリを作成してください。作成したkexecldrディレクトリの中に、iso-rootディレクトリの中のinitrd.imgとvmlinuzをコピーします。 || /ディレクトリにコピーしても使えるのですが、'''Ubuntuがインストールされているパーティション(/にマウントされるパーティション)の/ディレクトリには同名のシンボリックリンクがあるので、問題が生じる可能性があります。'''そこで、新たにディレクトリを作成した方が安全です。 || 実際の起動時にkexec-loaderを利用できるようにするためには、別のカーネルローダでkexec-loaderのvmlinuzとinitrd.imgを読み込む必要があります。<
> grub4dosなら、menu.lstの末尾に {{{ title kexec-loader find --set-root /kexecldr/vmlinuz kernel /kexecldr/vmlinuz initrd /kexecldr/initrd.img }}} と追加すれば良いでしょう。<
> GRUB2なら、/etc/grub.d/40_linuxの末尾に {{{ menuentry "kexec-loader" { search -f --set /kexecldr/vmlinuz linux /kexecldr/vmlinuz initrd /kexecldr/initrd.img } }}} と追加して、[[https://wiki.ubuntulinux.jp/UbuntuTips/Others/HowToUseTerminal|端末]]で {{{ update-grub }}} を実行すれば/boot/grub/grub.cfgの末尾に追加されるでしょう。<
> また、起動時にメニューを利用したい場合には、kexec-loader.confを、起動時に読み込めるパーティション(vmlinuzとinitrd.imgをコピーしたパーティションとは異なっても良いです)にコピーし、そのパーティションのラベルをGparted(パーティションエディタ)などで、 {{{ kexecloader }}} に変更します。 kexec-loader.confの書き方(使えるコマンド)は [[http://www.solemnwarning.net/kexec-loader/readme.html#s3|こちらに書いてあります。]] <> == kexec-loaderのコマンドラインでの利用 == コマンドラインで使えるコマンドは [[http://www.solemnwarning.net/kexec-loader/readme.html#s3s2|こちらに書いてあります。]] {{{ disks }}} で認識されているデバイスとパーティションの一覧を表示させ、Ubuntuのインストールされたパーティションを、例えば、/dev/hda5と認識されていたら、 {{{ root hda5 }}} のように指定。 {{{ kernel カーネルの名前(フルパスで) }}} でカーネルを指定し、 {{{ initrd initramfsの名前(フルパスで) }}} でinitramfsを指定し、カーネルに渡すべきオプションがあるのなら、 {{{ cmdline カーネルに渡したいオプション }}} してから {{{ boot }}} で起動が試みられます。 なお、 {{{ cat 閲覧したいテキストファイル名(フルパスで) }}} でテキストファイルの内容を表示させることができるので、例えば、grub legacyの起動メニューの書かれたファイル、/boot/grub/menu.lstの内容を見たければ、rootでパーティションを設定した後で、 {{{ cat /boot/grub/menu.lst }}} で表示されるのですが、長いと、表示が上に流れてしまい、最後の方しか閲覧できません。moreのように表示させる方法がありましたら、このページに書き込んでくださると有難いです。 <> == kexec-loader.confの書式 == kexec-loader.confの書き方(使えるコマンド)は [[http://www.solemnwarning.net/kexec-loader/readme.html#s3|こちらに書いてあります。]] UbuntuでUUIDでパーティションが設定されている場合、UbuntuのUUIDを★として {{{ title Ubuntu on UUID=★ root UUID=★ kernel /vmlinuz initrd /initrd.img cmdline root=UUID=★ ro カーネルに渡したい他のパラメータ }}} ぐらいで良いでしょう。「カーネルに渡したい他のパラメータ」と実際に書いてはいけません。 :) '''また、/のパーティションと/bootのパーティションが別の場合、/vmlinuzと/inirtd.imgというシンボリックリンクが利用できないので、上記の内容では起動できません。''' 他のパラメータが不要なら、上記の「ro」以降は不要です。 <> == kexec-loader.confを置くパーティションのラベルをkexecloaderに変えたく無い場合 == 1. http://www.solemnwarning.net/kexec-loader/download.cgi からソースファイルをダウンロードしてください。 1. 展開して、生成されたディレクトリの中のsrc/misc.cの中に {{{ kexecloader }}} という文字列があるので、それをkexec-loader.confを置きたいパーティションのラベルに変更してください。 1. 後は、適切にコンパイルすれば良いです。コンパイルの方法は、 {{{ build.html}}} に書かれているように、必要なパッケージが利用できさえすれば、展開したディレクトリでmakeでOKでしょう。 (ただし、Ubuntu9.10の2010/3/1の状態では、必要なパッケージが入手しにくく、makeしてもエラーが発生して失敗します。) == 謝辞 == このページの情報を作成するにあたり、 「 kexec-loader を内蔵 HDD にインストールする方法」については、<
> [[http://www.solemnwarning.net/kexec-loader/faq.cgi#contact|Daniel Collins (aka solemnwarning)]] さんからご教示を賜りました。 また、以上の方法は、 grub4dos や kexec-loader, kexec-tools, Ubuntu の開発者の方のご尽力があったからこそ実現できるものです。 この場をお借りして御礼申し上げます。