Eee PC 4G-X に VineSeed をインストールする (eeevine-seed-20081206 相当)

[追記 2009/09/21]Vine Linux 5.0 のインストーラは USB から立ち上がりますので、以下の記事の大半は不要になりました。

前回、前々回はスクリーンショットと簡単な紹介のみでした。

  • 「Eee PC 4G-X で VineSeed を動かしてみた」([id:munepi:20081129:1227970815])
  • 「Eee PC 4G-X で VineSeed の無線ネットワークの設定をしてみた」([id:munepi:20081203:1228237262])

今回はインストール方法をドキュメントとしてまとめてみました。
実際に、コマンドラインから叩いたほとんどの処理をそのまま書き出していますので、chroot からですとカット&ペーストできる部分も多いと思われます。

少々長いですので、インストールの流れを列挙しますと、

  1. Vine Linux 4.2 の最小インストールから VineSeed へアップグレード
  2. USB ブート可能な initrd を作成
  3. SDHCVineSeed を丸ごとコピー
  4. SDHCGrub をインストール
  5. Eee PC の有線/無線ネットワークの設定

のような感じで、それぞれつまずきやすいポイントだと思います(私だけかも!?)。

Vine Linux 4.2 を最小構成でインストールし、tar.bz2 で固めます。

私は実ハードディスクへ Vine Linux 4.2 を Base System でインストールしました。
パーティションは /boot を作る必要はありません。Eee PC へは / しかコピーしません。

Vine Linux 4.2 のインストールが終わったら、/ パーティションマウントして、固めます。

   $ sudo mount /dev/sda7 /mnt/sda7
   $ sudo -i
   # cd /mnt/sda7
   # tar jcvfp /tmp/eeevine-4.2-plain-20081206.tar.bz2 .dev.static *
   # chown munepi:users /tmp/eeevine-4.2-plain-20081206.tar.bz2
   # exit
   $ du -hs /tmp/eeevine-4.2-plain-20081206.tar.bz2
   86M /tmp/eeevine-4.2-plain-20081206.tar.bz2
   $ cp /tmp/eeevine-4.2-plain-20081206.tar.bz2 /kurobox/lib/linux/vine/eeevine/

VineSeed へアップグレードします。

   # eng
   # vim /etc/apt/sources.list

#################### BEGIN ####################
##
## VineSeed
##
# (master)
rpm     [vine] http://updates.vinelinux.org/apt VineSeed/$(ARCH) main plus nonfree extras
rpm-src [vine] http://updates.vinelinux.org/apt VineSeed/$(ARCH) main plus nonfree extras
####################  END  ####################

  # apt-get update
  # apt-get dist-upgrade
  apt-get dist-upgrade でさらに更新があれば,更新する
  # rm /var/lib/rpm/__db.*
  # rpmdb --rebuilddb
  # vim /etc/fstab
  必要であれば,/etc/fstab で /dev/hdX になっているところを /dev/sdX へ変更

  Optional for Non SATA or SATA mode as IDE
  # vim /etc/modprobe.conf

#################### BEGIN ####################
alias scsi_hostadapter ata_piix 
####################  END  ####################

  # cd /boot
  # /sbin/mkinitrd -v -f /boot/initrd-2.6.26-7vl5.img 2.6.26-7vl5

  # reboot

reboot 後,VineSeed で立ち上がっていることを確認します。

現時点での VineSeed 最小構成として,tar.bz2 で固めておきます。

以下、/dev/sdaX へ Eee PC 用の VineSeed を構築しているものとして、話を進めます。

/kurobox は…、玄箱 HG へコピーですね (^_^;)

   $ sudo mount /dev/sda7 /mnt/sda7
   $ sudo -i
   # cd /mnt/sda7
   # rm -f var/cache/apt/archives/*.rpm
   # tar jcvfp /tmp/eeevine-seed-plain-20081206.tar.bz2 .dev.static *
   # chown munepi:users /tmp/eeevine-seed-plain-20081206.tar.bz2
   # exit
   $ du -hs /tmp/eeevine-seed-plain-20081206.tar.bz2
   141M	/tmp/eeevine-seed-plain-20081206.tar.bz2
   $ cp /tmp/eeevine-seed-plain-20081206.tar.bz2 /kurobox/lib/linux/vine/eeevine/

chroot で入って,Eee PC 用に調整します。

   $ sudo mount -t proc proc /mnt/sdaX/proc
   $ sudo /usr/sbin/chroot /mnt/sdaX
initrd イメージを USB ブート対応にする
   bash-3.2# mkdir /boot/work
   bash-3.2# cd /boot/work
   bash-3.2# zcat ../initrd-2.6.26-7vl5.img | cpio -i -c
gzip -dc ../initrd-2.6.26-7vl5.img | cpio -idmv などでも構いません.
   bash-3.2# find /lib/modules/`uname -r`/ -name ehci-hcd.ko -exec cp -a {} lib/ \;
   bash-3.2# find /lib/modules/`uname -r`/ -name ohci-hcd.ko -exec cp -a {} lib/ \; 
   bash-3.2# find /lib/modules/`uname -r`/ -name scsi_mod.ko -exec cp -a {} lib/ \; 
   bash-3.2# find /lib/modules/`uname -r`/ -name sd_mod.ko -exec cp -a {} lib/ \;
   bash-3.2# find /lib/modules/`uname -r`/ -name usb-storage.ko -exec cp -a {} lib/ \;
   bash-3.2# ls lib
ata_piix.ko  ehci-hcd.ko  ohci-hcd.ko  scsi_wait_scan.ko  usb-storage.ko
dock.ko      libata.ko	  scsi_mod.ko  sd_mod.ko

   bash-3.2# vim init

#################### BEGIN ####################
#!/bin/nash

mount -t proc /proc /proc
#setquiet
echo Mounted /proc filesystem
echo Mounting sysfs
mount -t sysfs none /sys
### <eeevine>
echo "Loading ehci-hcd.ko module"
insmod /lib/ehci-hcd.ko
echo "Loading ohci-hcd.ko module"
insmod /lib/ohci-hcd.ko
### </eeevine>
echo "Loading scsi_mod.ko module"
insmod /lib/scsi_mod.ko
echo "Waiting for driver initialization."
stabilized --iterations 10 --interval 250 /proc/scsi/scsi
echo "Loading sd_mod.ko module"
insmod /lib/sd_mod.ko
### <eeevine>
echo "Loading usb-storage.ko module"
insmod /lib/usb-storage.ko
sleep 10
### </eeevine>
(snip)
####################  END  ####################

  bash-3.2# find | cpio -H newc -o | gzip -9 > ../initrd-2.6.26-7vl5eeevine.img 
/boot/grub/menu.lst の編集

Eee PC 上で / パーティションが /dev/sda1 として認識されます。

  bash-3.2# vim /boot/grub/menu.lst

########## BEGIN ##########
title Vine Linux (Modified kernel)
	kernel /boot/vmlinuz ro root=/dev/sda1
	initrd /boot/initrd-2.6.26-7vl5eeevine.img
##########  END  ##########

もし Windows Xp も必要であれば,以下を追加します.

########## BEGIN ##########
title	Microsoft Windows XP Home Edition
	root	(hd1,1)
	savedefault
	makeactive
	map	(hd0) (hd1)
	map	(hd1) (hd0)
	chainloader	+1
##########  END  ##########
/etc/fstab の編集
  bash-3.2# vim /etc/fstab

########## BEGIN ##########
/dev/sda1               /                       ext3    defaults,noatime        1 1
(snip)
#/dev/sda2              swap                    swap    defaults        0 0
none			/tmp			tmpfs	defaults,noatime	0 0
none			/var/tmp		tmpfs	defaults,noatime	0 0
none			/var/cache/apt/archives	tmpfs	defaults,noatime	0 0
##########  END  ##########
/tmp, /var/tmp, /var/cache/apt/archives の tmpfs 化

/tmp, /var/tmp, /var/cache/apt/archives 以下にあるファイルをすべて削除

/etc/rc.local の編集
  bash-3.2# vim /etc/rc.local

########## BEGIN ##########
#### Vine stuff ends here

### <eeevine>
# for tmpfs
install -m755 -d /var/cache/apt/archives/partial

# Optional: swap zero
echo 0 > /proc/sys/vm/swappiness
### </eeevine>
##########  END  ##########
/etc/init.d/halt の編集
  bash-3.2# vim /etc/init.d/halt

########## BEGIN ##########
# Save mixer settings, here for lack of a better place.
grep -q "\(alsa\)" /proc/devices
if [ $? = 0 -a -x /sbin/salsa ]; then
   action $"Saving mixer settings" /sbin/salsa -s
