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.ebuild を python-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はなかなかいい感じでした。