続々 Ubuntu Serverの全自動インストール環境作成 (USB無線LAN追加編)

↓の続き。
http://d.hatena.ne.jp/kinneko/20130203/p1
http://d.hatena.ne.jp/kinneko/20130215/p1


前に作ったものを、別の環境でまだ使うという...
OpenSSLないとか、ネットワークが使えないとか言われても、そういう目的で使うために作ったものじゃないからね。
そんな機能は入れてない。
新たに追加が必要な仕様を出してもらわないと。
作り直しだけどね。
12.04.2が出たし、リリース6ヶ月ターンになったのでLTS化しときたいので、やるけど。
なんか毎月こんなことやってるな...
でも、手順はすっかり忘れたけどな。
二度あることは三度あるね...
三度目の正直ということで、もうないといいな。
まてよ、preseedって、無線LANの設定の自動化もできたっけか?
どうも、できねーよーな気がするが...


前回まででほぼクリアしているのは以下。

  • Ubuntu鯖のミニマム環境を入れる。
  • マシンがかなりいろいろになるのでi386がターゲット。(32bit)
  • ネットワーク環境は存在しない。
  • 全数USBメモリからのインストールになる。
  • マニュアルでtaskselするのとパッケージ構成が違うので、pyserialがはいらなかった。
  • パッケージとしては、rootでシェル環境を立ち上げるので、mingettyを追加する。
  • debになってない必要なプログラムを追加する。
  • 起動時800x600で、コンソールはスリープしないようにする。
  • 電源オン時、rootでコンソール起動、指定のプログラムを自動起動する。

前回残った課題。

  • キーボードが日本語にならない。
  • ログをHDDからUSBメモリへ回収する必要がある。

今回追加の課題。

キーボードの日本語は、今回は不要なので取り組まない予定だけど、未解決なので評価には入れておこう。
ベースが変わったので、まとめ直し。


といって、12.04.2LTSでやってみたけど、netcfgの依存関係の差し替えがしんどすぎて諦めた。
依存関係のあるパッケージを全て入れ替えるか、netcfgにパッチを当てたローカルパッケージを作るかなのだが、面倒なのでやめた。
前と同じ12.10でリトライに切り替え。

isoを抜く

386のイメージを新規にもらってくるところから。

kinneko@BuildSV:/work/_ISO$ mkdir REMASTER_V4
kinneko@BuildSV:/work/_ISO$ cd REMASTER_V4/
kinneko@BuildSV:/work/_ISO/REMASTER_V4$ mkdir image
kinneko@BuildSV:/work/_ISO/REMASTER_V4$ cd image/
kinneko@BuildSV:/work/_ISO/REMASTER_V4$ wget http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu-releases//precise/ubuntu-12.10-server-i386.iso

筑波大がネットワーク的に最寄りか。


isoの内容を抜く。

kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ sudo mount -o loop ubuntu-12.10-server-i386.iso /media
kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ cd /media/
kinneko@BuildSV:/media$ find . ! -type l | cpio -pdum /work/_ISO/REMASTER_V4/image/
1366865 blocks
kinneko@BuildSV:/media$ cd /work/_ISO/REMASTER_V4/image/
kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ sudo umount /media 

起動設定ファイルを変更する

CDイメージからの起動時にカスタム設定での起動になるので、その設定ファイルを変更しておく。

kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ sudo vi isolinux/isolinux.cfg 

# Custom Ubuntu Server Installer V4 20130326 by kinneko@gmail.com
default install
label install
menu label ^Custom Ubuntu Server Installer V4 20130326 by kinneko@gmail.com
kernel /install/vmlinuz
append auto=true pkgsel/language-pack-patterns= pkgsel/install-language-support=false vga=normal file=/cdrom/preseed/custom.cfg initrd=/install/initrd.gz quiet --

インストーラーであるpreseedに伝える設定は、新しく作ったcustom.cfgに書くことにしてある。
viでの保存の際は、読み出し専用のパーミッションがファイルに付いているので、":w!"で強制上書き保存する。

インストーラーパッケージの追加とパッケージデータベースの更新

今回はネットワークなしでのインストールを前提にしているので、この処理が必要だが、一般的ではないので通常はこの章は飛ばしてもよい。


インストーラーで、ネットワーク関係の設定を司るnetcfgパッケージ "netcfg_1.68ubuntu16_i386.udeb" には、NICのないマシンでの設定を渡すとセグフォルトするバグがあった。
前回はこれを、対処済みの "netcfg_1.68ubuntu17_i386.udeb" に差し替えが必要なところでハマった。


netcfgの差し替えを行なう。
修正されたパッケージをダウンロードして、所定の位置に配置し、インストールイメージ内のパッケージデータベースを再構築する。
以前のパッケージは、依存関係で問題になるので、そのまま残しておく。
netcfgはインストーラーパッケージなので、通常のパッケージデータベースと異なるインストーラーパッケージ用のパッケージDBの更新を行なう必要がある。


パッケージをダウンロード。

kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ wget ftp://ftp.ubuntu.com/ubuntu/pool/main/n/netcfg/netcfg_1.68ubuntu17_i386.udeb
kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ sudo mv netcfg_1.68ubuntu17_i386.udeb pool/main/n/netcfg/

オリジナルのパッケージデータベースをバックアップし、新規に作成するのだが、インストーラーパッケージ用のパッケージデータベースを自動作成する方法がわからない。
通常のパッケージデータベース作成を行って使ってみたが、サイズにかなり差があり、うまく動作しなかった。
通常のパッケージのデータを一旦作っておいて、必要な部分だけを従来のデータベースに追記することにした。
パッケージデータベースは、圧縮されたテキストファイルなので、編集はエディタで簡単にできる。


通常のパッケージデータベースを無圧縮で作成する。
sudoでの作業では、書き込みパーミッションが問題になるので、あらかじめPackagesファイルを作り書き込み権限を付けておく。

kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ sudo touch dists/quantal/main/debian-installer/binary-i386/Packages
kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ sudo chmod 777 dists/quantal/main/debian-installer/binary-i386/Packages
kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ sudo apt-ftparchive packages pool/main > dists/quantal/main/debian-installer/binary-i386/Packages

grepでPackages内のnetcfgを検索して、該当部分を抜き出す。
古いものと2つあるので注意。

kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ grep -A 11 netcfg  dists/quantal/main/debian-installer/binary-i386/Packages
Package: netcfg
Priority: optional
Section: debian-installer
Installed-Size: 946
Maintainer: Ubuntu Installer Team <ubuntu-installer@lists.ubuntu.com>
Original-Maintainer: Debian Install System Team <debian-boot@lists.debian.org>
Architecture: i386
Version: 1.68ubuntu16
Provides: configured-network
Depends: libc6-udeb (>= 2.15), libdebconfclient0-udeb, libdebian-installer4-udeb (>= 0.79ubuntu3), libiw30-udeb (>= 30~pre1), ethernet-card-detection, isc-dhcp-client-udeb, wpasupplicant-udeb, crypto-modules, rdnssd-udeb, ndisc6-udeb
Filename: pool/main/n/netcfg/netcfg_1.68ubuntu16_i386.udeb
Size: 315084
MD5sum: 40f0c35b3ac33c9f1ce1e0c7eb33500b
SHA1: 598300ff6afd6ed7395e519911c1a48252e15da5
SHA256: 26d7ed75aedaad9be2fe71743e38f5499b6cc6406485e77ca0cfbdc35de7e577
Description: Configure the network
 To install additional installer components or the Debian Base System over
 the network, you need to configure the network in the installer. This
 component will first try to configure your network with DHCP and ask
 you for static network configuration if this fails. The configured
 network settings will be copied to your newly installed system.
Installer-Menu-Item: 1800
--
Package: netcfg
Priority: optional
Section: debian-installer
Installed-Size: 946
Maintainer: Ubuntu Installer Team <ubuntu-installer@lists.ubuntu.com>
Original-Maintainer: Debian Install System Team <debian-boot@lists.debian.org>
Architecture: i386
Version: 1.68ubuntu17
Provides: configured-network
Depends: libc6-udeb (>= 2.16), libdebconfclient0-udeb, libdebian-installer4-udeb (>= 0.85ubuntu1), libiw30-udeb (>= 30~pre1), ethernet-card-detection, isc-dhcp-client-udeb, wpasupplicant-udeb, crypto-modules, rdnssd-udeb, ndisc6-udeb
Filename: pool/main/n/netcfg/netcfg_1.68ubuntu17_i386.udeb
Size: 314998
MD5sum: 20d119be495ac3ea4037b11a630d3500
SHA1: 6a84c0ced0add99c61434ce65353964fede569f2
SHA256: 7bff6a8a7c6aacbf6b072d44a6d04084c07a07839012d7077619033f71853151
Description: Configure the network
 To install additional installer components or the Debian Base System over
 the network, you need to configure the network in the installer. This
 component will first try to configure your network with DHCP and ask
 you for static network configuration if this fails. The configured
 network settings will be copied to your newly installed system.
Installer-Menu-Item: 1800

作った非圧縮のパッケージデータベースを削除。

kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ sudo rm dists/quantal/main/debian-installer/binary-i386/Packages

後半部分を、もとのパッケージデータベースに追記する。
まず、圧縮されたパッケージデータベースを展開する。

kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ sudo gzip -d  dists/quantal/main/debian-installer/binary-i386/Packages.gz 

viエディタでPackagesを開き、先ほど抜き出した後半部分を転記する。

kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ sudo vi dists/quantal/main/debian-installer/binary-i386/Packages

項目間は空行で区切られているので、前後に注意する。
viでの保存の際は、読み出し専用のパーミッションがファイルに付いているので、":w!"で強制上書き保存する。
編集したPackagesを圧縮する。

kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ sudo gzip dists/quantal/main/debian-installer/binary-i386/Packages 

パッケージの追加とパッケージデータベースの更新

mingettyはrootでコンソールログインを自動化するために必要なのだが、インストールイメージには含まれていないので、パッケージを追加する必要がある。
pyserialもシリアルデバイスの制御に使っているので追加する。インストールイメージには含まれているので、カスタムインストールスクリプトの追加パッケージに名前を書くだけでいい。pyserialは、今回の固有の事情で必要なので、一般的には入れる必要はない。
さらに、追加で、OpenSSLは必要ということと、無線LANの設定が必要であることはわかっている。必要なパッケージがインストールイメージに含まれているか確認する。


opensslの確認。

kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ find ./ | grep openssl
./pool/main/p/pyopenssl
./pool/main/p/pyopenssl/python-openssl_0.12-1ubuntu2_i386.deb
./pool/main/o/openssl-blacklist
./pool/main/o/openssl-blacklist/openssl-blacklist_0.5-3_all.deb
./pool/main/o/openssl-blacklist/openssl-blacklist-extra_0.5-3_all.deb
./pool/main/o/openssl
./pool/main/o/openssl/libssl1.0.0-udeb_1.0.1-4ubuntu5.5_i386.udeb
./pool/main/o/openssl/libssl-dev_1.0.1-4ubuntu5.5_i386.deb
./pool/main/o/openssl/openssl_1.0.1-4ubuntu5.5_i386.deb
./pool/main/o/openssl/libssl1.0.0_1.0.1-4ubuntu5.5_i386.deb
./pool/main/o/openssl/libssl-doc_1.0.1-4ubuntu5.5_all.deb
./pool/main/o/openssl/libcrypto1.0.0-udeb_1.0.1-4ubuntu5.5_i386.udeb
./pool/main/libc/libcrypt-openssl-bignum-perl
./pool/main/libc/libcrypt-openssl-bignum-perl/libcrypt-openssl-bignum-perl_0.04-2build4_i386.deb
./pool/main/libc/libcrypt-openssl-rsa-perl
./pool/main/libc/libcrypt-openssl-rsa-perl/libcrypt-openssl-rsa-perl_0.27-1build1_i386.deb

含まれている。


iw関連はどうだろう。

kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ find ./ | grep iw
./pool/main/i/iw
./pool/main/i/iw/iw_3.2-1_i386.deb
./pool/main/w/wireless-tools/libiw30-udeb_30~pre9-5ubuntu2_i386.udeb
./pool/main/w/wireless-tools/libiw30_30~pre9-5ubuntu2_i386.deb

こちらも、大丈夫そうだ。


パッケージの依存関係で、必要なパッケージのインストールは、pkgselがなんとかしてくれることを期待しておく。


mingettyは、インストールイメージにパッケージが含まれないので、パッケージをダウンロードしてきて追加し、パッケージデータベースを更新しておく必要がある。

kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ wget http://archive.ubuntu.com/ubuntu/pool/universe/m/mingetty/mingetty_1.08-2_i386.deb
kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ sudo mkdir -p pool/main/m/mingetty
kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ sudo mv mingetty_1.08-2_i386.deb pool/main/m/mingetty/

