前言
在系统管理和开发领域,轻量级的操作系统不仅可以提高效率,还能为各种场景提供极大的灵活性。受到 Arch Linux 安装镜像的启发,我基于 Debian 12 高度定制和构建了一个完全在内存中运行的操作系统,命名为 ramDebian。ramDebian 是一个运行于内存中的轻量级操作系统,预装了 debootstrap 和 arch-install-scripts,使得用户可以深入了解和手动构建自己的 Debian 或 Arch Linux 系统。无论你是 Linux 的老手还是新手,ramDebian 都能为你提供一个独特且有用的体验。
ramDebian的四大特点
1. 完全运行于内存中。 ramDebian的最大特色之一就是它完全运行于内存中。这意味着你可以在不影响硬盘数据的情况下进行各种操作,比如格式化硬盘。这种特性对于系统管理员或者需要临时环境进行测试的开发者尤为有用,因为它提供了一个无后顾之忧的实验环境。
2. 灵活的系统构建环境。 ramDebian 提供了一个灵活的环境,预装了关键工具如 debootstrap 和 arch-install-scripts,用户可以手动一步步构建自己的操作系统,选择所需的功能、软件和模块,并剔除不必要的部分。这不仅有助于加深对Linux系统的理解,还能让用户体验到定制系统的乐趣和成就感。
3.体积小巧。 ramDebian 的 ISO 文件大小仅为 160 MB,并且可以在 512 MB 的内存中顺利运行,使得它在资源有限的环境中也能高效运行。
4.快速体验 Debian 系统。 对于从未接触过Debian系统的用户,ramDebian是一个理想的起点。通过一个轻量级、内存运行的系统,用户可以快速体验Debian的环境和特点,而无需担心破坏现有的系统配置。这种灵活性使得ramDebian成为教育、测试和演示的优秀选择。
实现细节
在 ramDebian 中,核心的文件系统被打包为 debrootfs.squashfs,采用了 SquashFS 文件系统。SquashFS 是一种只读的、高度压缩的文件系统,非常适合嵌入式系统和 Live CD 的使用需求。此外,ramDebian 使用了我自己编译的内核,精简了大部分不必要的模块,使系统更加轻量化和高效。
1.挂载和配置过程
1.1 挂载 run 目录到 tmpfs:
为了使系统完全在内存中运行,首先将 run 目录挂载到 tmpfs(一种基于内存的文件系统)上。这一步确保了 run 目录中的数据不会依赖物理硬盘,而是完全驻留在内存中。
1.2. 加载 debrootfs.squashfs:
从 ISO 镜像中复制 debrootfs.squashfs 文件到内存中的 /run/copytoram/ 目录,并将其挂载到 /run/debrootfs。此时,系统可以直接从内存中读取并运行文件系统的内容。
1.3. 使用 OverlayFS:
为了提供一个可写的文件系统,ramDebian 使用了 OverlayFS,将只读的 SquashFS 与一个可写的层结合起来。这使得系统能够在保持只读文件系统完整性的同时,允许用户对文件系统进行修改。
losetup /dev/loop1 /run/copytoram/debrootfs.squashfs
mount -t squashfs /dev/loop1 /run/debrootfs
mkdir /run/cowspace/upper
mkdir /run/cowspace/work
mkdir /run/newroot
mount -t overlay debrootfs -o lowerdir=/run/debrootfs/,upperdir=/run/cowspace/upper/,workdir=/run/cowspace/work/ /run/newroot
使用方法
为了方便安装我已经写好了脚本
bash <(curl -sL https://sitao.org/myscripts/ramDebian)
脚本的工作原理: • 脚本会自动创建一个目录 /iso 并下载最新的 ramDebian ISO 文件到该目录。 • 它会检测系统的根设备号和活动网络接口的配置。 • 根据网络配置(DHCP 或静态IP),脚本会自动生成对应的GRUB菜单项,并更新GRUB配置。
GRUB引导参数说明
脚本会自动为你的系统生成GRUB引导配置,具体如下:
GRUB配置样例(DHCP):
menuentry "Sitao ramDebian ISO" {
set root=(hd0,2)
set isofile="/iso/ramDebian_latest.iso"
loopback loop $isofile
echo "Starting $isofile..."
linux (loop)/boot/vmlinuz iso_dev=/dev/sda2 iso_name=$isofile network=dhcp
initrd (loop)/boot/initrd.img
}
GRUB配置样例(静态IP):
menuentry "Sitao ramDebian ISO" {
set root=(hd0,2)
set isofile="/iso/ramDebian_latest.iso"
loopback loop $isofile
echo "Starting $isofile..."
linux (loop)/boot/vmlinuz iso_dev=/dev/sda2 iso_name=$isofile network=static ip_address=192.168.0.3 ip_netmask=24 gateway=192.168.0.1
initrd (loop)/boot/initrd.img
}
参数解释: • iso_dev: 指定ISO文件所在的设备号。 • iso_name: 指定要引导的ISO文件的路径。 • network: 配置网络类型,可以是dhcp或者static。 • ip_address: 当网络类型为静态IP时,指定的IP地址。 • ip_netmask: 当网络类型为静态IP时,指定的子网掩码。 • gateway: 网关地址。
脚本设置默认的启动项是第三个,一般是没有问题的。等待2分钟后如果发现机器依然ping不通 则需要进入VNC控制台查看情况,多半是因为"Sitao ramDebian ISO"这个启动项在你的机器中不是第三个,手动选择这个启动项即可,有问题可以联系我 root@sitao.org
成功运行后内存占用情况:
总结
ramDebian 是一个小巧但功能强大的操作系统,尤其适合对 Linux 系统有深入理解需求的用户。它的轻量级和完全内存中运行的设计,使得它不仅在开发环境中表现出色,也适用于资源受限的场景。如果你正在寻找一个可以快速启动、定制灵活的操作系统,不妨试试 ramDebian。