流行というのは、何十年周期で回ってくるそうですね。
PowerBook G4にgentooを導入するーなんて記事を書いてから約3年、
当然の時代の流れとでも言うんでしょうか、
なんだか(日本語以外の)記事や動画が充実してまいりましたので、
なんかもう試行錯誤しなくてもいいんじゃないか、
というところまで来ております。
早く本題に入らないのは私の悪い癖ですね…。
Apple iBook G4(Mid 2005)/PowerBook G4 (Alminium-Rev B, 15"/17")、
これにGentoo Linuxを入れてみました。
尚、この記事ですが、早い話が私のための備忘録です。
出力結果は省略しています。
Qiitaじゃないんでね…HTMLタグ手打ちなんで許して…
また、
所々面倒であったり、
もう導入してから数ヶ月経ったために失念していたりで、
抜けている箇所も多々あるかと思いますので、
これを参考に導入なさるかたは、
先にハンドブックを熟読することをお勧めします:
------------
■ ブートの方法
-> CDブートとUSBディスクブートが可能です。
▼ CDからのブート
予め、Minimal installation CDを作成しておきます。
Cキーを押下しながらiBook G4の電源を投入し、
すぐにMinimal installation CDを挿入します。
GRUBのブート選択画面で、Boot LiveCD (kernel: ppc32)を選択、
そのまま起動します。
▼ USBディスクからのブート
rufus等を使って、Minimal installation CDを用意したUSBディスクに書き込みます。
USBディスクを挿入し、
alt+command+O+Fキーを押下しながらiBook G4の電源を投入します。
Open Firmwareの画面が表示されたら、キーから手を放します。
dev /aliases .properties(版数によってはdevaliasでも可)と入力して実行し、
出力された一覧からudを探します。
-> udがある機種の場合
load ud:,\System\Library\CoreServices\grub.elf を実行、
go を実行します。
-> udがない機種の場合
dev usb0 lsを実行
/disk@1 があれば、
dev usb0、dev disk@1と実行し、pwdを実行してデバイス情報を表示させます。
筆者の環境では、/pci@f2000000/usb@1b/disk@1 ok となりました。
/disk@1がなければ、dev usb1 lsを実行し、上記操作をします。
load /pci@f2000000/usb@1b/disk@1:,\System\Library\CoreServices\grub.elf を実行、
go を実行します。
CDブートより読み込みに時間が掛かりますが、
待つとCD同様GRUBの選択画面が表示されます。
GRUBのブート選択画面で、Boot LiveCD (kernel: ppc32)を選択します。
■ ネットワークへの接続
■ mac-fdiskによる区画作成
1MiB=2048ブロック
/dev/sda2 Apple bootstrap 1600 @ 64 <- b,2p
/dev/sda3 /boot 1310720 @ 1664 <- c,3p,1310720(640MiB確保
/dev/sda4 / 83230720 @ 1312384 <- c,4p,4p
■ 区画の初期化とマウント
livecd ~ # mkfs.ext4 /dev/sda4
livecd ~ # mount /dev/sda4 /mnt/gentoo
livecd ~ # cd /mnt/gentoo
livecd /mnt/gentoo #
■ スワップファイル(4GiB)の作成
livecd /mnt/gentoo # chmod 600 swapfile
livecd /mnt/gentoo # mkswap swapfile
livecd /mnt/gentoo # swapon swapfile
■ stage tarballのダウンロードと展開
適宜ファイル名*を変更してください:
■ コンパイルオプションの設定
▼ /mnt/gentoo/etc/portage/make.conf
筆者の環境はこんな感じです:
CFLAGS="-O2 -pipe -mcpu=7450 -mtune=7450 -maltivec -mabi=altivec -fno-strict-aliasing"
MAKEOPTS="-j1"
NINJAOPTS="-j1"
USE="X -wayland gtk opengl xfce -gnome -kde elogind -systemd dbus acpi mtp networkmanager bluetooth alsa pulseaudio cups fcitx5"
L10N="ja"
CPU_FLAGS_PPC="altivec"
ACCEPT_KEYWORDS="ppc"
INPUT_DEVICES="libinput synaptics"
VIDEO_CARDS="ati radeon r300"
GRUB_PLATFORMS="ieee1275"
CONFIG_PROTECTやACCEPT_LICENSEは…各自におまかせします(汗
■ ミラーの選択
livecd /mnt/gentoo # mkdir -p etc/portage/repos.conf
livecd /mnt/gentoo # cp usr/share/portage/config/repos.conf etc/portage/repos.conf/gentoo.conf
■ DNS情報の複写
■ 必要なファイルシステムのマウント
livecd /mnt/gentoo # mount --rbind /sys /mnt/gentoo/sys
livecd /mnt/gentoo # mount --make-rslave /mnt/gentoo/sys
livecd /mnt/gentoo # mount --rbind /dev /mnt/gentoo/dev
livecd /mnt/gentoo # mount --make-rslave /mnt/gentoo/dev
livecd /mnt/gentoo # mount --bind /run /mnt/gentoo/run
livecd /mnt/gentoo # mount --make-slave /mnt/gentoo/run
■ chroot
livecd / # source /etc/profile
livecd / # export PS1="(chroot) ${PS1}"
(chroot) livecd / # mount /dev/sda3 /boot
■ スナップショットの導入
■ プロファイル選択
適宜プロファイル*を変更してください:
■ タイムゾーンの選択
(chroot) livecd / # emerge --config sys-libs/timezone-data
■ ロケールの設定
▼ /etc/locale.gen
(chroot) livecd / # env-update && source /etc/profile && export PS1="(chroot) ${PS1}"
■ Gentoo-sourcesの導入
参考にしたい.configファイルがあるなら、
それに合ったバージョンのソースを導入します。
gentooのppcフォーラムにいいスレッドがありますよ…
▼ /etc/fstab
ここでは便宜上ブロック名にしていますが、UUID指定でいいと思います:
使いたい.configがあるなら、
/usr/src/linux/arch/powerpc/configに
例えばg4_defconfigというファイル名で複写後、
make g4_defconfigを実行します。
追加すべきものや外すべきもの、
追加したいものや外したいものを選択していきます。
追加すべきものとは、
Graphics support --->
<M> ATI Radeon
Device Drivers --->
Generic Driver Options --->
Firmware loader --->
(radeon/R300_cp.bin) Build named firmware blobs into the kernel binary
Device Drivers --->
-*- Network device support --->
[*] Wireless LAN --->
[*] Broadcom devices
<M> Broadcom 43xx wireless support (mac80211 stack)
外すべきものは、
ATI用Framebufferの無効化
Graphics support --->
Frame buffer Devices --->
<*> Support for frame buffer devices --->
< > ATI Radeon display support
追加したいものは、例えばzramモジュールの有効化など。
外したいものは…なんでしょね。
できた.configファイルを、genkernelで扱えるように、どこかに複写します。
(chroot) livecd /usr/src/linux # genkernel --no-mrproper --no-clean --kernel-config=/usr/src/linux/.config.bak all
■ ネットワーク関連の設定
▼ /etc/conf.d/hostname
▼ /etc/conf.d/net
▼ /etc/hosts
■ rootパスワードの設定
■ キーボードレイアウト設定
▼ /etc/conf.d/keymaps
■ ハンドブックで指定されている、追加で導入するもの
(chroot) livecd / # rc-update add sysklogd default
(chroot) livecd / # rc-update add cronie default
■ 扱いたいファイルシステムがあるなら
■ ネットワーク関連のパッケージ導入
■ zram-initの導入
▼ /etc/conf.d/zram-init
圧縮率結構いいっていうんですが…
1/2弱と仮定して、必要な箇所を編集、
既定で記述のある、type1以下は削除します。
size0=2048
algo0=zstd
■ サービスの有効化
(chroot) livecd / # rc-update add bluetooth default
(chroot) livecd / # rc-update add zram-init default
(chroot) livecd / # rc-update add cupsd default
(chroot) livecd / # rc-update add elogind boot
■ 読み込むモジュールの指定
▼ /etc/modules-load.d/ppc.conf
■ ユーザの作成とパスワードの設定
(chroot) livecd / # passwd ユーザ名
■ ブートローダ関係の作業
(chroot) livecd / # mkdir -p /mnt/bootstrap
(chroot) livecd / # mount -t hfs /dev/sda2 /mnt/bootstrap
(chroot) livecd / # grub-install --macppc-directory=/mnt/bootstrap
(chroot) livecd / # umount /dev/sda2
(chroot) livecd / # hattrib -t tbxi -c UNIX :System:Library:CoreServices:BootX
(chroot) livecd / # hattrib -b :System:Library:CoreServices
(chroot) livecd / # humount
■ 再起動
livecd /mnt/gentoo # cd
livecd ~ # umount -l /mnt/gentoo/dev/{shm,pts,}
livecd ~ # umount -R /mnt/gentoo
livecd ~ # reboot
お疲れさまでした。
旧式のPCでこれをやると、まあひどく時間がかかるわけで…
正直、genkernelやらなくても、
今はカーネルイメージをそのまま配布していますので、
それを使うのもひとつ手だと思います。
動くみたいですよ。
これでちゃんと起動して、ログインができるようなら、
デスクトップ環境を揃えられるというわけです。
先に分散コンパイルの準備をしたほうがいいかもしれませんが…
どっちの記事を先に書こうかしら。
------------
▶ 分散コンパイル