内存中的Linux:debirf方法
您现在想拥有绝对的磁盘速度吗? 让我们修改一下如何在2018年使用版本控制和自动化来完成它。
从主持人那里:沙盒中出现了一篇英文文章。 我们阅读并决定将其发布为星期五实验。 不要严格判断,每个星期五和平快乐! 一起来吧! 简而言之,来自Aua Hearts的底部。
变更日志:
- 文章语言已用英语更正
- 在github上引入的示例存储库
- 添加了测试参数
- 添加抗癌药
在运行本教程之前,您必须知道:
- linux必备
- bash和sh之间的主要区别(debirf写在sh上,所以我建议遵循这种风格)
- 如何格式化USB密钥(以任何方式)
- 您的硬件需要什么驱动程序(或者您可以通过dmesg | lspci对其进行调试)
- 如何通过脚本获得任务目的
您可以替换:
/dev/sdb
到其他任何人的USB信( /dev/sdd
)- 工作目录从
/root/Projects/debirf/
到您选择的( /home/username/Documents/debirf
) - 从
/media/root/8B46-1189
到/media/username/myflashdrive
准备步骤
它们是(可选)启用基本组件的非自由组件。 另外,我认为您将需要非免费的存储库。
- 打开文件
/usr/bin/debirf
行号107,例如nano +107 $(which debirf)
- 查找功能
create_debootstrap
- 找到像
local OPTS="
这样的行local OPTS="
- 在
--components main,contrib,non-free
括号中添加--components main,contrib,non-free
开始:
想象一下,我们的闪存驱动器:
- 必须快,所以建议使用8+类,否则启动将花费足够的时间
- /开发/ SDB
- 格式化的
- 安装在
/media/root/8B46-1189
。 - 我们的工作目录
/root/Projects/debirf/
安装debirf
apt-get install -yq debirf mtools genisoimage
- 通过debirf创建iso所需的mtools(不起作用,但需要)
- 创建真实工作iso所需的genisoimage(可选)
准备debirf工作目录
mkdir -p /root/Projects/debirf tar xzf /usr/share/doc/debirf/example-profiles/rescue.tgz -C /root/Projects/debirf cd /root/Projects/debirf/rescue
DEBIRF_LABEL="debirf-rescue" DEBIRF_SUITE=stretch DEBIRF_DISTRO=debian DEBIRF_MIRROR=http://ftp.ru.debian.org/debian/
创建LiR
- 运行
debirf make .
走开 在顶级硬件上,它需要很多时间,最少需要15分钟。 - 运行
debirf makeiso .
用于创建无法正常工作的iso(grub.cfg文件需要)
测试一下
- 安装qemu
- 对于linux:
apt-get install -yq qemu
- 对于macOS:
brew install qemu
- 决定将为VM分配哪些资源
- 额外的
-nographic
将在当前终端窗口中启动VM--enable-kvm
启用硬件加速-kernel vmlinuz-*
允许直接通过内核-initrd *.cgz
使用initramfs直接访问.cgz文件-append
允许绕过内核参数,这是无需图形外壳程序即可运行的参数
启动虚拟机的命令:
qemu-system-x86_64 --enable-kvm -kernel vmlinuz-* -initrd *.cgz -append "console=tty0 console=ttyS0,115200n8" -m 1G -smp 1 -net nic,vlan=0 -net user -nographic
测试样品

将grub安装到闪存驱动器并在其上复制LiR
我建议您使用BIOS旧版引导程序并打包grub-pc。 尚未通过UEFI测试,但必须能够正常工作。 接下来的几行是:
- 创建挂载点(在启用了GUI的系统上自动挂载是不需要的)
- 将USB密钥挂载到挂载点(在启用了GUI的系统上自动挂载是不需要的)
- 安装grub
- 复制grub文件
- 复制initramfs(系统)
- 复制vmlinuz(内核)
- 卸载USB密钥
- 删除挂载点
mkdir -p /media/root/8B46-1189 mount /dev/sdb1 /media/root/8B46-1189 grub-install --boot-directory=/media/root/8B46-1189/boot /dev/sdb cp /root/Projects/debirf/rescue/iso/boot/grub/grub.cfg /media/root/8B46-1189/boot/grub/ cp /root/Projects/debirf/rescue/*.cgz /media/root/8B46-1189 cp /root/Projects/debirf/rescue/vmlinuz-* /media/root/8B46-1189 umount /media/root/8B46-1189 rm -rf /media/root/8B46-1189
创建可启动的ISO(可选)
- 下载isolinux.bin
- 创建isolinux配置文件
- 创建ISO
mkdir -p rescue/iso/isolinux/ wget -O rescue/iso/isolinux/isolinux.bin 'http://mirror.yandex.ru/centos/7/os/x86_64/isolinux/isolinux.bin' cat << EOF > rescue/iso/isolinux/isolinux.cfg TIMEOUT 5 DEFAULT lir LABEL lir LINUX /vmlinuz-4.9.0-7-amd64 INITRD /debirf-rescue_stretch_4.9.0-7-amd64.cgz EOF genisoimage -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -l -input-charset default -V LiR -A "Linux in RAM" -o rescue/rescue.iso rescue/iso/
检查结果
- 安装QEMU hypervisor
apt-get install -yq qemu
- 运行
qemu-system-x86_64 -enable-kvm -m 512 -hda /dev/sdb
- 如果先前的命令失败,则删除
-enable-kvm
- VM将启动,并通过USB密钥启动
- 您必须看到两个菜单项,结尾不同:控制台和串行。 选择第一个条目。
- 在〜分钟内,您会看到很多行。 结束后-按Enter键以查看欢迎消息
- 登录名:root,无密码
自定义它:创建自定义debirf模块
模块-在LiR创建期间运行的可执行sh脚本
- 创建模块文件
- 文件名的顺序很重要。 在文件
network
,解析文件将更改为系统解析的文件,您将无法使用网络; - 第1至3行必须存在,第3行必须存在文件名
- 如果要安装软件包,请使用构造
#DEBIRF_PACKAGE>+
- 如果要使用rootfs,请使用
$DEBIRF_ROOT
- 如果要在fakeroot中运行命令,请使用
debirf_exec
样本:
cat <<< EOF > rescue/modules/mi
并用debirf_exec systemctl enable wpa_supplicant@wlp1s0.service systemd-networkd.service systemd-resolved.service
文件抢救/模块/网络中的已resolved
行以debirf_exec systemctl enable wpa_supplicant@wlp1s0.service systemd-networkd.service systemd-resolved.service
奖励:LiR上的lxc
救援模块/模块/ LXC