[Momonga-devel.ja:00100] uml で Asumi errata のメンテナンス計画


かずひこです。

現在 HEAD のカーネルでは、uml (user mode linux) なるカーネルパッケージも
生成するようになっており、これを使うと起動中に別の linux を走らせること
ができます。早い話が「linux 専用 vmware」みたいなもので、cpu emulation
をするわけではないので、それなりに高速です。どんなものかはひとまず
  $ linux
とすれば、とりあえず雰囲気「だけ」味わえます。

さて、これを用いることで、マシン一台で HEAD も Asumi errata (STABLE_2_1) 
も開発することができるかな、ということで HEAD の中で Asumi を動かしてみ
ました。かなり端折って書いていますので、末尾の参考 URI をよくご覧になる
ことを強く強く薦めます。

●絶対必要なもの
  たくさんのディスクスペース (Asumi 用だけで 20GB くらい欲しい)
  ちゃんと動く HEAD 環境 (これをどうやって作る?  というのは別の機会に)
  空いている IP アドレス二つ (private address でよい。以下、192.168.1.10
  と 192.168.1.11 とする)

○ないと切ないもの
  たくさんのメモリ
  高速な CPU
  高速なネットワーク

◎手順 1 Asumi のインストール

  Asumi で Custom を選んで、パッケージ選択で Everything にしてインストー
  ルする。この際、パーティションは / ただ一つにする (5GB 程度必要)。ファ
  イルシステムは何でもよいし、どうでもよい。もちろん既存の HEAD を壊さな
  いように。grubの boot floppy をあらかじめ作っておき、それでの HEAD の
  ブートを練習しておくとよい。なお、X の設定は skip してよい。ネットワー
  クの設定は、HEAD で使っている IP アドレスではなく、空いているアドレス 
  192.168.1.11にする)

  (以下、/dev/hda1 が Asumi の / で ext2 とする)

◎手順 2 Asumi の仮想ファイルシステムのファイルを作る

  HEAD でブートする
  まず Asumi 環境をマウントする
    mkdir /tmp/asumi
    sudo mount -t ext2 /dev/hda1 /tmp/asumi
  仮想ファイルシステムのファイルを作る (15GB)
    dd if=/dev/zero of=asumi.fs seek=15360 count=1 bs=1M
    mke2fs asumi.fs
    mkdir /tmp/loop
    sudo mount -t ext2 -o loop asumi.fs /tmp/loop
  Asumi 環境をコピーする
    sudo rsync -a /tmp/asumi/ /tmp/loop/
  root 権限で /tmp/loop/etc/fstab の
   「/dev/hda1 / ext2 defaults 1 1」を
   「/dev/ubd0 / ext2 defaults 1 1」にする。
  uml 用のモジュールを展開する
    sudo tar xzf /usr/lib/uml/modules.tar.gz -C /tmp/loop/
  アンマウントする
    sudo umount /tmp/asumi
    sudo umount /tmp/loop

◎手順 3 いざ起動!

    linux ubd0=asumi.fs eth0=tuntap,,,192.168.1.10 mem=128M

  (差分ファイルシステムを使いたい時は
    linux ubd0=diff,asumi.fs eth0=tuntap,,,192.168.1.10 mem=128M
  のようにする)

なお、初回起動時の kudzu が、かなりいろいろ言ってくると思いますが、その
あたりは uml ならではということで、実際は host os のものを仮想的に使うよ
うになっているので心配いりません。いずれにしても、一般ユーザ権限で動かし
ますので、本体がむちゃくちゃなことにはならないでしょう。きっと。

[参考になる URI]
http://user-mode-linux.sourceforge.net/
http://www.atmarkit.co.jp/flinux/special/uml/uml01.html
http://www.digitalinfra.co.jp/uml/