QEMUを使って最新のLinuxカーネル(v4.0-rc7)を起動する
目的
今回はQEMUを用いて最新のLinuxカーネルを起動する際に必要となったことをまとめておこうと思います。
結構日本語の記事がなく、情報が分散しているな〜という印象だったので、まとめておこうと思いました。
ゴール
- x86用にビルドしたLinuxカーネルをQEMUを用いて起動
- ファイルシステムはbuildrootを使ってお手軽につくる
動作確認環境
ArchLinux環境下での動作を確認しました。
大まかな手順
- 必要なツール一式を準備
- カーネルのビルド
- ファイルシステムの作成
- 作成したカーネルイメージとファイルシステムを使ってQEMUで起動
って流れです!
必要なツール準備
必要なツールとして、Git, Buildroot, QEMUくらいを準備しましょう。(それに依存するのはパッケージ管理がごちゃごちゃやってくれるでしょう…)
Git
まぁこれは普通にパッケージ管理で入れちゃいましょう!僕のArch環境下だとsudo pacman -S git
で入りますがそれ以外の環境だと、
mac だったらbrew install git
とか、deb系だとsudo apt-get install git
とかで入れちゃいましょう!(多分あると思います)
Buildroot
Buildrootは組み込みLinux環境をお手軽に作ってくれるツール。
これでとりあえずQEMUでいろいろ起動できる環境は作れちゃいます。
とりあえずさっき入れたGitを使ってサクッと入れちゃいましょう!
まずここに書いてあるように、適当な場所でgit clone git://git.buildroot.git/buildroot
しちゃえば多分問題なく入ります。
QEMU
これは多分ほぼすべてのディストリのリポジトリにあるんじゃないでしょうか…。
Archだとsudo pacman -S qemu
で入ります。
他の環境だとapt-cache search
したり、brew search
しちゃえば見つかると思います。
最新版カーネルのビルド
まず最新版のカーネルのソースを落としてきましょう。
今回はGithubにあるLinus氏のを使って見ようと思います。
適当な場所でgit clone https://github.com/torvalds/linux.git
で引っ張って来ちゃいましょう。
そしていよいよQEMU向けにビルドしていくわけですが、動かすのが目的なので最小構成の設定で…!と思いmake allnoconfig
で設定ファイルの生成を試したのですが、その設定でビルドしたカーネルはちゃんと起動せず…。何が足りないのでしょうか…。
とりあえずはmake defconfig
の設定でうまく行きました。設定ファイルが作られた後、make
すればつらつら〜っとビルドが始まるので気長に待ちましょう。
linux/arch/x86_64/boot/bzImage
ってのが目的のカーネルイメージです!
ファイルシステムの作成
次にファイルシステムを作成していきましょう!
cpioコマンドなんかで作っていってもいいんですがいかんせんめんどくさい…なのでbuildrootでサクサクっと作ったものを借りちゃいましょう。
buildrootのディレクトリにまずcdしてください。
ここで設定ファイルを作りたいのですが、いかんせん量が多い…どうしたらって感じですが実はQEMU用の設定があるのでそれを使っちゃいましょう。
make qemu_x86_64_defconfig
をして、make
これで、buildrootフォルダの中のoutputの中にお目当てのものができているはずです。
buildroot/output/images/rootfs.ext2
がお目当てのイメージです。
ちなみに一緒にbuildroot/output/images/bzImage
というものがありますが、これはbuildroot側で作られたLinuxカーネルイメージです。
試しにこれらを使って起動してみましょう。
buildrootフォルダで
qemu-system-x86_64 -M pc -kernel output/images/bzImage -drive file=output/images/rootfs.ext2,if=ide -append "root=/dev/sda console=ttyS0" -nographic -curses
を実行すれば下のような感じでターミナル内でカーネルがブートするはずです…!!(今回はcursesを自分の好みで使っちゃってます)
ちなみにbuildrootでビルドされたカーネルはuname -r
で見てみると3.19.0でした。
QEMU最新カーネルで起動
ではいよいよ最新カーネルを試してみましょう。(といってもさっきの指定するカーネルをビルドしたカーネルにするだけなんですけど。)
qemu-system-x86_64 -M pc -kernel ~/hoge/linux/arch/x86_64/boot/bzImage -drive file=~/hoge/buildroot/output/images/rootfs.ext2,if=ide -append "root=/dev/sda console=ttyS0" -nographic -curses
(hogeは実際のパスに変換しちゃってください)
これでしたの図のような感じで起動するはず…!ログインなんかはID:root PW:なし でログインできるようになってます。
Author And Source
この問題について(QEMUを使って最新のLinuxカーネル(v4.0-rc7)を起動する), 我々は、より多くの情報をここで見つけました https://qiita.com/kairi199088/items/a2cd962f375cf875fe52著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .