我对 kickstart 概念还很陌生,过去几天我一直在阅读和测试它,但我遇到了一个问题,似乎在网上任何地方都找不到它……
起初我想创建 PXE 启动 kickstart 安装,但此选项需要 DHCP 服务器,出于安全原因,我当前的网络不允许我安装该服务器。因此,我想创建 DVD kickstart。
因此,我一直遵循多个不同的指南,它们看起来非常相似,最终得到了相同的结果。
以下是我一直在做的事情:
1)挂载当前 ISO
[root@olexporch01 ISO]# mount -o loop /ISO/CentOS-7-x86_64-DVD-1511.iso /media/
mount: /dev/loop0 is write-protected, mounting read-only
[root@olexporch01 ISO]# cd /media/
[root@olexporch01 media]# ls -l
total 636
-r--r--r--. 1 root root 14 Dec 9 17:35 CentOS_BuildTag
dr-xr-xr-x. 3 root root 2048 Dec 9 17:33 EFI
-r--r--r--. 1 root root 215 Dec 9 17:35 EULA
-r--r--r--. 1 root root 18009 Dec 9 17:35 GPL
dr-xr-xr-x. 3 root root 2048 Dec 9 17:33 images
dr-xr-xr-x. 2 root root 2048 Dec 9 17:33 isolinux
dr-xr-xr-x. 2 root root 2048 Dec 9 17:33 LiveOS
dr-xr-xr-x. 2 root root 612352 Dec 9 18:13 Packages
dr-xr-xr-x. 2 root root 4096 Dec 9 18:14 repodata
-r--r--r--. 1 root root 1690 Dec 9 17:35 RPM-GPG-KEY-CentOS-7
-r--r--r--. 1 root root 1690 Dec 9 17:35 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r--. 1 root root 2883 Dec 9 18:14 TRANS.TBL
2)将当前 ISO 解压到工作文件夹中为此,我使用了 2 个不同的命令,要么是简单的 cp -pr * 从 ISO 目录到工作目录,要么是
[root@olexporch01 /]# tar -cvf - media | (cd /bootiso/centos/ && tar -xvf - )
命令。我尝试了两种方法,以确保 ISO 的完整性(我们永远不知道)
通常,我会在这里插入 kickstart 文件并重建 ISO,但只是为了测试,我使用与原始 ISO 完全相同的文件重新创建了 ISO
[root@olexporch01 /]# cd /bootiso/centos/media/
[root@olexporch01 media]# ls -l
total 292
-r--r--r--. 1 root root 14 Dec 9 17:35 CentOS_BuildTag
dr-xr-xr-x. 3 root root 33 Dec 9 17:33 EFI
-r--r--r--. 1 root root 215 Dec 9 17:35 EULA
-r--r--r--. 1 root root 18009 Dec 9 17:35 GPL
dr-xr-xr-x. 3 root root 54 Dec 9 17:33 images
dr-xr-xr-x. 2 root root 4096 Dec 9 17:33 isolinux
dr-xr-xr-x. 2 root root 41 Dec 9 17:33 LiveOS
dr-xr-xr-x. 2 root root 200704 Dec 9 18:13 Packages
dr-xr-xr-x. 2 root root 4096 Dec 9 18:14 repodata
-r--r--r--. 1 root root 1690 Dec 9 17:35 RPM-GPG-KEY-CentOS-7
-r--r--r--. 1 root root 1690 Dec 9 17:35 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r--. 1 root root 2883 Dec 9 18:14 TRANS.TBL
[root@olexporch01 media]# mkisofs -o ../boot.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -J -R -V boot.iso .
I: -input-charset not specified, using utf-8 (detected in locale settings)
Using RPM_G000.;1 for /RPM-GPG-KEY-CentOS-7 (RPM-GPG-KEY-CentOS-Testing-7)
Using YUM_P000.RPM;1 for ./Packages/yum-plugin-aliases-1.1.31-34.el7.noarch.rpm (yum-plugin-changelog-1.1.31-34.el7.noarch.rpm)
Using YUM_P001.RPM;1 for ./Packages/yum-plugin-changelog-1.1.31-34.el7.noarch.rpm (yum-plugin-fastestmirror-1.1.31-34.el7.noarch.rpm)
Using YUM_P002.RPM;1 for ./Packages/yum-plugin-fastestmirror-1.1.31-34.el7.noarch.rpm (yum-plugin-tmprepo-1.1.31-34.el7.noarch.rpm)
Using YUM_P003.RPM;1 for ./Packages/yum-plugin-tmprepo-1.1.31-34.el7.noarch.rpm (yum-plugin-verify-1.1.31-34.el7.noarch.rpm)
...
...
...
Using ABRT_005.RPM;1 for ./Packages/abrt-gui-2.1.11-36.el7.centos.x86_64.rpm (abrt-gui-libs-2.1.11-36.el7.centos.x86_64.rpm)
Using 389_D000.RPM;1 for ./Packages/389-ds-base-1.3.4.0-19.el7.x86_64.rpm (389-ds-base-libs-1.3.4.0-19.el7.x86_64.rpm)
Size of boot image is 4 sectors -> No emulation
0.23% done, estimate finish Tue Feb 9 08:15:35 2016
0.46% done, estimate finish Tue Feb 9 08:15:35 2016
0.70% done, estimate finish Tue Feb 9 08:15:35 2016
0.93% done, estimate finish Tue Feb 9 08:15:35 2016
1.16% done, estimate finish Tue Feb 9 08:15:35 2016
1.39% done, estimate finish Tue Feb 9 08:15:35 2016
1.62% done, estimate finish Tue Feb 9 08:16:36 2016
1.86% done, estimate finish Tue Feb 9 08:16:28 2016
2.09% done, estimate finish Tue Feb 9 08:16:22 2016
2.32% done, estimate finish Tue Feb 9 08:16:18 2016
...
...
...
99.23% done, estimate finish Tue Feb 9 08:15:57 2016
99.46% done, estimate finish Tue Feb 9 08:15:57 2016
99.69% done, estimate finish Tue Feb 9 08:15:57 2016
99.92% done, estimate finish Tue Feb 9 08:15:57 2016
Total translation table size: 2048
Total rockridge attributes bytes: 416616
Total directory bytes: 632832
Path table size(bytes): 140
Max brk space used 3ad000
2156686 extents written (4212 MB)
[root@olexporch01 media]# cd ..
[root@olexporch01 centos]# ls -l
total 4313376
-rw-r--r--. 1 root root 4416892928 Feb 9 08:15 boot.iso
dr-xr-xr-x. 8 root root 4096 Dec 9 18:14 media
最后的 ls 是为了确保 ISO 已正确创建,但是现在,当我将原始 ISO 与新 ISO 进行比较时,新 ISO 更大,即使我使用了相同的文件……
[root@olexporch01 centos]# diff boot.iso /ISO/CentOS-7-x86_64-DVD-1511.iso
Binary files boot.iso and /ISO/CentOS-7-x86_64-DVD-1511.iso differ
[root@olexporch01 centos]# ls -l boot.iso ; ls -l /ISO/CentOS-7-x86_64-DVD-1511.iso
-rw-r--r--. 1 root root 4416892928 Feb 9 08:15 boot.iso
-rw-------. 1 root root 4329570304 Feb 9 08:04 /ISO/CentOS-7-x86_64-DVD-1511.iso
当我尝试从新的 ISO 启动时,该 ISO 包含与原始 ISO 相同的文件,我收到此错误
除了新内核会发生的问题之外,我似乎无法在网上找到任何有关此问题的信息,但我没有编译新内核......
有谁能给我一个主意吗?
谢谢!
马克
答案1
所以我已经找到问题所在了,如果其他人也遇到这个问题的话。基本上,我所遵循的所有指南都缺少 mkisofs 命令中的一个参数。
以下是实际的命令:
[root@olexporch01 media]# cd /bootiso/centos/media/
[root@olexporch01 media]# mkisofs -o CentOS7.2-Base-Image.iso -b isolinux/isolinux.bin
\-c isolinux/boot.cat -no-emul-boot -V 'CentOS 7 x86_64'
\-boot-load-size 4 -untranslated-filenames -boot-info-table -R -J -v -T -hfs .
需要“-hfs”参数来使 ISO 文件系统成为 hfs。如果没有 hfs,ISO 将无法启动。
总而言之,下面是我创建 ISO 的方法,完整指南:
[root@olexporch01 /]# mkdir -p /bootiso/centos/media
[root@olexporch01 /]# mount /dev/cdrom /media
[root@olexporch01 /]# cd /media
[root@olexporch01 /media]# cp -pr * /bootiso/centos/media/
[root@olexporch01 /media]# cp -p /root/anaconda-ks.cfg /bootiso/centos/media/ks.cfg
[root@olexporch01 /media]# cd /bootiso/centos/media
[root@olexporch01 /media]# mkisofs -o CentOS7.2-Base-Image.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -V 'CentOS 7 x86_64' -boot-load-size 4 -untranslated-filenames -boot-info-table -R -J -v -T -hfs .
希望有一天这可以帮助到别人!:)
答案2
很棒的说明,但不适用于 UEFI BIOS。来自http://fedoraproject.org/wiki/User:Pjones/BootableCDsForBIOSAndUEFI
我补充道
-eltorito-alt-boot -e images/efiboot.img -no-emul-boot
在 mkisofs 命令上最后创建 UEFI 可启动 CD 之前。