SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

DebianユーザーのためのUbuntu活用法

Linux上でLinuxを稼働する

UMLのルートファイルシステム

 Linuxシステムをインストールする場合は、必ず、標準ディレクトリツリーを含む整合性のあるファイルシステム(ルートファイルシステムと呼びます)の作成が必要です。私は標準のインストール手順に従わなかったので、このファイルシステムを別個に作成する必要がありました。この処理に使用できるプログラムはたくさんあります。Debian向けのプログラムdebootstrapは、インターネット接続を介して使えば万全です。UbuntuはDebianから派生したものなので、同じパッケージマネージャを使用でき、同じソフトウェアパッケージが用意されています。

 私は、ファイルシステム全体を4GBのファイル(uml1-rootまたはuml2-root)に入れ、ルートユーザーとしてホストマシン上で適正なファイルシステムを作成しました。

dd if=/dev/zero of=uml1-root bs=4096 seek=1M count=1

 これをext3ファイルシステムとしてフォーマットしました。

mkfs.ext3 uml1-root

 次に、ループバックデバイスを介して使用できるように、ループバックファイルシステムとして/mnt下にマウントしました。

mount -o loop uml1-root /mnt

 次に、debootstrapアプリケーションをインストールし、これを使って/mnt下にUbuntu 7.10(Gutsy Gibbon)用の完全なルートファイルシステムをインストールしました。

apt-get install debootstrap
debootstrap --arch i386 gutsy /mnt http://us.archive.ubuntu.com/ubuntu

 これで、基本的ながら完全なLinuxファイルシステムができあがりました。ただし、uml1をブートする前に、カスタマイズして起動を改善する必要がありました。

 UMLは、Linuxホストシステムの標準のユーザープロセスとして稼働するので、通常のLinuxシステムと同様にハードウェアと直接通信せず、代わりに、Linuxホストシステムによって表されるハードウェアと通信します。これの1つの長所は、実際の構成に関係なく、どのような仮想ハードウェア構成上でもUMLを稼働できることです。

 仮想デバイスの割り当ては、変数スイッチを関連付けることでコマンドラインで行いました。たとえば、UMLブロックデバイスは、ubd変数で定義します(つまり、1つ目のブロックデバイスにはubd0、2つ目のブロックデバイスにはubd1などを使います)。コマンドラインでの割り当てubd0=uml1-rootにより、ルートファイルシステムを含むループバックファイルシステムと、1つ目のUMLブロックデバイスを関連付けました。次に、/mnt/etc/fstabを次のように編集する必要がありました。

/dev/ubd0     /     ext3     defaults     0 1
proc  /     proc     proc     defaults     0 0

 また、適切な権限を持つデバイスを作成しました。

cd /mnt/dev
mknod --mode=660 ubd0 b 98 0
chown root:disk ubd0

 ファイル/mnt/etc/hostnameにマシンの名前を挿入し、次の行だけでプレーンのvanillaファイル/mnt/etc/hostsを作成しました。

127.0.0.1 localhost

 Ubuntuは、Debianと同様、ifupdownパッケージを使って、ネットワークインターフェイスの構成と構成解除を行います。そこで、UML eth0デバイスがブート時に自動的に起動するように/mnt/etc/networking/interfacesを編集しました。uml1の場合は、次のようになります。

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
    address 192.168.0.201
    netmask 255.255.255.0
    network 192.168.0.0
    broadcast 192.168.0.255
    gateway 192.168.0.1

 tty0をルートとしてログインできるUML端末になるように設定し、それ以外を消去する必要がありました。

echo "tty0" >> /mnt/etc/securetty
echo "ttys/0" >> /mnt/etc/securetty

rm /mnt/etc/event.d/tty2
rm /mnt/etc/event.d/tty3
rm /mnt/etc/event.d/tty4
rm /mnt/etc/event.d/tty5
rm /mnt/etc/event.d/tty6

 ところで、ここでは標準のDebianとUbuntuとで若干の違いがあります。Ubuntuは有名なinitデーモンを新しいupstartフレームワークに置き換えたので、ファイル/etc/inittabではなく、/etc/event.dディレクトリ下のファイルを編集しなければなりません。

 システムがブートするたびに新しいethXデバイスを再作成するudevフレームワークの標準ルールを消去しました。

rm /mnt/etc/udev/rules.d/75-persistent-net-generator.rules

 umount /mntファイルシステムがhost-userに権限を割り当てると、UMLインスタンスがブートします。

次のページ
Linux実行可能ファイルをコンパイルしてブートする

この記事は参考になりましたか?

japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Roberto Giorgetti(Roberto Giorgetti)

イタリアに拠点を置くITマネージャ、テクニカルライター。主にビジネス分野と工業分野でオープンソースの開発に従事。核工学の学位を持つ。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/2405 2008/09/05 11:14

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー