Tyanboot
2022-05-14 05:29:11 +08:00
本质上还是包管理,你只要有了一个包管理器,剩下的就是编译和打包其他的组件了。
包管理器可以自己写,或者直接用现成的,比如 msys2 就直接用了 pacman 。
然后选一个 init ,用 openrc 或者 systemd 都行; bootloader 也选一个,各种什么 grub2 ,systemd-boot ,rEFInd 之类的,也可以不用 bootloader ,直接裸跑内核。
内核什么的现在发行版的做法都是,管他用不用的上,各种新的老的驱动统统勾选编译,去掉一些确实没人用的驱动,基本上 x86_64-defconfig 我电脑三分钟编译完,arch 的默认配置编译一次一小时,你就知道带了多少驱动了,基本完全不用担心兼容性。
内核的 initramfs 也有现成的方案,mkinitcpio, dracut, booster 之类的,选一个看顺眼的。
最后就是准备一个安装器,自己写一个,功能无非就是联网,分区,照着上面选好的几个必要组件安装这些包,至于怎么装,照着 Filesystem Hierarchy Standard 把文件扔进去就行了,设置用户,设置 bootloader 之类的。
等你这么一折腾,就发现最关键的就是包管理器怎么搞,安装器都是可有可无的,你看 arch 都没有这些花里胡哨的,直接调 pacman 给对应分区安装一堆包就完事了。按照上面的逻辑,arch 发行版干脆叫 pacman 发行版算了,毕竟安装过程全手动,整个过程不可替代的只有 pacman 包管理器。
最后的最后 iso 就更简单了,就是一个 livecd 环境,主流的方案也就是 squashfs+cow ,随便一搜一大把方案,实在不行解压一个 arch livecd 的 initramfs 看一下 hooks 就什么都知道了。