我从事的行业监管非常严格。我负责创建安全启动链。也就是说,从启动开始,它需要启动到一个最小的 Linux 内核,该内核的 initramfs 有一个 Python init 脚本和额外的程序来执行完整性检查。一旦/如果完整性检查成功,用户就可以完成启动。
初始化脚本需要能够找到硬盘并将其传递给完整性检查器。但是,我无论如何也想不出如何正确安装根文件系统。
我对 Linux 还很陌生,所以我试着一边学习一边把事情拼凑起来。根据我收集的信息:
initramfs 是一个临时文件系统,用于安装真正的根文件系统(我相信通常是)。但是,当我进入 initramfs/dev/sda1
时,没有 sd* 文件/节点。我尝试实现一些 Python 代码来创建和节点,然后通过on创建文件系统,但这似乎不起作用。ls /dev
sda
sda1
mkfs
sda1
Hello! This is python
0 // result of mknod /dev/sda b 8 0
0 // result of mknod /dev/sda1 b 8 1
1 mke2fs 1.45.5 (07-Jan-2020)
Could not open /dev/sda1: No such device or address
1 df: cannot read table of mounted file systems: No such file or directory
Mounting proc...
mount /proc
0 // result of mount /proc
0 Filesystem 1K-blocks Used Available Use% Mounted on // result of df
rootfs 202828 202828 0 100% /
end of df
0 # Begin /etc/fstab // result of cat /etc/fstab
# file system mount-point type options dump fsck
# order
/dev/sda / ext4 defaults 1 1
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
devpts /dev/pts devpts gid=4,mode=620 0 0
shm /dev/shm tmpfs defaults 0 0
# End /etc/fstab
end of fstab
0 major minor #blocks name // result of cat /proc/partitions
11 0 1048575 sr0
end of /proc/partitions
2 device fs_type label mount point UUID // result of blkid -o list
end of blkid
Checking...
0
0
0 rootfs on / type rootfs (rw,size=202828k,nr_inodes=50707) // result of mount
proc on /proc type proc (rw,relatime)
Can't find platform/dev/sda // result of a function to find the necessary partition on disk
Halted.
答案1
确保你的最小内核已启用对 sda 的支持,或者你正在加载必要的内核模块以启用串行 ATA 支持和其上的文件系统(ext4)。