Gentoo Systemd Boot
Contents
前言
为啥要systemd boot,前一段时间在搞secure boot的时候发现grub带的字体啥的没办法被签名没办法正常去搞secure boot,看了一下其他的bootloader发现systemd已经支持直接引导了。 这篇就记录一下systemd boot的注意点。
分区
分区 主要分为两个一个是esp分区 一个是/ 用luks加密:
mkfs.fat -F32 /dev/nvme0n1p1
cryptsetup luksFormat /dev/nvme0n1p2
cryptsetup luksOpen /dev/nvme0n1p2 system
mkfs.ext4 -i 8192 /dev/mapper/system
挂载分区:
mkdir -pv /mnt/gentoo
mount /dev/mapper/system /mnt/gentoo/
mkdir -pv /mnt/gentoo/boot
mount /dev/nvme0n1p1 /mnt/gentoo/boot/
用gdisk去修改esp分区的值
gdisk /dev/nvme0n1
需要将esp分区的值改为ef00。
systemd use
systemd 的use:
sys-apps/systemd boot
重新构建systemd
emerge --oneshot systemd
systemd boot 配置
安装systemd boot
bootctl install
用genkernel生成带有ssh支持的initramfs
mkdir -pv /etc/dropbear
vi /etc/dropbear/authorized_keys # 加入自己的ssh公钥
生成initramfs:
genkernel --luks --ssh initramfs
配置具体的引导信息:
/boot/loader/entries/gentoo.conf
内容如下:
# Boot Loader Specification type#1 entry
# File created by /usr/lib/kernel/install.d/90-loaderentry.install (systemd 254)
title Gentoo Linux
options crypt_root=UUID=e6346fc6-2eb9-4cf2-a327-012b38a5a28b root=/dev/mapper/root rw root_trim=yes ip=dhcp dosshd gk.sshd.port=2222
linux /linux
initrd /initramfs
crypt_root
后续跟着的是luks所在的分区UUID,注意不是解锁之后的UUIDdosshd
在initramfs中启动一个sshd守护进程root
解锁之后root所在的位置ip
这里使用dhcp分配对应的ipgk.sshd.port=2222
sshd守护进程的端口
入口的配置
/boot/loader/loader.conf
内容如下:
default gentoo
console-mode max
到这里就算是配置完成了,重启之后就可以看到会自动分配ip和等待解锁luks,可以用远程ssh进行解锁也可以直接输入密码进行解锁。
如下图所示:
TODO
- 和Secure Boot结合起来能够让其直接自动签名更新之后的内核