fi

### <eeevine>
# for stopping snd-hda-intel of shutdown process
/sbin/modprobe -r snd-hda-intel
### </eeevine>

# Save random seed
##########  END  ##########

  bash-3.2# exit

現時点での eeevine-seed の最小構成として,tar.bz2 で固めておきます。

   $ sudo umount /mnt/sdaX/proc
   $ sudo -i
   # cd /mnt/sdaX
   # tar jcvfp /tmp/eeevine-seed-20081206.tar.bz2 .dev.static *
   # chown munepi:users /tmp/eeevine-seed-20081206.tar.bz2
   # exit
   $ du -hs /tmp/eeevine-seed-20081206.tar.bz2
   145M	/tmp/eeevine-seed-20081206.tar.bz2
   $ cp /tmp/eeevine-seed-20081206.tar.bz2 /kurobox/lib/linux/vine/eeevine/

SDHC へ eeevine-seed をインストールします。

SDHC を差してどこにマウントされているかを確認します。

$ sudo /sbin/fdisk -l

私の場合は、SDHC が /dev/sdc として認識されましたので、以下そのままで話を進めます。

SDHCext3 パーティションを 1 つ作成します。これが / パーティションになります。

私は tune2fs でけちけちな設定にしています。

   $ sudo /sbin/fdisk /dev/sdc
   $ sudo /sbin/mkfs -t ext3 /dev/sdc1
   $ sudo tune2fs -r 10000 /dev/sdc1
   $ sudo tune2fs -c 0 /dev/sdc1

Grub のインストール

/dev/sdc へ grub をなんとかインストールして下さい。

$ sudo /usr/sbin/grub-install --root-directory=/mnt/sdhc /dev/sdc

上記ですんなりと Grub が入ってくれれば良いのですが、うまくいかないことがあるかもしれないので、grub-install で /boot/grub を再生成させた方がよいかもしれません。

一旦、/boot/grub のコピーを取って、grub-install で /boot/grub を再生成させてから、menu.lst を上書きでコピーします。menu.lst が大事なファイルです。

$ sudo mv /mnt/sdhc/boot/grub /mnt/sdhc/boot/grub.orig
$ sudo /usr/sbin/grub-install --root-directory=/mnt/sdhc /dev/sdc
$ sudo cp -a /mnt/sdhc/boot/grub.orig/menu.lst /mnt/sdhc/boot/grub/

eeevine-seed の動作テストをします。

念のため,これで実際に Eee PC 上で boot するか確認します。これが成功すれば、95% お疲れ様でしたです。

  localhost login: root
  Password: 
  # shutdown -h now

eeevine-seed の最小イメージを作成します。

