[BitVisor-devel:56] Re: GRUBのmoduleでLinux kernelを指定したい
Hideki EIRAKU
hdk @ igel.co.jp
2015年 11月 12日 (木) 12:10:25 JST
イーゲル 榮樂です。
From: Kuniyasu Suzaki <k.suzaki @ aist.go.jp>
Subject: [BitVisor-devel:54] GRUBのmoduleでLinux kernelを指定したい
Date: Thu, 12 Nov 2015 10:55:27 +0900
> 産総研の須崎です。
>
> 先に教えて頂いたBitvisor 1.1リファレンスマニュアルによるとICスマートカー
> ド認証で使うためにGRUBのmoduleにlinuxカーネル&initrdを指定できるよう
> ですが、この部分に普通のLinuxを指定して起動できないものでしょうか。
BIOS 環境で module に ELF バイナリを指定して起動した場合、"minios" 扱
いとなり、BitVisor のデバイスドライバーが初期化される前にゲスト OS と
して実行されます。"minios" は IC カードからの暗号鍵の取得、あるいは、
パスワードによる復号により、暗号鍵を含む config を作成して BitVisor に
渡し、BitVisor はその config を元にデバイスドライバーの初期化を行って
通常の起動に移ります。
"minios" は core/osloader.c にある極めて簡単なローダーによって読み込ま
れます。initrd やコマンドライン引数を渡す方法として古い Linux のパラメー
ター渡しを使用しており、内容も initrd のアドレスなどを除いて固定値となっ
ています。(画面の広さ 80x25、メモリー容量 128MiB 等) 普通の Linux の起
動もできないことはないと思いますが、以下の点に注意が必要です。
- 読み込めるのは i386 32 ビットの ELF バイナリー (vmlinux) です。一般
的に使われている vmlinuz ではありません。先頭 4 バイトに "\x7FELF"
が入っている ELF バイナリーでなければロードされません。64 ビット等の
ELF バイナリーを指定した場合正常に動作しません。
- パラメーターが固定値のため、メモリー容量が 128MiB しか使えません。ま
た、root=/dev/sda1 などの追加のコマンドライン引数を渡すこともできな
いため、起動を継続できる専用の initrd を用意する必要があります。
- 上に書いたように、BitVisor のデバイスドライバー初期化前であり、すべ
てのデバイスがパススルーとなります。
- ゲスト OS から BitVisor に config を渡すことで、動作中のゲスト OS を
強制停止させシステムの通常起動を開始させることができてしまいます。
> 試しにGRUBのkernelにbitvisor1.4、moduleにlinuxカーネル&initrdを指定して
> も行ったところは通常のようにGRUBに戻ってしまいます。Linuxが起動された
> 様子もありません。
おそらく vmlinuz を指定したのではないでしょうか? 先頭 4 バイトのチェッ
クに引っかかればロードされません。
> P.S.
> ちなみに boot/login-simple の認証モジュールをGRUBのmoduleで指定すれば
> 正しくパスワード画面が出ます。
> また、オリジナルのboot/loginをmakeするとコンパイルが正しく通りません。
> 想定しているlinux-2.6.31.6が古いように思えますが、こちらは問題ないでしょうか。
> # デフォルトのダウロード先のringには既にカーネルがないので、
> https://www.kernel.org/pub/linux/kernel/
> を使うとよいのではないでしょうか。
ありがとうございます。起動時認証まわりの実装は数年前の状態でとまってい
ます。boot/login-simple は BIOS を使用した実装で、今でも問題なく使える
と思います。Linux を使用する boot/login については、当時の環境では
2.6.31.6 での動作確認をしましたが、最近は動作確認していません。
boot/login では、特に、USB キーボードを使用する環境において、IC カード
認証後通常起動に移った際に BIOS でのキーボード入力ができない (GNU GRUB
で選択ができない) という問題もあって、PS/2 ポートを備える PC が減って
しまった現状では難しい部分がありそうです。
--
Hideki EIRAKU <hdk @ igel.co.jp>
BitVisor-devel メーリングリストの案内