Ubuntu Weekly Recipe

第1回 OEMインストール

この記事を読むのに必要な時間:およそ 3.5 分

3.OEMベンダ向けセットアップモード

インストールが完了し,再起動を行うと,セットアップモードになります。ログインには先ほどパスワードを設定した,ユーザ「oem」を用います。

ログイン後は,通常とまったく同様に振る舞うことができます(ただし,デスクトップにある"Prepare for shipping to end user"アイコンはまだ起動しないでください。後述の通り,このスクリプトを起動するとエンドユーザ向けの最終処理が準備されてしまいます⁠⁠。この状態でハードウェア周りの設定(特に制限付きドライバや,ndiswrapperなどの追加ドライバ類)や,システムのアップデートを行います。

4.エンドユーザ向けの最終処理&ミニ・セットアップの起動

エンドユーザに渡す前に行う作業が終了したら,デスクトップの"Prepare for shipping to end user"スクリプトを起動します。これにより,次回起動時に,

  • oemユーザの削除
  • ミニ・セットアップの起動

が行われるようにセットされます。以上でOEMインストールは完了です。

この状態のHDDをコピーしておくことで,エンドユーザが行うべき最低限の設定を行うことで,すぐにUbuntuを利用できるようになります。

What is update-rc.d?

ここまでの手順のうち,"Prepare for shipping to end user"の実行により,oemユーザの削除と,ミニ・セットアップの起動がセットされる原理を見ていきましょう。当該スクリプトのアイコンを右クリックし,プロパティを表示させると分かりますが,ここで実行されるスクリプトの実体は/usr/sbin/oem-config-prepareです。

このコマンドを端末上で直接実行すると,以下のような出力が得られます。

Adding system startup for /etc/init.d/oem-config ...
   /etc/rc2.d/S12oem-config -> ../init.d/oem-config
   /etc/rc3.d/S12oem-config -> ../init.d/oem-config
   /etc/rc4.d/S12oem-config -> ../init.d/oem-config
   /etc/rc5.d/S12oem-config -> ../init.d/oem-config

この出力は,Debian系ディストリビューションで起動スクリプトの管理に使われる,update-rc.dコマンドのものです。これはRed Hatなどのchkconfigコマンドに相当するもので,/etc/init.d/ 以下のスクリプトの自動起動のOn/Offを設定します。

oem-config-prepareの実体はZenity(GNOME上で利用できる,シェルスクリプトからGUIダイアログを呼び出せるコマンド)を利用したシェルスクリプトで,実行されると権限のチェックの後,次が実行されます。

# update-rc.d oem-config start 12 2 3 4 5 . 

update-rc.dの引数は(詳細はman update-rc.dを確認してください⁠⁠,次のようになります。

update-rc.d <スクリプト名> <start|stop> <起動タイミング> <ランレベル....>

これにより,次回起動時に/etc/init.d/oem-configシェルスクリプトが起動されるようになります。この/etc/init.d/oem-configがOEMインストールの主要なスクリプトです。起動時に/etc/init.d/oem-configが実行され,この中から/usr/sbin/oem-config-firstbootの起動→oemユーザの削除(+oemユーザがuid=29999で作成されたことによる,⁠次のuid」値を30000から1000に戻すための処理⁠⁠→以降はoem-configが起動しないように,次のコマンドが実行されます。

# update-rc.d -f oem-config remove

その上でミニ・セットアップ画面(/usr/sbin/oem-config-dm)を起動し,言語の選択図4や,エンドユーザの情報登録・アカウント作成図5といった流れで処理が行われます(ダイアログ左下のステップ表示が常に1/4と表示されてしまっていますが,8.04では改善されます。https://launchpad.net/ubuntu/hardy/+source/oem-config/1.24⁠。

図4 言語の選択

画像

図5 エンドユーザの情報登録・アカウント作成

画像

なお,ミニ・セットアップの起動後も,oem-configパッケージそのものはインストールされたままです。

また,ロゴの表示やhostnameの再決定など,oem-config標準では行えない処理を追加したい場合,/usr/lib/oem-config/post-installにスクリプトを設置することで行えます(oem-config-firstbootスクリプトを変更することでも行えますが,この場合は単にスクリプトを改変するのではなく,oem-configパッケージそのものをcustom buildする方がよいでしょう⁠⁠。このようなカスタマイズを行った後,動作確認を行う場合はoem-config-firstbootを--debugオプション付で起動してください。

参考となるドキュメント
OEMインストールについて:
https://wiki.ubuntu.com/Ubiquity/OEM
update-rc.d関連:
https://help.ubuntu.com/community/UbuntuBootupHowto
Ubuntu(Debian)のランレベルについて:
https://help.ubuntu.com/community/InitScriptList

著者プロフィール

吉田史(よしだふみひと)

Ubuntu Japanese Team Member株式会社創夢所属。システム管理を中心にWindows/PC Unixを併用している。Ubuntu Japanese Teamではパッケージサーバの管理や翻訳などの作業を担当。