目标
创建一个可以在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 的
|
|
配置
需要配置config 文件里面分别是
- LIVEKITNAME 目录 通常不需要修改
- VMLINUZ 内核位置,非chroot情况可以不修改,chroot过来的花需要修改为实际的内核路径,并且需要修改引导的cfg
- KERNEL 内核版本 通常不需要修改
- MKMOD 包含的目录,通常不需要修改,如果你有其他目录 单独加上
- NETWORK 是否支持网络引导 通常不需要修改
- LIVEKITDATA 最后打包的目标目录,其中包含 syslinux引导以及squashfs镜像和一些其他文件
- BEXT squashfs文件后缀名称 通常不需要修改
- LMK 内核ko模块目录,通常不需要修改
创建
|
|
会在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启动。
启动背景
|
|
修改readme
|
|
打包iso
|
|
测试
pve 宿主机复制出来
|
|
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