GentooInstallBattle した(`・ω・´)
Gentoo Linux を VirtualBox 上にインストールした
来年から研究室でなんのOSを使おうかな〜〜と考えたときに,Linux にしようかと思いました。せっかくならキワモノを使いたいということで,練習のために VM に Gentoo をインストールしました(`・ω・´)
じゃじゃーん(`・ω・´)
構成
- Grub
- Dm-crypt を用いて root を暗号化
- Genkernel
- Systemd
- i3wm
覚えたこと・詰まったこと
Arch Linux のインストールとそんなに変わらなかった
Arch Linux をインストールすることには慣れていましたが,手順はだいたいいっしょだなあということを確認できました。違いは GCC のパラメータを設定することくらいです。とくに今回は OpenRC ではなく Systemd を使ったため,本当に違いを感じませんでした。OpenRC と Systemd のどちらを使うかまだ決めていませんが,おそらく Systemd を使うことになるでしょう。時代の流れだもんね……(`・ω・´)
Grub にカーネルパラメータを渡せない
Dm-crypt で root を暗号化する際には,カーネルパラメータで root が暗号化されていることを教えなければなりません。具体的には,
cryptdevice=/dev/sdaX:cryptroot root=/dev/mapper/cryptroot
を渡します。
しかしこれが何故かうまくいきません。
原因はおそらく grub のインストール方法にあると思います。今回のインストールでは --removable
フラグを与えて,
# grub-install --target=x86_64-efi --efi-directory=/boot --removable
としてインストールしました。うろ覚えですが VirtualBox を EFI boot するとき,ブートローダーのパスは/EFI/BOOT/bootx64.efi
しか受け付けてくれなかったはずです。Grub の設定は従来どおりに
# grub-mkconfig -o /boot/grub/grub.cfg
としてしまったため,どうやら grub.cfg
を読みに行かなかったようです。いま書いていて気づいた……。
いままで systemd-boot ばかりつかっていたので grub よくわからん…….。あとで man 読みます……。
とはいえブートに失敗しても grub の rescue shell が起動します。Shell に入って
# cryptsetup open /dev/sdaX cryptroot
とすることでブートできるので,多少めんどいだけでどうにかなります(`・ω・´)
<追記>
今回カーネルにパラメータを渡せなかったのは genkernel を使っていたからでした。
Genkernel の man ページを見ると initramfs を使った場合のブートの仕方が書いてありました。
なるほど感(`・ω・´)
カーネルのビルド
今回はカーネルの設定までやっていたら日が暮れてしまうので,genkernel でカーネルビルドすることにしました。Dm-crypt で root を暗号化している都合上 initramfs も作成しなければならなく,genkernel にまかせてしまえば一石二鳥です。やったね!
Genkernel を実行する際には --luks
オプションを渡し忘れないようにしましょう。
本番では自力でカーネルビルドしてみようかな〜〜と思っています。でもアップデートがめんどくさそうですね。みなさんどうしてるんだろ(`・ω・´)
Systemd
Gentoo の wiki は OpenRC をデフォルトとして扱っているので,systemd を使う際は気をつけないといけないなと思いました。一方 Arch Linux は systemd を使っているため,情報が豊富です。インストールの際は Gentoo の wiki と Arch の wiki を交互に見るようになりますね(`・ω・´)
i3wm
流石に CUI で研究生活を送るわけには行かないので i3wm を導入することにしました。Gnome いれるの Gentoo ではきつそう……。Gentoo では Arch と違って dmenu や i3bar がついて来ません。せっかくなので polybar をインストールしてみました(`・ω・´)
dmenu がセグフォで落ちる
dmenu に文字を打ち込もうと思うと突然 dmenu が消えます。なんで?? と思ってログを見ていると,どうやらセグフォで落ちてしまうようです。困った。 ということでググったら情報が出てきました。
どうやら locale が変わったところだと落ちるようです。なんで??
仕方がないので dmenu が実行されるときだけ locale を変更します。今回は i3wm を使っているので,~/.config/i3/config
の dmenu のところを
exec LC_ALL=en_US.UTF-8 dmenu_run
にします。これで動いて一安心です(`・ω・´)
USE フラグの立て忘れに注意
ターミナルエミュレータをなんか入れないといけないので,とりあえず urxvt をインストールしました。いざ開いてみると文字化けします。困った。
原因がわからずに 1 時間くらい溶かしました。
そこで,$ equery u rxvt-unicode
で USE フラグを確認すると,xft
のフラグを立て忘れていました。どうりでフォントがおかしくなるわけだ……。フラグを立て直してビルドし直したら無事にフォントがきれいに表示されました。めでたしめでたし(`・ω・´)
emerge --oneshot
が便利
Gentoo をインストールした記念に neofetch のスクショを撮るのが恒例だそうです。でも neofetch のスクショとったらもう neofetch 使わなくないですか……?
そんなときは --oneshot
をつけるのが便利です! --oneshot
をつけると neofetch がインストールされたことが world に記録されないため,次回の emerge --depclean
できれいに消えます。Gentoo を使う人はきっと潔癖なので,こういうオプションが生まれたのでしょう(`・ω・´)
Arch よりは安定してそう
Arch よりも Gentoo のほうがカーネルのバージョンが古いです。なんとなくカーネルパニックになりにくそうな気がしています。気のせいかな? まあ lts を使えという話ではあると思います(`・ω・´)
感想
一通りやってみて,意外とやっていけるのではないかという気がしてきました(`・ω・´)