linux-live环境定制 可U盘硬盘或者iso启动

# 目标

创建一个可以在fat/exfat/ext4 以及U盘 光盘可以启动的自定义linux系统环境

# 基于

debian11 :http://mirror.lzu.edu.cn/debian-cd/11.7.0/amd64/iso-dvd/debian-11.7.0-amd64-DVD-1.iso
其他linux系统差不多 脚本工具:http://linux-live.org/

# 原理

基于自定义的initramfs挂载和启动到squashfs只读镜像启动默认的linux环境。
在只读媒体上,修改点映射到内存。
在linux原生磁盘分区上,修改内容映射到指定目录。 在fat exfat等磁盘分区上修改内容映射到data文件(限制12-16G)

# 基本步骤实现

新机器安装一个干净的linux 并必须安装以下工具包squashfs-tools genisoimage 或者 mkisofs zip 另外 需要 xz rsync sshd sudo wget unzip nano

# 打包

# 打包工具

用 linux-live.org 的

1
2
3
4
mkdir /mklive & cd /mklive
wget https://github.com/Tomas-M/linux-live/archive/refs/heads/master.zip
unzip  master.zip
cd linux-live-master

# 配置

需要配置config 文件里面分别是

  • LIVEKITNAME 目录 通常不需要修改
  • VMLINUZ 内核位置,非chroot情况可以不修改,chroot过来的花需要修改为实际的内核路径,并且需要修改引导的cfg
  • KERNEL 内核版本 通常不需要修改
  • MKMOD 包含的目录,通常不需要修改,如果你有其他目录 单独加上
  • NETWORK 是否支持网络引导 通常不需要修改
  • LIVEKITDATA 最后打包的目标目录,其中包含 syslinux引导以及squashfs镜像和一些其他文件
  • BEXT squashfs文件后缀名称 通常不需要修改
  • LMK 内核ko模块目录,通常不需要修改

# 创建

1
./build

会在LIVEKITDATA指定的目录创建sb文件 initramfs 和其他需要的文件 也会吧内核复制一份过去 如果是alpine的话需要注意base的处理,另外initramfs/initramfs_create 也需要执行权限。

# 打包

最终的文件 是 在 /tmp/linux-data-XXX 目录 直接执行/tmp/gen_linux_zip.sh 就可以了打包成zip 了,解压到U盘 或者硬盘 linux 或许win 执行里面的 bootinst.sh/bat 即可在对应设备上创建好引导。默认是用的syslinux引导的。 如果打包iso的话,默认不支持EFI启动。

# 启动背景

1
/tmp/linux-data-XXX/linux/boot/bootlogo.png

网上找了一个 https://raw.githubusercontent.com/xenlism/Grub-themes/main/xenlism-grub-1080p-Debian/Xenlism-Debian/background.png 不合适

# 修改readme

1
2
3
4
cat > ./readme.txt << \EOF
Default (SeaBIOS) use syslinux
OVMF (UEFI) use grub
EOF

打包iso

1
/tmp/gen_linux_iso.sh

# 测试

pve 宿主机复制出来

1
rsync yanhui@10.1.1.239:/tmp/linux-x86_64.iso  /exfat/iso/

# efi启动

# 硬盘efi+grub启动

自带一硬盘启动的sh和bat自动处理脚本,并支持 bios+syslinux 和 efi+syslinux 如果要修改为grub参考 https://github.com/beatfan/UEFI_grub2/

# iso efi 启动支持

自创建的iso支持bios启动,如果efi参考 https://github.com/beatfan/USB_Boot_With_Grub_Grub2_ISOLINUX

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计