あらかじめ atl2-2.0.5.tar.bz2 (from http://people.redhat.com/csnook/atl2/), madwifi-hal-0.10.5.6-r3879-20081204.tar.gz (from snapshots.madwifi.org: madwifi-hal-0.10.5.6) をダウンロードしておきます。それぞれ最新版を落として問題ないです。

有線のドライバは atl2 で、無線のドライバは mafwifi-hal の ath_pci です。

kernel 2.6.26 に入っている ath5k ath5k_pci と mafwifi-hal の ath_pci との相性が良くないみたいです。

(追記 [2009/01/16) kernel-2.6.27-8 以降、atl2 がパッチとして追加されましたので、自前でビルドする必要はありません。

また、以下の xorg.conf を作成しておきます。これを見れば分かりますが、eeeUbuntu の xorg.conf をベースにしています。ほとんど自動認識してくれます。

########## BEGIN ##########
# xorg.conf (X.Org X Window System server configuration file)
#
# This file was generated by dexconf, the Debian X Configuration tool, using
# values from the debconf database.
#
# Edit this file with caution, and see the xorg.conf manual page.
# (Type "man xorg.conf" at the shell prompt.)
#
# This file is automatically updated on xserver-xorg package upgrades *only*
# if it has not been modified since the last upgrade of the xserver-xorg
# package.
#
# If you have edited this file but would like it to be automatically updated
# again, run the following command:
#   sudo dpkg-reconfigure -phigh xserver-xorg

Section "InputDevice"
	Identifier	"Generic Keyboard"
	Driver		"kbd"
	Option		"CoreKeyboard"
	Option		"XkbRules"	"xorg"
	Option		"XkbModel"	"jp106"
	Option		"XkbLayout"	"jp"
	Option		"XkbRules"	"base"
	Option		"XkbOptions"	"grp:alt_shift_toggle,grp_led:scroll"
	Option		"XkbVariant"	""
EndSection

Section "InputDevice"
	Identifier	"Configured Mouse"
	Driver		"mouse"
	Option		"CorePointer"
EndSection

Section "InputDevice"
	Identifier	"Synaptics Touchpad"
	Driver		"synaptics"
#	Option		"SendCoreEvents"	"true"
	Option		"SendCoreEvents"	"yes"
	Option		"Device"		"/dev/psaux"
	Option		"Protocol"		"auto-dev"
	Option		"LeftEdge"		"1000"
	Option		"RightEdge"		"5400"
	Option		"TopEdge"		"1000"
	Option		"BottomEdge"		"4900"
	Option		"VertEdgeScroll"	"1"
	Option		"HorizEdgeScroll"	"0"
	Option		"VertScrollDelta"	"100"
	Option		"HorizScrollDelta"	"0"
	Option		"PalmDetect"		"0"
	Option		"SHMConfig"		"on"
	Option		"VertTwoFingerScroll"	"1"
	Option		"TapButton1"		"1"
	Option		"TapButton2"		"2"
	Option		"TapButton3"		"3"
	Option		"RBCornerButton"	"0"
	Option		"RTCornerButton"	"0"
EndSection

Section "Device"
	Identifier	"Configured Video Device"
EndSection

Section "Monitor"
	Identifier	"Configured Monitor"
EndSection

Section "Screen"
	Identifier	"Default Screen"
	Monitor		"Configured Monitor"
	Device		"Configured Video Device"
EndSection

Section "ServerLayout"
	Identifier	"Default Layout"
	Screen		"Default Screen"
	InputDevice	"Synaptics Touchpad"
	InputDevice	"Generic Keyboard"
EndSection
##########  END  ##########

chroot して、atl2 と ath_pci をインストールします。

   $ sudo mount /dev/sda7 /mnt/sdaX
   $ sudo mount -t proc proc /mnt/sdaX/proc
   $ sudo mkdir /mnt/sdaX/usr/local/share/eeevine
   $ sudo cp atl2-2.0.5.tar.bz2 madwifi-hal-0.10.5.6-r3879-20081204.tar.gz /mnt/sdaX/usr/local/share/eeevine/
   $ sudo /usr/sbin/chroot /mnt/sdaX
   bash-3.2# mkdir -p /var/cache/apt/archives/partial
   bash-3.2# apt-get install build-essential kernel-source kernel-headers kernel-devel
   bash-3.2# cd /usr/local/share/eeevine
   bash-3.2# install -m644 xorg.conf /etc/X11/
   bash-3.2# tar jxvf atl2-2.0.5.tar.bz2
   bash-3.2# cd atl2-2.0.5
   bash-3.2# make clean && make
   bash-3.2# install -m0755 -d /lib/modules/2.6.26-7vl5/kernel/drivers/net/atl2
   bash-3.2# install -m0755 atl2.ko /lib/modules/2.6.26-7vl5/kernel/drivers/net/atl2/
   bash-3.2# cd ..
   bash-3.2# tar zxvf madwifi-hal-0.10.5.6-r3879-20081204.tar.gz
   bash-3.2# cd madwifi-hal-0.10.5.6-r3879-20081204
   bash-3.2# make clean && make && make install

ここで atl2 と ath_pci に関する設定をしてしまいます。

  bash-3.2# vim /etc/modprobe.d/blacklist

########## BEGIN ##########
### <eeevine>
# Wireless Network
blacklist ath5k_pci
blacklist ath5k
### </eeevine>
##########  END  ##########

  bash-3.2# vim /etc/modprobe.conf

########## BEGIN ##########
#alias eth0 r1000
#alias char-major-81 ivtv
##########  END  ##########

  bash-3.2# vim /etc/udev/rules.d/70-persistent-net.rules

人によって異なりますが、コメントアウトしてしまいます。
########## BEGIN ##########
# PCI device 0x10ec:0x8168 (r1000) (custom name provided by external tool)
#SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="XX:XX:XX:XX:XX:XX", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
##########  END  ##########

  bash-3.2# rpm -e kernel-2.6.16-0vl76.27
  bash-3.2# exit

最小イメージとして固めます。

  $ sudo umount /mnt/sdaX/proc
  $ sudo -i
  # cd /mnt/sdaX
  # rm -rf var/cache/apt/archives/*
  # tar jcvfp /tmp/eeevine-seed-20081206.tar.bz2 .dev.static *
本当は,boot とそれ以外の base で分けた方がいい.
Grub を再インストールしないといけないから.
  # chown munepi:users /tmp/eeevine-seed-20081206.tar.bz2
  # exit
  $ du -hs /tmp/eeevine-seed-20081206.tar.bz2
  233M	/tmp/eeevine-seed-20081206.tar.bz2
  $ cp /tmp/eeevine-seed-20081206.tar.bz2 /kurobox/lib/linux/vine/eeevine/

再び SDHC へ eeevine-seed をインストールします。

   $ sudo mount /dev/sdc1 /mnt/sdhc/
   $ sudo -i 
   # cd /mnt/sdhc/
   # tar jxvfp /tmp/eeevine-seed-20081206.tar.bz2
   # exit
   $ sudo umount /mnt/sdhc/

必要であれば Grub も再インストールします。

いよいよ Eee PC 上で作業開始します!

この時点で,boot 時に udev が自動的にドライバを判断してくれて,有線 LAN に atl2 によって接続可能です.

まずは、デスクトップ環境と構築します。

ちなみに、この作業を chroot 環境でやってしまっても構わないのですが、ファイル数からして SDHC へコピーするのにものすごく時間がかかります。どっこいどっこいなのかもしれません。

  # apt-get install task-gnome \
  autofs nfs-utils sudo setuptool alsa-utils sndconfig readahead \
  rsync vixie-cron nmap \
  FD cups-pdf gnubiff hardinfo meld \
  wget lha unzip openssh-clients synaptic update-watch foomatic-ppd \
  firefox scim-anthy scim-bridge scim-bridge-gtk scim-input-pad \
  java-1.6.0-sun \
  NetworkManager-gnome \
  xorg-x11-server-Xorg xorg-x11-drivers \
  xorg-x11-xfs xorg-x11-xfs-utils xterm \
  xorg-x11-xsm xorg-x11-server-Xdmx xorg-x11-xdm xorg-x11-utils \
  xorg-x11-fonts* xorg-x11-jpfonts freefonts \
  TrueType-hanaminplus \
  totem-xine xine-lib-w32dll xine-lib-alsa \
  gnumeric gftp gimp pidgin w3m lynx \
  libnotify notification-daemon \
  perl-MIME-tools \
  samba-client \
  gnome-mount gnome-volume-manager sshfs-fuse gparted zenity vutils-gui
# preload wine TiMidity++ 

  Optional: Emacs
  # apt-get install emacs emacs23 anthy-el bogofilter starttls \
  html-helper-mode wl yatex tamago howm curl riece po-mode

  Optional: Compiz Fusion
  # apt-get install compiz compiz-fusion emerald fusion-icon \
  compiz-fusion-extras compiz-fusion-extras-gnome compiz-fusion-gnome glx-utils
  
  Optional: Wnn8 + scim-wnn + wnn7egg
  # apt-get install scim-honoka scim-honoka-* scim-wnn libwnn7 wnn7egg

  Optional: pteTeX
  # apt-get install makejvf mathabx psutils t1lib t1utils task-tetex \
  tetex-extra latex2html gv pdftk xpdf

ランレベルを 5 へ切り替えます。

  # vim /etc/inittab

########## BEGIN ##########
id:5:initdefault:
##########  END  ##########

NetworkManager へ切り替えます.

  # vim /sbin/chkconfig network off
  # vim /sbin/chkconfig wpa_supplicant off
  # vim /sbin/chkconfig NetworkManager on


以上で、とりあえず一段落です。

  # useradd -m -G wheel,users YOUR_ACCOUNT

などとして管理者ユーザーを追加すれば,これで最低限ネットブックとして使えます.

後は,cpufreq だとか,Eee PC 独自のカスタマイズが必要です。それはまたの機会に記事にします!

もしここまで作業をされた方がおられましたら,長々とお付き合い下さいましてありがとうございました.

お疲れ様でした m(_ _)m