ふと思い立って数ヶ月前の話を書きます。嘘です。書く気があったのを放置してました。
HDD遅すぎて死にました。 死んだのでM.2のNVMe SSDを買いました。
なぜかアホみたいに安くて心配になる中華SSDです。 噂によるとApple様のお陰らしいのでAppleアンチですが有り難く頂戴しておきます。
きたわよ pic.twitter.com/xuLy2KJGOT
— ( ˘ω˘) (@xecual) 2023年4月24日
でGWにインストール。
設置! pic.twitter.com/ptNpUF1w7d
— ( ˘ω˘) (@xecual) 2023年4月29日
このPCにはすでにSSDとHDDが積まれていて( *1 の回で乗せたもの)、こんな感じの構成になっていました。
SSD (256GB) ├── ESP (512MB) ├── C: (Windows; 160GB、うち140GB使用) └── / (Gentoo Linux; 60GB、うち7.5GB使用) HDD (2TB) ├── D: (Windows; 1TB、うち520GB使用) ├── /usr (Gentoo Linux; 200GB、うち16GB使用) ├── /home (Gentoo Linux; 200GB、うち148GB使用) ├── /var (Gentoo Linux; 100GB、うち72GB使用) └── 不使用 200GB
なんというか計画性がありませんでした。特に/homeと/var。
ともあれ、起動速度をなんとかしたいのでESPは今回買ったSSDに乗せます。あと他のデータも全部今回のやつに乗せたいです(それはそう)。 ということでこれまでに使っていた人は一旦リストラして、足りなくなった時に予備的に使うことにしました。 パーティションは使用状況を見て次のとおりにしました。
SSD (2TB) ├── ESP (1GB) ├── C: (Windows; 1.5TB) └── / (Gentoo Linux; 500GB)
全部クローンとかするとそれはそれでめんどくさい(特にHDD)のでぜんぶクリーンインストールすることにしました。
#WindowsInstallBattle
普通にインストールして終わりです。
ちなみにログインする時に不定期でOffice買え!!!!!!!!!!!!(意訳)って言ってくるやつは設定の「通知」→「追加の設定」のチェックを外すといいらしいです。
これか!? 切ったhttps://t.co/wttodHkwid pic.twitter.com/WAZuQzhzkq
— ('-' э )Э (@xecual) 2023年5月19日
#GentooLinuxInstallBattle
3回以上やってるのでもうBattleって感じでもありません。
そのまま入れてもおもしろみがないのでなんかします。 白羽の矢が立ったのは以前見つけていたsystemd-homedで、Arch wikiの記事を眺めているとbtrfsという単語が目に入ったのでついでにファイルシステムもbtrfsにしてみることにしました*2。 といってもやることはext4とそんなに変わらなくて、Gentoo wikiの記事見ながらmkfs.btrfsしてカーネルコンフィグいじって終わりです。
あとはブートオーダーをいじります。 GRUBならよしなにしてくれるのかもしれませんが私はsystemd-boot派なので手動でなんとかします。 適当にいじってたらWindowsが4つに分裂しました。
Windowsが4つある pic.twitter.com/3puceZdvzC
— ('-' э )Э (@xecual) 2023年5月3日
この機会にざっくりbcdeditの概念をさらって完全に理解して解決しました。 エイリアスまわりとかは↓の記事がよかった気がします(メモにそう書いてあった)。
あとは普段通りにprofileを設定しt……
systemd/clang profile試してみていいか??? ちょっと気になる
— ('-' э )Э (@xecual) 2023年5月5日
なんか見つけてしまった。見つけてしまったのでやります。 どうせ最近はあんまり開発とかしてないので多少致命傷を負っても問題にはならないはずです(ラップトップもあるし)。 といいながら選んだのですがprofileって選んだらあとは勝手に動くようになってるもので(experimentalとはいえ)、特に問題ありませんでした。
カーネルのコンパイルも問題なくできて動いています。
LLVM=1
とLLVM_IAS=1
をつけること*3だけ忘れないようにしないといけませんね(そうじゃないとgccでコンパイルしちゃうので)。
その後
しばらくの間は旧ディスクも常時接続しておいて設定等を参照したくなった時にいつでも見られるようにしていましたが、2週間程度で外し、基本的にSSD1枚だけで繋ぐようにしました。 こうなると起動も爆速でとても快適です。
clangを使うのに合わせてリンカをmoldにしたり、Thin-LTO*4を有効化しようとするといろいろコケて、clangじゃなくてgccならいいのか!?moldじゃなくてlldならいいのか!?みたいな(しょうもない)悩みを爆発させていたのですが、私の設定が悪かった(CFLAGSだけじゃなくLDFLAGSにも-flto=thin
をつけるべきだった)ようです。
実際build.log見てるとそうせざるを得ないパッケージもありました。
yaneuraou.yaneu.com ↑背中を押してくれたブログ
ということで$LDFLAGS
がだいぶ長くなりました。
COMMON_FLAGS="-O2 -pipe -flto=thin" LDFLAGS="-fuse-ld=mold -flto=thin -rtlib=compiler-rt -unwindlib=libunwind -Wl,--thinlto-cache-dir=/var/cache/thinlto -Wl,-O1 -Wl,--as-needed"
不具合的なやつとか
- GCCは普通に入ったんですがなぜかアプデができません(install phaseでコケます)。これはマジで原因がわからんので困っています。
- build.logをそのへんに貼っつけようとしたら60万行あったのでやめました。
- Neovimをターミナルで開いてると
libunwind: __unw_add_dynamic_fde: bad fde: FDE is really a CIE
とか出ます。これは多分私が悪いのでなんとかします。
たすけてもらえると私がたすかります。
*1:https://xecua.hatenablog.com/entry/2020/12/20/204000
*2:LUKSという単語も目に入りましたがなんとなく億劫でやめました。