我正在考虑使用运行 Linux 的单板计算机(RaspberryPi、CubieTruck 等)为项目设计一个系统。
我的主要要求是将启动的 SD 卡的复杂性保持在最低限度 - 我的愿景是这样的:
/
boot.txt
settings.txt # DHCP /ifconfig data etc.
error.log # optional
OS.tar.gz # the OS Omni-file
Kernel.img # If it can't fit with the Omni-file
操作系统不必修改其文件,某些错误日志可能除外。
到目前为止我最好的猜测是使用实际的 ISO 启动易启动,但布局还不够简单(而且看起来有点倒退)。
有没有任何项目/启动选项可以帮助我实现我的目标?
更新
我发现关于循环设备,这看起来像我需要的 - 文件内的 FS。
我设法格式化并安装它,例如:
losetup /dev/loop0 /tmp/disk.img
mkfs -t ext2 /dev/loop0
losetup -d /dev/loop0
mkdir /tmp/disk-mount
mount /tmp/disk.img /tmp/disk-mount -o loop
touch /tmp/disk-mount/bla
umount /tmp/disk-mount
有没有从这样的设备启动的文档?
答案1
考虑使用构建根为了创建您的目标根文件系统。该项目利用 Linux 内核配置和构建整个嵌入式系统文件系统的工作流程。
答案2
如果我理解正确的话,您需要一个工具来构建自定义根文件系统。我使用过的工具之一是http://www.ptxdist.org/software/ptxdist/index_en.html 但是我不知道设置引导加载程序在 Ri 上运行是否是一项简单的任务。
另外,请考虑您在示例中定义的某些文件需要某种形式的守护程序来填充它们,并且该守护程序是位于文件系统层次结构中某处的二进制文件。
因此,当您说The OS doesn't have to modify its files, except possibly for some error log.
修改它的应用程序可能是位于 rootfs 上某处的用户空间守护进程(例如/usr/bin
)。
答案3
遵循有关使用循环设备的次要(“更新”)问题:尽管我熟悉启动流程,但您必须首先启动到初始 ramdisk (initrd) - 嵌入在内核映像中的最小根 FS 映像,其中包含只需足够的内容即可将主根 FS 挂载为循环设备。安装主根 FS 后,从 initrd“chroot”到完整(循环)安装的根映像。