パッケージデータベースをバックアップしてから再構築する。

kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ sudo mv dists/quantal/main/binary-i386/Packages.gz dists/quantal/main/binary-i386/Packages.gz.org
kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ sudo touch dists/quantal/main/binary-i386/Packages
kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ sudo chmod 777 dists/quantal/main/binary-i386/Packages
kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ sudo apt-ftparchive packages pool/main > dists/quantal/main/binary-i386/Packages

mingettyがパッケージデータベースに記載されたことを確認して、圧縮しておく。

kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ grep mingetty dists/quantal/main/binary-i386/Packages
Package: mingetty
Filename: pool/main/m/mingetty/mingetty_1.08-2_i386.deb
 mingetty is a minimal getty for use on virtual consoles. Unlike
 the getty in the util-linux or mgetty packages, mingetty is not
kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ sudo gzip dists/quantal/main/binary-i386/Packages

自動設定ファイルの作成

一般的なインストールでは、ディスプレイに対話インターフェイスが表示され、その都度必要な項目を入力していく。
全自動インストールでは、それを事前に決めた内容で自動登録させる。
そのためには、インストーラーであるpreseedに必要な設定を伝える必要がある。
今回は、その設定ファイルを "preseed/custom.cfg" という名前で作成することにした。


設定内容をざっとおさらい。


コンソールでは、日本語を使うことはないので、余計なパッケージが入らないために英語をデフォルトにした。


ホスト名は、customusv4。


ハードディスクは全てをフォーマットして使用する。LVMは使わない。


タイムゾーンは台湾で使うので、台北にしておく。日本なら"Asia/Tokyo"にしておいて。


作成するユーザーとパスワードはtest/test。


rootパスワードもtest。


ここで、前回課題のキーボード設定の更新処理を試す。ja106ではなく、jpでよさそうだと踏んだが、どうだろうか。
今回は、作成した環境を日本では使用しないので、動作確認できたら、後で英語キーボード設定に戻しておく。


無線LANはアリだが、有線LANを認識すると面倒なので、とりあえず前と同じでNICなしの設定にする。


追加パッケージは、前からのpython-serial, mingettyに、openssl, iwを追加。


以下のような設定として書いておく。

kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ sudo vi preseed/custom.cfg

d-i debian-installer/locale string en_US
d-i localechooser/supported-locales en_US.UTF-8
d-i console-setup/ask_detect boolean false
d-i console-setup/layoutcode string jp

# NIC not use
d-i netcfg/enable boolean false

d-i netcfg/confirm_static boolean true
d-i netcfg/get_hostname string customusv4
d-i netcfg/get_domain string local.exsample.com
d-i netcfg/wireless_wep string
d-i mirror/http/mirror select CC.archive.ubuntu.com
d-i clock-setup/utc boolean false
d-i time/zone string Asia/Taipei
d-i clock-setup/ntp boolean false

d-i partman-auto/init_automatically_partition select biggest_free
d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string regular
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-auto/choose_recipe select atomic
d-i partman/default_filesystem string ext4
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true

d-i partman/confirm_nooverwrite boolean true
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
d-i partman/mount_style select traditional

d-i base-installer/install-recommends boolean true
d-i base-installer/kernel/image string linux-generic

d-i passwd/root-login boolean true
d-i passwd/make-user boolean false
d-i passwd/root-password password test
d-i passwd/root-password-again password test
d-i passwd/user-fullname string test
d-i passwd/username string test
d-i passwd/user-password password test
d-i passwd/user-password-again password test
d-i user-setup/allow-password-weak boolean true
d-i user-setup/encrypt-home boolean false
d-i apt-setup/use_mirror boolean false

d-i debian-installer/allow_unauthenticated boolean true
tasksel tasksel/first multiselect none
d-i pkgsel/include string python-serial mingetty openssl iw
d-i pkgsel/upgrade select none
d-i pkgsel/update-policy select none
popularity-contest popularity-contest/participate boolean false
d-i pkgsel/updatedb boolean true
d-i grub-installer/grub2_instead_of_grub_legacy boolean false
d-i grub-installer/only_debian boolean true
d-i grub-installer/bootdev string (hd0,0)
d-i finish-install/reboot_in_progress note

late_commandフックを使ってインストールの最後に指定ファイルをコピーする

