From 74d76ff10fad739f52be879c579f56c42a36a725 Mon Sep 17 00:00:00 2001 From: liushuncheng <2930054131@qq.com> Date: Tue, 13 Aug 2024 03:05:09 +0000 Subject: [PATCH] =?UTF-8?q?=E5=B7=AE=E4=B8=8D=E5=A4=9A=E5=BE=97=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: liushuncheng <2930054131@qq.com> --- 教程/06-生成squashfs.txt | 18 +++++++++++++ 教程/07-livecd目录布置.txt | 30 ++++++++++++++++++++++ 教程/08-引导配置文件.txt | 52 ++++++++++++++++++++++++++++++++++++++ 教程/09-生成iso.txt | 18 +++++++++++++ 教程/10-收尾工作.txt | 5 ++++ 5 files changed, 123 insertions(+) create mode 100644 教程/06-生成squashfs.txt create mode 100644 教程/07-livecd目录布置.txt create mode 100644 教程/08-引导配置文件.txt create mode 100644 教程/09-生成iso.txt create mode 100644 教程/10-收尾工作.txt diff --git a/教程/06-生成squashfs.txt b/教程/06-生成squashfs.txt new file mode 100644 index 0000000..b3140e0 --- /dev/null +++ b/教程/06-生成squashfs.txt @@ -0,0 +1,18 @@ +我们在生成完initramfs之后,我们将打包我们的系统镜像 + +进入你的宿主系统(编译你的lfs所使用的系统), +之后我们可以挂载安装lfs的硬盘,当然你要是编译在一个目录里的话就不用管 + +之后你可以chroot进去你的lfs,做一些必要的清理或调整 +例如调整:/etc/fstab /etc/profile之类的文件,然后清理/tmp,清理.la,去除调试符号,退出chroot +之后卸载虚拟文件系统(假设有lfs变量,且你挂载了虚拟文件系统) +umount $LFS/dev/shm +umount $LFS/dev/pts +umount $LFS/{dev,proc,sys} +umount $LFS/run #假如你挂载了/run + +之后开始压缩squashfs,在你的宿主系统里,且设置了LFS变量 +sudo mksquashfs $LFS ./squashfs.img -comp zstd + +如果你要编译的内核不支持zstd压缩的话或者你宿主机的squashfs-tool不支持zstd的话, +去除-comp zstd这个选项 \ No newline at end of file diff --git a/教程/07-livecd目录布置.txt b/教程/07-livecd目录布置.txt new file mode 100644 index 0000000..b3f5123 --- /dev/null +++ b/教程/07-livecd目录布置.txt @@ -0,0 +1,30 @@ +要生成iso之前,我们先要搞好你的livecd里有什么要用的文件 + +一般来讲,红帽系的livecd iso的目录布局一般是这样子的 +boot/ EFI/ images/ LiveOS/ +boot/ EFI/这两个目录是用来引导的 +images/里有pxeboot这个目录,pxeboot是我们的vmlinuz initrd.img这两个文件 +LiveOS这个目录里面放我们的squashfs.img文件 + +虽然红帽系的引导使用的是grub-bios和grub-efi,但我们这次要用的isolinux+grub-efi + +首先创建我们的目录,名字就叫livecd-dir就好了 +mkdir ./livecd-dir/{boot,EFI,images,LiveOS,isolinux} +mkdir ./livecd-dir/images/pxeboot + +然后复制你lfs的vmlinuz和initrd.img +示例: +cp -rv $LFS/boot/vmlinuz-xxx ./livecd-dir/images/pxeboot/vmlinuz +cp -rv $LFS/boot/initramfs.ing-xxx ./livecd-dir/images/pxeboot/initrd.img + +复制squashfs.img: +cp -rv ./squashfs.img ./livecd-dir/LiveOS/ + +我们这个仓库很贴心的为你们准备了isolinux以及EFI +假设你把这个仓库克隆到了lfs-livecd目录 +cp -rv ./lfs-livecd/isolinux/* ./livecd-dir/isolinux/* +cp -rv ./lfs-livecd/livecd-efiboot-fedora/EFI/* ./livecd-dir/EFI/ + +解压livecd-efiboot-fedora下的bootefi-fedora.7z,得到bootefi.img +然后mkdir ./livecd-dir/boot/grub +cp bootefi.img ./livecd-dir/boot/grub \ No newline at end of file diff --git a/教程/08-引导配置文件.txt b/教程/08-引导配置文件.txt new file mode 100644 index 0000000..f9535c4 --- /dev/null +++ b/教程/08-引导配置文件.txt @@ -0,0 +1,52 @@ +搞完你的livecd的目录之后, +唠叨唠叨isolinux/isolinux.cfg, +和EFI/BOOT/grub.cfg + +你们已经会编译lfs了,所以大家也应该知道这两个文件是配置引导的文件,告诉引导程序怎么引导内核 +示例: + + +isolinux.cfg +========================================================================= +default vesamenu.c32 +MENU BACKGROUND syslinux_splash.jpg +MENU TITLE lfs-livecd +LABEL lfs +MENU LABEL boot lfs 12.1 + kernel /images/pxeboot/vmlinuz + initrd /images/pxeboot/initrd.img + append root=live:CDLABEL=LFS rd.live.image vga=788 +========================================================================== + + +grub.cfg +========================================================================================================================== +set default="1" + +function load_video { + insmod all_video +} + +load_video +set gfxpayload=keep +insmod gzio +insmod part_gpt +insmod ext2 +insmod chain + +set timeout=60 +### END /etc/grub.d/00_header ### + +search --no-floppy --set=root -l 'lfs' + +### BEGIN /etc/grub.d/10_linux ### +menuentry 'Start lfs 12.1 with safe graphics' --class lfs --class gnu-linux --class gnu --class os { + linux /images/pxeboot/vmlinuz root=live:CDLABEL=LFS rd.live.image vga=788 nomodeset + initrd /images/pxeboot/initrd.img +} +menuentry 'start lfs 12.1' --class lfs --class gnu-linux --class gnu --class os { + linux /images/pxeboot/vmlinuz root=live:CDLABEL=LFS rd.live.image splash vga=788 + initrd /images/pxeboot/initrd.img +} + +========================================================================================================================= \ No newline at end of file diff --git a/教程/09-生成iso.txt b/教程/09-生成iso.txt new file mode 100644 index 0000000..7c7604b --- /dev/null +++ b/教程/09-生成iso.txt @@ -0,0 +1,18 @@ +好了大家,这个目录布局引导文件搞完了,就开始生成iso文件 + +如果你是debian系的用户,安装isolinux xorriso genisoimage(mkisofs)这三个软件 + +之后生成livecd +sudo xorriso -as mkisofs -R -r -J -joliet-long -l -cache-inodes -iso-level 3 \ + -isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin -partition_offset 16 \ + -A "LFS" -p "LFS" -publisher "myName" -V "LFS" \ + --modification-date=2023121300000000 \ + -b isolinux/isolinux.bin -c isolinux/boot.cat \ + -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot \ + --efi-boot boot/grub/efi.img -append_partition 2 0x01 livecd-dir/boot/grub/efi.img \ + -o my.iso livecd-dir + +首先,带livecd-dir这个字段的就是你iso目录 +然后--modification-date就是修改日期,没必要改 +-publisher "myName",myName可以替换成你的名字 +-o my.iso my.iso就是你最后生成的iso \ No newline at end of file diff --git a/教程/10-收尾工作.txt b/教程/10-收尾工作.txt new file mode 100644 index 0000000..1715971 --- /dev/null +++ b/教程/10-收尾工作.txt @@ -0,0 +1,5 @@ +好了你自己的livecd已经搞完了,试试用qemu之类的虚拟机测试一下吧 + +大家有什么问题可以开个issues,或者认识我的给我发QQ + +如果大家有什么linux系统安装程序想反馈给我的话,测试之后我就添加安装程序的教程,这样LFS livecd就有安装程序了 \ No newline at end of file