切腹のイラスト

Bootstrapping Gentoo

{
  date: "",
  category: "/unix-like"
}

GuixのFull-Source Bootstrapに感化されたのでやっていく。

Bootstrappable?

方針

hex0から諸々をbootstrapするシステムにはGuixの他にfosslinux/live-bootstrapなるものもあるようだが,なんとなくGuixを使っていく。

本当はgnu/packages/commencement.scmを参考に手作業でやっていきたかったが,これが結構しんどくて,TCCでbootstrapしたGCCがGCCをコンパイルできなかったときに萎えて諦めた。

Guix

Guixでemerge -e的なことをする方法がわからなかったので,更地の/gnu/storeからbootstrapしていくことにする。

まず,ディストロのパッケージを使うなり手打ちするなりでGuix 1.4.0を既存のシステムにインストールする。 公式ページからDLできるバイナリ/インストールスクリプトは既に出来上がった/gnu/storeを利用するので今回は使うことができない。 Guixのパッケージを提供しているディストロは,ぱっと見たところGentoo(nix-guix)・Debian・Alpineがあった。 AURのGuixは依存ライブラリのビルドが壊れていて使えなかった。 今後も便利に使うため,今回はAlpine on Dockerで作業する。 (Dockerといえば,今春からDocker Hubのpullのレート制限が10pull/時に厳しくなるらしい(cf. Usage and limits | Docker Docs)。 いくらなんでも厳しすぎやしませんかね……。)

そして初期設定をする。 といってもデフォルトで用いられるgit.savannah.gnu.orgが遅いのでCodebergにある公式ミラーを参照するようにするだけである。 guix/channels.scmを参考にやっていく。

% docker run -it alpine
% apk add guix
%