Linux|波兰极客用一张软盘运行Linux系统:用的还是最新内核

用软盘启动Linux系统曾经很“家常便饭” , 当然那都是90-00年代的事了 。
有年纪(bushi)的同学可能熟悉 。
但现在 , 即使你还有一张能用的3.5英寸软盘 , 可1.44MB的容量远远装不下一个现代linux内核 , 更不用说还得加上所有支持软件了 。
但奇人有招 , 波兰一位游戏开发小哥只用一张软盘就把现代Linux操作系统嵌进去了!
盘上还有几百KiB的剩余空间!而且用的都是最新“组件” , 包括今年5.16号才发布的5.13.0-rc2版本的Linux内核 。
Linux|波兰极客用一张软盘运行Linux系统:用的还是最新内核
文章图片
一张软盘装下现代Linux系统
小哥把这个系统命名为Floppinux , 在它的官网上带大家走了整个过程 , 包括从下拉(pull down)、编译源代码到创建最终的磁盘映像的所有命令 。
而之所以做这么一件事情 , 是因为小哥觉得自己用了好多年Linux , 也用过很多Live-CD(能够在不安装到硬盘的前提下 , 体验Linux操作系统的东西) 。
但他对其背后的基本原理知之甚少 , 所以决定动手研究一下 。
小哥的第一个目标是运行Nomad Diskmag程序 。
Diskmag这个远古东西不知道有人了解吗?
它的全称叫disk magazine , 也就是磁盘杂志 , 是一种在上世纪80-90年代 , 以软盘形式发行的电子杂志 。90年代后就被在线出版物所取代了 。
小哥已经用bash脚本搞定了前端界面 , 就差封面、目录和cat每个文件的正文了 。
为了运行他写的脚本 , 需要一个可用的Linux 发行版 , 也就是一个可以在软盘上运行的系统 。
动手!
因为在64位系统上编译32位代码有点棘手 。为了更简单 , 小哥用他的32位CPU的旧笔记本来做这一切 。
可以使用32位系统的VirtualBox , 如果要用64位 , 添加命令“ARCH=x86” , 例如:make ARCH=x86 tinyconfig 。
下面就是把现代Linux操作系统装进一张1.44MB软盘的大概过程:
1、创建并进入你想要保存文件的目录
2、配置和构建定制内核
使用最新Linux内核(版本5.13.0-rc2):
git clone --depth=1 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
进行最小配置:make tinyconfig
添加额外配置:make menuconfig
从菜单中选择以下选项:
Linux|波兰极客用一张软盘运行Linux系统:用的还是最新内核
文章图片
将设置保存并退出 , 等待编译完成 , 最后内核将在arch/x86/boot/bzImage中构建 , 把它移到主目录 。
3、 添加工具
如果没有工具 , 内核只会启动 , 无法执行任何操作 。小哥使用BusyBox(最流行的轻量级工具之一) , 下载并解压:
wget https://busybox.net/downloads/busybox-1.33.1.tar.bz2
进入目录 , 进行启动配置:make allnoconfig
然后选择你想要的工具:make menuconfig
每个菜单项都显示各工具需占用多少KB , 合理选择哦 。
小哥的选择:
Linux|波兰极客用一张软盘运行Linux系统:用的还是最新内核
文章图片
保存配置并退出 , 编译完成后_install目录下会创建一个包含所有文件的文件系统 , 把它移到主目录 。
4、添加目录结构
有了内核和基本工具 , 仍然需要一些额外的目录结构:
cd ../filesystem
mkdir -pv {dev,proc,etc/init.d,sys,tmp}
sudo mknod dev/console c 5 1
sudo mknod dev/null c 1 3
接下来创建几个配置文件 , 启动后显示欢迎消息:
cat >> welcome << EOF
Some welcome text...
EOF
然后配置处理启动、退出和重启的Inittab文件&实际的初始化脚本 , 并使初始化脚本可执行 , 并将所有文件的所有者设置为root 。(限于篇幅命令已省略 , 具体可查看文末链接[1])
最后 , 将此目录压缩为一个文件 。
可通过从主目录运行QEMU(在GNU/Linux 平台上广泛使用的模拟处理器)对以上所有内容进行测试 。
5、下面就是把这一切放进软盘了
创建指向内核和文件系统的Syslinux引导文件(boot file):


推荐阅读