preseedの命令のうち、"preseed/late_command:"には、 インストールが終わって再起動する直前、 /target ファイルシステムをアンマウントする前に実行される処理を書いておける。
今回必要な以下の処理は全部ここに入れておく。

  • ログインなしにroot起動するようにtty1を変更
  • コンソールがスリープしないように変更
  • コンソールが800x600になるように変更
  • 追加のオリジナルプログラムを配置
  • 追加のオリジナルプログラムを起動時に自動起動する


作業に必要なディレクトリ情報を調べる。
インストールを仮想マシンで行なってみて、インストール中のマウント状態を調べてみると、CDROMは/cdromにマウントされている。
さらに、あとで/target/media/cdromにリマウントされているようだ。
sda1は/targetにマウントされている、


ファイルの置き場所をmyfileとして作成、コピーするファイルと実行するスクリプトを配置する。
late_commandは、複数行の指定がうまく動作しないようなので、作業内容はシェルスクリプトにまとめておく。
必要なファイルと作業は以下になる。

  • /target/boot/grub/menu.lstの上書き
    • 画面を800x600にするのと、スクリーンのブラックアウト防止に、kernel起動オプションに"video=800x600 consoleblank=0"を追記。
    • インストーラーでは、UUIDでストレージを指定してしまうので、インストール後のドライブを他のPCに移動すると動作しない。そのため、"root=/dev/sda1"に統一。
  • /target/etc/init/tty1.confの上書き
    • mingettyで全自動でコンソールはrootログインするように変更。"exec /sbin/mingetty --autologin root tty1"。
  • /target/root/.bashrcの上書き
    • 任意:次項のプログラムを起動時に自動立ち上げするように追記
  • /target/root/に実行ファイル群を展開
    • 任意:必要なものをinstall.shでコピーする。ここではprogramsとして、/rootに配置した。
kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ mkdir myfile
kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ vi myfile/menu.lst
kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ vi myfile/tty1.conf
kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ vi myfile/bashrc
kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ vi myfile/install.sh
kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ ls myfile/
bashrc  install.sh  menu.lst  programs  tty1.conf


late_commandは、in-targetを指定しているので、/target/にchrootして起動しているようだ。
install.shも、それを前提に書く。

kinneko@BuildSV:/work/_ISO/REMASTER_V3/image$ vi myfile/install.sh 

#!/bin/sh
cp /media/cdrom/myfile/menu.lst /boot/grub/menu.lst
cp /media/cdrom/myfile/tty1.conf /etc/init/tty1.conf
cp /media/cdrom/myfile/bashrc /root/.bashrc
cp -a /media/cdrom/myfile/programs /root/


install.shに実行権限を付与して、custom.cfgのgrub-installer/bootdevの後に追記する。

kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ chmod +x myfile/install.sh 
kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ sudo vi preseed/custom.cfg 

d-i preseed/late_command string \
in-target /media/cdrom/myfile/install.sh

isoイメージを作成する

kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ sudo genisoimage -N -J -R -D  -V "CUSTOMUSV4"  -o ../ubuntu-12.10-server-i386-custom-preseedV4.iso -b isolinux/isolinux.bin -c isolinux/boot.cat  -no-emul-boot -boot-load-size 4 -boot-info-table ./
(snip)
 99.90% done, estimate finish Tue Mar 26 17:21:41 2013
Total translation table size: 2048
Total rockridge attributes bytes: 357685
Total directory bytes: 1884160
Path table size(bytes): 12990
Max brk space used 335000
390405 extents written (762 MB)

今回は試した追加プログラムが結構大きなものなので、このサイズになった。通常では、670MB前後になる。
少しでも小さくするために、試しにisoを圧縮する仕組みを試してしてみたが、インストールイメージの内部は、ほとんどが圧縮されたファイルであるので、効果がなかった。


USBメモリから起動できるように、isohybrid化しておく。

kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ sudo isohybrid ../ubuntu-12.10-server-i386-custom-preseedV4.iso

仮想マシンでのインストールと起動テスト

VirtualBoxで起動テストを行った。
インストール用の仮想ストレージは8GBで用意しておく。
仮想CDとして作成したisoイメージを指定する。
起動すると全自動実行なので、まずHDDが上書きされても泣かないかどうかちゃんと確認する。


全自動インストール後、再起動し、指定のプログラムが動作することを確認できた。
残念ながら、キーボードの日本語キーマップ対応は失敗だった。

実機でのインストールと起動テスト

