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

linux

#目标

创建一个可以在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 的

plaintext
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模块目录,通常不需要修改

#创建

plaintext
./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启动。

#启动背景

plaintext
/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

plaintext
cat > ./readme.txt << \EOF
Default (SeaBIOS) use syslinux
OVMF (UEFI) use grub
EOF

打包iso

plaintext
/tmp/gen_linux_iso.sh

#测试

pve 宿主机复制出来

plaintext
rsync [email protected]:/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

评论