どこでもモモンガ

どこでもモモンガ (DocoMomo) とは

DocoMomoは、512MB 程度以上のあるix86マシンで512MB程度以上のUSBメモリからGNU/Linuxを 起動できるようにするツールです。DocoMomoを作成する環境と同様の、 使い慣れた環境をUSBメモリ上に構築できます。

どこでもモモンガの動作に必要な環境

手元では、xfce4の上で、rxvtをひとつとfirefoxを起動してscim-skkを 使った状態で、メインメモリを480MB強使用しました。xfce4に同梱の Terminalを使うと必要なメモリの量は増えます。swapはありません。

バージョン0.13.0では、USBメモリに格納されたファイルは、合計450MB 強でした。

どこでもモモンガの使い方

一般的なLinuxの起動プロセスの概要を、 linux-boot-process.jaに記し ました。

どこでもモモンガでは、デフォルトでは、runlevel 4に起動し、ユーザー docomomoとしてstartxし、xfceが起動するようになっています。この環 境からログアウトした後には、runlevel 3の場合と同様、loginプロンプ トからのログインと、startxなどのコマンドを使ったXの起動ができます。

新しいマシンでXがうまく起動しない場合には、リブートして、grubのメ ニューから矢印キーで2つ目の「DocoMomo on a new hardware」を選んで リターンを押してください。Xなどが適切に再設定されるはずです。

自動的にログインしないようにするには、runlevel 3に起動してくださ い。デフォルトでrunlevel 3に起動するようにするには、USBメモリ内の /boot/grub/grub.confを編集するか、どこでもモモンガを起動してから /etc/inittabを編集してください。grubのメニューからeを押して一時的 にデフォルトではないrunlevelに起動することもできます。runlevel 5 に起動するには、必要なパッケージが足りない可能性が大きいです。

システム全体のタイムゾーンはUTCになります。常用するユーザーのタイ ムゾーンは、~/.bashrcに、例えば、

export TZ=Japan

などという行を追加して設定してください。

起動時にネットワークにつながっていた場合、時計はNTPサーバ(pool.ntp.org) に同期されます。ネットワークにつながっていなかった場合は、 DocoMomoの走っているマシンの時計(RTC)の時刻がそのままUTCの時刻と して使われます。

どこでもモモンガの作成に必要な環境

DocoMomoの作成には下記のRPMパッケージがインストールされて 適切に設定されている環境が必要です。

DocoMomoの作成の際には、1.5GB程度のファイルが生成されます。

どこでもモモンガの作成手順

まずは<URL:zunda.freeshell.org/docomomo/dist/>から最新 版のtar ballをダウンロードしてください。

各バージョンの変更点については、ChangeLog をご覧ください。

インストール作業

どこでもモモンガの作成手順は、Makefileに記されています。それぞれ のターゲットで、下記の順に作業を進めていきいます。

下記の説明を読むのが面倒な人は、どこでもモモンガをインストールす るUSBメモリをホストのUSBポートに挿入してから、rootになって、

make install
make umount-usb

してください。うまくいけば、USBメモリからどこでもモモンガを起動で きるようになります。

ターゲットツリーの作成

prepare-root
作成されるOSのルートディレクトリを作り、yumが稼働できるように整 えます。
install-packages
yumを使って、作成されるOSに必要なRPMパッケージをインストールし ます。
update-packages
yumを使って、作成されるOSのRPMパッケージを最新のものにします。
configure-root
キーボード、ネットワーク、タイムゾーン、サービスなどの設定をし ます。
setup-users
ユーザーの設定をします。また、/home/docomomoと/home/skelに一般 的なユーザーの設定ファイルを作成します。

ここまでで、どこでもモモンガのrunlevel 4 (runlevel 3のデーモンを 起動した後、ユーザーdocomomoとして自動的にログインし、Xを起動する runlevelです) で再現されるツリーが構築されたことになります。次に、 このツリーからいくつかのファイルシステムを作ります。

stripの際には、BFDがinternal errorを出す場合があります。その場合、 エラーの出たstripコマンドに-vオプションをつけてmakeしなおし、エラー の出た時に読んでいたファイルを、conf以下のお使いのリリースのディ レクトリの下の、no-strip.list に、カレントディレクトリからの相対 パス(最初のドットを含む)として、加えてください。次回からはそのフ ァイルはstripしないようになります。

runlevel 1に必要なファイルの抽出とinitrdの作成

create-initrd
runlevel 1に必要なファイルを抽出します。
strip-initrd
抽出したファイルをstripします。
create-initrd-image
抽出したファイルをinitrdのイメージにします。

runlevel 3のための/usrの作成

create-usr
/usrを抽出し、不必要なファイルを削除します。
strip-usr
抽出したファイルをstripします。
create-usr-image
抽出したファイルをsquashfsのイメージにします。

runlevel 3のための/homeの作成

create-home-image
/homeをext2のイメージにします。

作成したイメージのUSBメモリへのインストール

mount-usb
USBメモリをマウントします。
install
作成したイメージやブートローダをUSBメモリにインストールします。
umount-usb
USBメモリをアンマウントします。

自分用のどこでもモモンガを作る

まず、準備をします。

準備ができたら、下記のようにUSBメモリに入れるディレクトリツリーを 構築し、initrdイメージとその他のイメージを作成して、USBメモリにコ ピーします。

どこでもモモンガの開発に必要な環境

Makefile.develはレポジトリの操作やWWWサーバへのどこでもモモンガの 公開のためのターゲットを提供します。

DocoMomoの作成には下記のRPMパッケージがインストールされて 適切に設定されている環境が必要です。

開発のためのターゲット

commit
ChangeLogからメッセージを抽出して、svn commitに相当のことをしま す。レポジトリへの書き込める必要があります。ChangeLogにバージョ ンの記述があれば、tagも付けます。
dist
このパッケージに必要なファイルをレポジトリからcheck outして、 tar ballにまとめます。
upload
このパッケージに必要なファイルと文書をWWWサーバにコピーします。
create-linux-installer
Linux上で動くインストーラとファイルをまとめたtar ballを作成します。
download-sources
インストーラに含まれるプログラムのソースコードをダウンロードします。
upload-sources
ダウンロードしたソースコードをWWWサーバにコピーします。

謝辞

このプロジェクトの構想段階から、おくじさん にいくつかの有用なツッコミをいただきました。USBメモリからのOSの起 動を試したり、initrdなどのファイルの構成を考える際に参考になりま した。ありがとうございました。

ソースコードやインストーラパッケージのサーバを提供してくださる SourceForge.jpに感謝します。

また、USBメモリからも問題なくOSを起動してくれる GNU GRUB の開発者のみなさま、その他有用なソフトウェアの開発者のみなさまに 感謝します。

Copyright

Copyright (C) 2006 zunda <zunda at freeshell.org> unless otherwise stated in the COPYING file.

Permission is granted for copying, modification, distribution, and distribution of modified versions of this work under the terms of GPL version 2 or later. Read the GPL file or GPL3 file for more details.

SourceForge.jp