因此,我正在制作一个自定义的 Arch Linux iso 作为我的发行版的安装程序。我查看了另一个名为 ArchLabs 的 Arch 发行版,它们的安装程序大小为 750 M。我的 ISO 最终生成了超过 1000 M。问题是,我的软件包列表是 ArchLabs 列表的精简版,所以它不应该更小吗?我的 airootfs 也更小,但我似乎无法弄清楚这一点。这是 ArchLabs 仓库的链接,这是我的仓库的链接。(我的 ISO 的构建文件位于 installer-iso 下。)
这是我的 ISO 的链接、它的软件包列表、提取的 airootsfs 和提取的 iso。 此处直接链接至 iso 文件。
答案1
安装后,airootfs.sfs squashfs 的大小为 1.4Gb。600Mb 进入 /usr/lib/firmware。这令人印象深刻。
我必须挂载你的 iso 才能提取 airootfs.sfs。我将其挂载在 /mnt/loop 上:
/dev/loop1 1036620 1036620 0 100% /mnt/loop
我转到 /mnt/loop 并运行“du”
ghp-amdphIIX4B:/mnt/loop
# du -s .
784455 .
我从 /mnt/loop 创建了一个 new.iso:
ghp-amdphIIX4B:/mnt/loop
# mkisofs -o /tmp/new.iso .
...
99.38% done, estimate finish Sat Dec 12 00:02:59 2020
Total translation table size: 0
Total rockridge attributes bytes: 0
Total directory bytes: 30720
Path table size(bytes): 208
Max brk space used 23000
392431 extents written (766 MB)
# ls -l /tmp/new.iso
-rw-r--r-- 1 root root 803698688 12 dec 00:02 /tmp/new.iso
小了200Mb???
这是因为我没有看到你的 iso 还包含 245Mb EFI 系统:
# fdisk -l /tmp/arch.iso
Disk /tmp/arch.iso: 1012.32 MiB, 1061498880 bytes, 2073240 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 30323032-3231-4131-B130-303932393038
Device Start End Sectors Size Type
/tmp/arch.iso1 64 1570815 1570752 767M Linux filesystem
/tmp/arch.iso2 1570816 2072575 501760 245M EFI System
/tmp/arch.iso3 2072576 2073175 600 300K Microsoft basic data
我的 EFI 分区启动 Linux 和 Windows,小于 25Mb。使用重新查找,它会启动在相应分区中找到的内核。无需 250Mb
# ls -al /mnt/loop2/arch/boot/x86_64/
total 246092
drwxr-xr-x 2 root root 4096 Dec 11 14:29 .
drwxr-xr-x 3 root root 4096 Dec 11 14:29 ..
-rwxr-xr-x 1 root root 81423440 Dec 11 14:29 initramfs-linux-ae-fallback.img
-rwxr-xr-x 1 root root 81423440 Dec 11 14:29 initramfs-linux-ae-tkg-pds.img
-rwxr-xr-x 1 root root 81423440 Dec 11 14:29 initramfs-linux-ae.img
-rwxr-xr-x 1 root root 7713600 Dec 11 14:29 vmlinuz-linux-ae