作成したisoイメージをUSBメモリに書き込んで、実機にインストールする。

kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ sudo dd if=../ubuntu-12.10-server-i386-custom-preseedV4.iso of=/dev/sdc
1562624+0 records in
1562624+0 records out
800063488 bytes (800 MB) copied, 344.327 s, 2.3 MB/s


QNAPのドライブ2発のAtom NASに入れる。Atom D510 1.66GHz。RAMは2GB。
起動時にF11キーを押しておくと、起動デバイスを選択できる画面に出る。
リストから、挿しこんでおいたUSBメモリを選択して起動する。
実機でも、全自動でインストールし、再起動後に指定のプログラムが動作することを確認できた。

実機で無線環境のテスト

ターゲットとなる無線ドングルはWN-G150U。Ralink搭載のようだ。
USBドングルを挿しこむと、ドライバとして、cfg80211, mac80211, rt2x00lib, rt2x00usb, crc_ccitt, rt2800lib, rt2800usbがロードされた。
rt2800usbドライバは、プロプライエタリファームウェア"/lib/firmware/rt2870.bin"が必要だが、この環境では、すでにインストールされている。

root@customsv4:~# lsusb | grep WN-G150U
Bus 002 Device 003: ID 04bb:0947 I-O DATA Device, Inc. WN-G150U Wireless LAN Adapter

wlan0として認識している。

root@customsv4:~# ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr 00:a0:b0:xx:xx:xx 
          UP BROADCAST MULTICAST  MTU:1500  Metric:1 
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 MB)  TX bytes:0 (0.0 MB) 

認識はしたけど、無線LANの設定関連ツールがないので設定できない。
具体的には、wireless-toolsと、wpasupplicantない。
どちらも、インストールイメージにパッケージが入っていることは確認できた。

kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ find ./ | grep wireless-tools 
./pool/main/w/wireless-tools
./pool/main/w/wireless-tools/wireless-tools_30~pre9-8ubuntu1_i386.deb
./pool/main/w/wireless-tools/wireless-tools-udeb_30~pre9-8ubuntu1_i386.udeb
./pool/main/w/wireless-tools/libiw30-udeb_30~pre9-8ubuntu1_i386.udeb
./pool/main/w/wireless-tools/libiw30_30~pre9-8ubuntu1_i386.deb

kinneko@BuildSV:/work/_ISO/REMASTER_V4/image$ find ./ | grep wpasupplicant  
./pool/main/w/wpa/wpasupplicant_1.0-2ubuntu5_i386.deb
./pool/main/w/wpa/wpasupplicant-udeb_1.0-2ubuntu5_i386.udeb

custom.cfgに追記する。電源ボタンでシャットダウンができなかったので、acpidも追記。

d-i pkgsel/include string python-serial mingetty openssl iw wireless-tools wpasupplicant acpid

isoを作成し、isohybrid処理して、USBメモリを作成し、実機に再インストールする。
インストールを終わって、ボタンでシャットダウンできることを確認。


手近の無線APに接続してテストを行なう。
無線LANの接続設定を作る。

root@customsv4:~# wpa_passphrase SSID PASS > /etc/wpa_supplicant/wpa_supplicant.conf
root@customsv4:~# cat /etc/wpa_supplicant/wpa_supplicant.conf

network={
ssid="SSID"
#psk="PASS"
psk="ENCRYPTED_PASS"
}

マニュアルで起動して接続テスト。

root@customsv4:~# wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf &
root@customsv4:~# dhclient wlan0
root@customsv4:~# iwconfig wlan0 
root@customsv4:~# ifconfig wlan0

wlan0が生きていて、IPアドレスはとれている。
apt-get update もできる。外部接続も問題なくできることが確認できた。


無線LANを、自動起動させるには以下の設定を書いておく。

root@customsv4:~#  vi /etc/network/interfaces

auto wlan0
iface wlan0 inet dhcp
wpa-essid SSID
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

残件

とりあえず、これで目標は達成された。
インストールされたパッケージは220。ミニマムなシステムに仕上がっている。
インストール時に設定しなかった有線LANについても、interfacesファイルを書いて動作している。
apt用のパッケージリポジトリの指定が、セキュリティ関係しか有効になっていないので、何か入れるにはsources.listにmain, universeも追加してやる必要はある。


今回も、日本語キーボード対応ができなかった...
これを解決するまで、きっとまた次回があるに違いない...