Finally, The Installer has come back to Gentoo Linux !!!

ついに、インストーラ様がGentoo Linuxに帰ってきたぞ!!!

うそです。まだ帰ってきていませんでした。GSoC 2011のプロジェクトとして、Wicotr W. Brodlo氏がAnacondaベースのインストーラを作成しており、どうやら「取り敢えず起動可能なGentoo Linuxがインストールできる」段階までは完成したそうなので、試してみました。

Anaconda入りLiveDVDの作成。

Anaconda InstallerはLiveDVD上でemergeして使うこともできますが、いくつか修正しなければ動かないところがありましたので、今回はAnaconda Installer導入済みのLiveDVDを作ることにしました。

まずGentoo LiveDVD 11.2のISOイメージをマウントして、更にそこに含まれるSquashFSもマウントします。そしてマウントしたSquashFSを丸ごとどこかにコピーします。

# mount -o loop /path/to/livedvd.iso /mnt/cdrom
# mount -o loop /mnt/cdrom/image.squashfs /mnt/image
# cp -a /mnt/image /path/to/squashfs.image

これはLiveDVD環境のルートファイルシステムで、完全なGentoo環境です。よってchrootできます。

# mount -t proc proc /path/to/squashfs.image/proc
# mount --rbind /dev /path/to/squashfs.image/dev
# mount --rbind /sys /path/to/squashfs.image/sys
# cp /etc/resolv.conf /path/to/squashfs.image/etc
# chroot /path/to/squashfs.image
# PS1="(CHROOT)${PS1}"

Anaconda Installerは途中でsetlocaleするので、インストールに使う予定のLocale dataが存在する必要があります。

(CHROOT)# nano -w /etc/locale.gen
(CHROOT)# locale-gen
(CHROOT)# eselect locale set en_US.utf8

anaconda-overlayを修正する。

anaconda-overlayのツリーをcloneします。

(CHROOT)# cd / &&  git clone git://git.overlays.gentoo.org/proj/anaconda-overlay.git

このままでは動かないので、幾つか修正しなければなりません。取り敢えず動けばよかろうの姿勢で、ごく適当に。

sys-boot/grub/grub-1.99.ebuild
DEPENDにsys-devel/bisonを追加する。
dev-python/python-ethtool/python-ethtool-0.3.ebuildpython-ethtool-0.7.ebuild にrenameし、SRC_URIを以下のように変更。
SRC_URI="http://dsommers.fedorapeople.org/python-ethtool/${P}.tar.bz2"
app-admin/anaconda/anaconda-9999.ebuild はLSELINUX_VER="2.0.94" に変更。更に以下のようなパッチを作成して適用させる。

--- gentoo/utils.py.orig        2011-09-02 16:46:40.113706669 +0900
+++ gentoo/utils.py     2011-09-02 16:50:05.040144791 +0900
@@ -826,10 +826,14 @@
         self._progress.set_fraction(0.0)
         self._progress.set_text(_("Installing configuration helpers"))
         os.environ["USE"] = "multislot policykit -gtk -X -gpm -truetype"
-        os.mkdir(self._root+"/etc/portage")
+        if not os.path.exists(self._root+"/etc/portage"):
+            os.mkdir(self._root+"/etc/portage")
         keywordsf = open(self._root+"/etc/portage/package.keywords", "w")
         keywordsf.write("dev-python/rhpl ~amd64 ~x86\nsys-boot/grub **\nsys-boot/os-prober ~amd64 ~x86")
         keywordsf.close()
+        unmaskf = open(self._root+"/etc/portage/package.unmask", "w")
+        unmaskf.write("sys-boot/grub")
+        unmaskf.close()
         self._progress.set_fraction(0.3)
         self.install_package("-1 =grub-1.99")
         self._progress.set_fraction(0.6)

それぞれmanifestを再作成し、anaconda-overlayの修正は完了です。

anacondaをemergeする。

(CHROOT)# nano -w /etc/make.conf
PORTDIR_OVERLAY="/anaconda-overlay"
(CHROOT)# emerge --verbose --autounmask-write anaconda
(CHROOT)# dispatch-conf
(CHROOT)# emerge --verbose --keep-going anaconda

また、dev-python/pypartedも入れ直さないと動きません。

(CHROOT)# emerge dev-python/pyparted

これで全て通ったかどうかはっきりとは覚えていないので、何かトラブっていたらエラーメッセージを見てどうにかしたりしてください。

LiveDVDのカーネルを作りなおす。

Gentoo LiveDVD 11.2のKernelは、なんとCONFIG_RTC_CLASS is not setというびっくり設定でビルドされています。この結果、hwclockコマンドが動きません。ということでカーネルも作り直します。色々いじるとinitramfsも造り直さなければならなくなって面倒なので、該当部分だけ修正します。

(CHROOT)# cd /usr/src/linux
(CHROOT)# make menuconfig
 Device Drivers  --->
     <*> Real Time Clock  ---> 
         (rtc0)  RTC used to set the system time
         [*]   /sys/class/rtc/rtcN (sysfs)
         [*]   /proc/driver/rtc (procfs for rtc0)
         [*]   /dev/rtcN (character devices)
         <*>   PC-style 'CMOS'
(CHROOT)# make
(CHROOT)# exit

これでchroot環境での作業は終わりです。LiveDVDを作り直しましょう。

LiveDVDのSquashFSとKernelを入れ替える。

まずはSquashFSを作ります。

# mksquashfs /path/to/squashfs.image /path/to/image.squashfs

先ほど作ったカーネルも取り出しておきます。

# cp /path/to/squashfs.image/usr/src/linux/arch/x86_64/boot/bzImage /path/to/gentoo

そしてこの2つをそれぞれGentoo LiveDVDのISOイメージファイル内の/image.squashfsと/boot/gentooと入れ替え、新しいISOイメージファイルを作成します。ISOイメージファイルの作成には色々と手段がありますが、app-cdr/isomasterはなかなかいい感じでした。

できあがり!

これでAnaconda Gentoo Installer入りのLiveDVDが完成しました。起動してX上の端末エミュレータにliveinstと打ち込めばインストーラが開始します。実際に動かしてどうだったのかはまた今度。