ユーザモード・リナックス/ホストのカーネルにskasパッチを当てる
デビアン/カーネル再構築に、デビアンでのカーネルの構築の仕方が書いてあります。 ここには必要なコマンドだけ書きます。
- apt-get install kernel-patch-skas
- cd /usr/src/linux
- make-kpkg --rootcmd fakeroot --added-patches skas --append-to-version -skas-k7 kernel-image
- cd /usr/src
- dpkg -i kernel-image-2.4.22-skas-k7.i386.deb
- cd /boot
- mkinitrd -o initrd.img-2.4.22-k7-skas /lib/modules/2.4.22-k7-skas
- update-grub
- grub-reboot 8
User Mode Linux の上でデータベースを走らせていたのが、格段に早くなった。Skasパッチなしで 5分以上かかっていた処理が5秒で終るようになった。まあ、実機とほぼ同じ速度になったと思って良いかも知れない。
2.6.0 のskasパッチはデビアンではまだ出てない。それで、2.4.24 を乗せる事にした。今は、2.24.22だからまあ、自宅マシンだから問題ないけどセキュリティ問題があるので。2.4.24のSKAS付のカーネルを作ったら、公開してみようかな。でも、10メガ以上もあるからアクセスが多かったら困るしなあ。
いろいろと読んでいたら、/usr/src は、srcグループに参加していたら読み書きできる風。 /etc/group の、src に自分を追加した。このあと、再ログインしないと有効にならないよ。 ターミナルの中だけなら、"su 自分" ってしたらそのターミナルの中だけ再ログインした事になる。
コンパイルの時に fakeroot を使う。fakerootを乗せてなかったらこれで乗せる。
- sudo apt-get install fakeroot
カーネルのバイナリは、10メガ以上もあるので、ダウンロード節約にこれは乗せない。ソースだけで構築する。kの際 .config をデビアンの現状のものを使いたい。これは、apt-get source で、手に入る。100KBくらいのダウンロードで済む。
- sudo apt-get source kernel-image-2.4.24-1-k7
- sudo chmod -R g+rwX kernel-image-2.4.24-i386-2.4.24
- sudo chown setu:src -R kernel-image-2.4.24-i386-2.4.24
- sudo apt-get install kernel-source-2.4.24
- tar xjf kernel-source-2.4.24.tar.bz2
- rm linux
- ln -s kernel-source-2.4.24 linux
- cd linux
設定ファイルをコピー。僕はAthlonなので、k7を使う。自分のCPUに会わせてコピーしてね。
- cp ../kernel-image-2.4.24-i386-2.4.24/config/k7 .config
- CONFIG_PROC_MM=y
skasパッチは前回の時にインストールしてある。便利だなあ。
fakerootを使うので以下は通常のユーザのままできる。
- make-kpkg --rootcmd fakeroot clean
- make-kpkg --rootcmd fakeroot --append-to-version=-skas-k7 -added-patches skas kernel_image
- cd ..
- sudo dpkg -i kernel-image-2.4.24-skas-k7_10.00.Custom_i386.deb
- cd /boot
- sudo mkinitrd -o initrd.img-2.4.24-skas-k7 /lib/modules/2.4.24-skas-k7
- sudo update-grub
ブートがうまく行って、umlもうまく動いて、skas や mm を認識しているのを確認。 umlの実行時の最初の数行がこんな感じ。
うまく行っているような、デフォルトのカーネルを新しいのにする。(ところで、この /dev/anon って何だろう。これを乗せたら uml が得をするのかな?)setu@moon:~/etc/uml/debian$ ./Debia Checking for the skas3 patch in the host...found Checking for /proc/mm...found Checking for /dev/anon on the host...Not available (open failed with errno 2) Linux version 2.4.23-2um (mdz@mizar) (gcc version 3.3.3 20040110 (prerelease) (Debian)) #1 Mon Jan 19 09:42:11 PST 2004 On node 0 totalpages: 32768
- cd /boot
- sudo mv vmlinuz vmlinuz.old
- sudo mv initrd.img initrd.img.old
- sudo ln -s vmlinuz-2.4.24-skas-k7 vmlinuz
- sudo ln -s initrd.img-2.4.24-skas-k7 initrd.img
/dev/anon
UMLの公式ページに解説があった。 カーネル 2.4.23以上に使える模様。
以下は古いノート
(無視しても良いが、残しておく)カーネルMLにパッチがあった。
日付は2004年1月13日で新しい。今は1月23日。デビアンのパッチとしてはまだできていない様子。このパッチを当てるとUMLがいらないメモリを捨てる事ができるので、メモリの使用量が25%ほど経るらしい。上の発言には、「ホストがスワップを始める以前に動かす事のできるUMLの数が25%増えた(20:16)とのこと。ちょっと様子をみてみよう。![[メインページ]](http://now.ohah.net/upload/wiki.png)