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パッケージがインストールされて
適切に設定されている環境が必要です。
- yum
- rpm
- python
- lftp - RPMパッケージをダウンロードするのに使います。Makefileを
編集すれば他のプログラムも使えるはずです
- squashfs
- gawk
- patch
- make
- grub
- nkf
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しないようになります。
- create-initrd
-
runlevel 1に必要なファイルを抽出します。
- strip-initrd
-
抽出したファイルをstripします。
- create-initrd-image
-
抽出したファイルをinitrdのイメージにします。
- create-usr
-
/usrを抽出し、不必要なファイルを削除します。
- strip-usr
-
抽出したファイルをstripします。
- create-usr-image
-
抽出したファイルをsquashfsのイメージにします。
- create-home-image
-
/homeをext2のイメージにします。
- mount-usb
-
USBメモリをマウントします。
- install
-
作成したイメージやブートローダをUSBメモリにインストールします。
- umount-usb
-
USBメモリをアンマウントします。
まず、準備をします。
- tar ballを解凍する
- できたディレクトリに移動する
- conf/users.txtを編集して、常用ユーザーのユーザー名と本名を設定
する。パスワードについては下記を参照してください。
- 必要なら、
- Makefileの最初を編集して、下記の変数をDocoMomoの作成に使うシ
ステムに合わせる:
- system_release: *-releaseというRPMパッケージの名前、バージ
ョン、リリース
- system_release_url: そのRPMパッケージのダウンロード元
- mbr_dev: grubをインストールする先のデバイスファイル名
- target_dev: DocoMomoをインストールする先のデバイスファイル
名。このデバイスの/bootに全てのファイルが置かれます。
mbr_devとtarget_devはデフォルトでは最後に計算機にとりつけら
れた外部記憶装置となります。
- lists以下に、system_releaseと同じ名前のディレクトリを用意し、
パッケージに付いてきたファイルをコピーして編集する。それぞれ
のファイルには下記のような内容が記載されています
- rpms.list: DocoMomoに必要なRPMパッケージ名。yumが処
理しますので依存パッケージを書く必要はありません
- initrd-copy-files.list: initrdにコピーするファイルやディレ
クトリ
- initrd-empty-dirs.list: intirdに用意しておく空ディレクトリ
- patches以下に、system_releaseと同じ名前のディレクトリを用意し、
パッケージに付いてきたファイルをコピーして編集する
- conf以下に、system_releaseと同じ名前のディレクトリを用意し、
- yum.confを元にするディストリビューションからコピーする
- no-strip.listという空ファイルを用意する
- skel以下に、ユーザーの設定ファイルの見本を置く。/home/skel
以下にコピーされてどこでもモモンガのブート後に参照できます。
またユーザーdocomomoはこれらのファイルを参照することになり
ます
- etc以下に、/etc以下にコピーするファイルを置く
準備ができたら、下記のようにUSBメモリに入れるディレクトリツリーを
構築し、initrdイメージとその他のイメージを作成して、USBメモリにコ
ピーします。
- su してスーパーユーザーになる
- make setup-users してユーザーの作成までを終わらせる。最後に常用
ユーザーのパスワードを入力してください。なお、「docomomo」とい
うユーザーIDのユーザーとルートのパスワードは、Makefileの中で
「docomomo」と設定されます。必要な場合は、
/usr/sbin/chroot ./root /usr/bin/passwd docomomo
などとして変更してください
- 必要なら、できあがった常用ユーザーのホームディレクトリ
(root/home/<username>) に設定ファイルなどをコピーする。chownコ
マンドでuseridとgrpidを適宜設定してください
- 必要なら、root/initrd/etc以下のファイルなどを編集して設定する
- make -j2 create-images してinitrdと/usrや/homeのイメージを作成する
- USBメモリを挿し、make install してブートローダやDocoMomoをUSBメ
モリにコピーする
Makefile.develはレポジトリの操作やWWWサーバへのどこでもモモンガの
公開のためのターゲットを提供します。
DocoMomoの作成には下記のRPMパッケージがインストールされて
適切に設定されている環境が必要です。
- rsync - ファイルのWWWサーバへのアップロードに使います
- yum-utils - ソースコードのダウンロードに使います
- ruby-rdtool - ドキュメントのHTMLへの変換に使います
- 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 (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.