1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

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

本帖由 漂亮的石头2021-07-06 发布。版面名称:新闻聚焦

  1. 漂亮的石头

    漂亮的石头 版主 管理成员

    注册:
    2012-02-10
    帖子:
    488,439
    赞:
    48
    用软盘启动Linux系统曾经很“家常便饭”,当然那都是90-00年代的事了。有年纪(bushi)的同学可能熟悉。但现在,即使你还有一张能用的3.5英寸软盘,可1.44MB的容量远远装不下一个现代linux内核,更不用说还得加上所有支持软件了。


    但奇人有招,波兰一位游戏开发小哥只用一张软盘就把现代Linux操作系统嵌进去了!​

    盘上还有几百KiB的剩余空间!而且用的都是最新“组件”,包括今年5.16号才发布的5.13.0-rc2版本的Linux内核。​

    [​IMG]

    一张软盘装下现代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​

    从菜单中选择以下选项:​

    [​IMG]

    将设置保存并退出,等待编译完成,最后内核将在arch/x86/boot/bzImage中构建,把它移到主目录。​

    3、 添加工具​

    如果没有工具,内核只会启动,无法执行任何操作。小哥使用BusyBox(最流行的轻量级工具之一),下载并解压:​

    wget https://busybox.net/downloads/busybox-1.33.1.tar.bz2​

    进入目录,进行启动配置:make allnoconfig​

    然后选择你想要的工具:make menuconfig​

    每个菜单项都显示各工具需占用多少KB,合理选择哦。​

    小哥的选择:​

    [​IMG]

    保存配置并退出,编译完成后_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​

    然后配置处理启动、退出和重启的Inittab文件&实际的初始化脚本,并使初始化脚本可执行,并将所有文件的所有者设置为root。(限于篇幅命令已省略,具体可查看文末链接[1])​

    最后,将此目录压缩为一个文件。​

    可通过从主目录运行QEMU(在GNU/Linux 平台上广泛使用的模拟处理器)对以上所有内容进行测试。​

    5、下面就是把这一切放进软盘了​

    创建指向内核和文件系统的Syslinux引导文件(boot file):​

    cat >> syslinux.cfg​

    LABEL linux​

    SAY [ BOOTING FLOPPINUX VERSION 0.1.0 ]​

    KERNEL bzImage​

    APPEND initrd=rootfs.cpio.gz​

    EOF​

    chmod +x syslinux.cfg​

    创建空软盘映像:​

    dd if=/dev/zero of=floppinux.img bs=1k count=1440​

    mkdosfs floppinux.img​

    syslinux --install floppinux.img​

    Mount it !并将syslinux、内核和文件系统复制到软盘映像:​

    sudo mount -o loop floppinux.img /mnt​

    sudo cp bzImage /mnt​

    sudo cp rootfs.cpio.gz /mnt​

    sudo cp syslinux.cfg /mnt​

    sudo umount /mnt​

    完成!​

    现在你就有了自己的发行版映像floppinux.img,你可以烧录到软盘,然后在真正的硬件上启动它了!​

    启动耗时1分多​

    小哥花了不到3分钟烧录成功,然后开始了首次启动:​

    成功!大概只花了1分多钟。​

    啊,从屏幕上看了小哥似乎不年轻,头发也秃得让人落泪。​

    小哥(老哥)表示,在这种裸机的现代硬件上,唯一能阻止启动速度的就是软驱的实际速度。它们最大原始速度为125KB/s。实际上可能会更慢。​

    下面是软盘占有空间总结,可以看到还剩272KiB。​

    [​IMG]

    网友热议:“92年的时候我可是需要两张5.25”的软盘”​

    硬件开源项目网站 Hackaday对小哥的创造进行了报道,并点评道:​

    当然,为了将最新的Linux内核和BusyBox构建到大约1MB的空间,必须做出一些让步,所以Floppinux肯定不是任何人所说的日常驱动程序。一旦系统启动,除了编写一些shell脚本之外,就没有什么可做的了。​

    即使你没有软盘,也值得跟着他的教程,在QEMU中启动映像,看看如何从零开始正式构建一个Linux系统。这事不仅可以用来吹牛,这样一个最小安装的所有组件如何组合在一起的知识,对学习嵌入式Linux设备也很有用。​

    而在Hacker News 论坛上很多人纷纷对小哥竖起大拇指,有人表示最令他惊讶的就是用的最新版的Linux内核和BusyBox。而且这对其他嵌入式系统也很有用。​

    [​IMG]

    有人说,92年的时候我可是需要两张5.25英寸的软盘来运行Linux!​

    [​IMG]

    开发者介绍​

    [​IMG]

    文中的主角“小哥”叫Krzysztof Jankowski,来自波兰,85后,是一名专业的游戏开发者和数字艺术家。​

    25年前就开始用QBASIC编程,喜欢FOSS、像素画(pixel art)、树莓派,、游戏引擎等。​

    去年,他创办了自己的公司Cyfrowy Nomada,与beffio签订了高级游戏引擎开发合同。他成为一名专业的游戏开发商的梦想成为现实。​
     
正在加载...