我尝试对 CentOS 6.4 进行 kickstart 安装,但它总是显示重新初始化硬盘的警告,因为它说可能包含无效的分区表或虚拟磁盘。下面是我尝试使用的 kickstart 文件的快照
# System bootloader configuration
bootloader --append="crashkernel=auto rhgb quiet" --location=mbr --driveorder="sda"
autopart
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel --drives=sda
part /boot --fstype ext4 --size=300
part / --fstype="ext4" --grow --size=1 --asprimary
我甚至创建了分区来尝试解决方法,但没有办法。有什么想法可以让这个警告消失吗?我正在尝试通过运行 ESXI 主机(具有 5.5 版本)的 Packer-tools 来执行此操作。下面是我使用的 JSON 模板
# cat base-packer.json
{
"builders": [
{
"vm_name": "Centos6.5",
"type": "vmware-iso",
"iso_url": "http://127.0.0.1:8000/CentOS-6.5-x86_64-minimal.iso",
"iso_checksum": "0d9dc37b5dd4befa1c440d2174e88a87",
"iso_checksum_type": "md5",
"disk_size": "20480",
"disk_type_id": "thin",
"http_directory": "~/packertemplatebuilding",
"remote_host": "191.168.42.3",
"remote_datastore": "52dfe32b-a996d262-9b46-2c4138a85a23/Centos6.5",
"remote_username": "root",
"remote_password": "rootpass",
"remote_type": "esx5",
"ssh_username": "vagrant",
"ssh_password": "vagrant",
"ssh_port": 22,
"ssh_wait_timeout": "250s",
"shutdown_command": "echo 'vagrant'|sudo -S shutdown -P now",
"headless": "false",
"boot_command": [
"<tab> text ks=http://148.147.206.152:8000/ks_new.cfg<enter><wait>"
],
"boot_wait": "20s",
"vmx_data": {
"ethernet0.virtualDev": "vmxnet3",
"ethernet0.networkName": "VM Network",
"ethernet0.addressType": "generated",
"ethernet0.present": "TRUE",
"ethernet1.virtualDev": "vmxnet3",
"ethernet1.networkName": "VM Network 2",
"ethernet1.addressType": "generated",
"ethernet1.present": "TRUE",
"ide0:0.fileName": "disk.vmdk",
"ide0:0.present": "TRUE",
"ide0:0.redo": "",
"scsi0:0.present": "FALSE",
"memsize": "2048",
"numvcpus": "2",
"cpuid.coresPerSocket": "1"
}
}
],
"provisioners": [
{
"type": "shell",
"script": "ssh-commands.sh"
}
]
}
下面是我收到的错误的快照。
PS 我使用的镜像是 CentOS 6.4 的自定义版本。但我不认为 kickstart 配置会对它产生影响。
答案1
如果您在 EL6 kickstart 中收到类似以下的错误消息,则需要添加zerombr
到 kickstart 命令集中。
你还应该有这个:
zerombr
clearpart --all --initlabel
来自文档:
zerombr:如果指定了 zerombr,则会初始化磁盘上发现的任何无效分区表。这会破坏具有无效分区表的磁盘的所有内容。在具有先前初始化的磁盘的系统上执行无人值守安装时,需要此命令。
编辑:
我刚刚在运行于 vSphere 5.5 平台上的全新 CentOS EL6.5 虚拟机上尝试了这个...以下操作连续运行三次没有问题,包括在相同的磁盘上重新安装:
zerombr
clearpart --all --initlabel
part /boot --fstype ext4 --size=300
part /usr --fstype ext4 --size=10240 --asprimary
part / --fstype ext4 --size=20480 --asprimary
part /var --fstype ext4 --size=6144
part swap --size=8192
part /tmp --fstype ext4 --size=2048
答案2
我发现一个潜在的问题:
"iso_url": "http://127.0.0.1:8000/CentOS-6.5-x86_64-minimal.iso",
CentOS“最小”磁盘是定制的,可能会发生意想不到的事情,因为它仅用于安装一组软件包。它不应与 kickstart 安装一起使用;请改用 netinstall 或 DVD 映像。
答案3
但正如我所说,ISO是使用CentOS 6.4基础旋转的,它不应该影响kickstart安装。
您需要验证这一点。尝试使用标准 ISO。
如果仍然出现错误,您告诉它仅清除sda
:
# Partition clearing information
clearpart --all --initlabel --drives=sda
改成:
clearpart --all --initlabel
然后再试一次。