Я пытался выполнить кикстарт-установку CentOS 6.4, но он всегда показывает мне предупреждение о повторной инициализации жесткого диска, поскольку он может содержать недопустимую таблицу разделов или виртуальный диск. Ниже я добавил снимок файла кикстарта, который я пытаюсь использовать.
# 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
Даже я создал разделы, чтобы попробовать как обходной путь, но без средства. Есть мысли, как убрать это предупреждение. Я пытаюсь сделать это с помощью Packer-tools для хоста ESXI (имеющего версию 5.5). Ниже представлен шаблон 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. Но я не думаю, что конфигурация кикстарта должна влиять на то же самое.
Если вы получаете сообщение об ошибке, подобное приведенному ниже, в кикстарте EL6, вам необходимо добавить zerombr
в набор команд кикстарта.
У вас также должно быть это:
zerombr
clearpart --all --initlabel
Из документация:
zerombr: Если указано zerombr, инициализируются любые недопустимые таблицы разделов, обнаруженные на дисках. Это уничтожает все содержимое дисков с недопустимыми таблицами разделов. Эта команда требуется при выполнении автоматической установки в системе с ранее инициализированными дисками.
Редактировать:
Я только что попробовал это на новой виртуальной машине CentOS EL6.5, работающей на платформе vSphere 5.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
Я обнаружил потенциальную проблему:
"iso_url": "http://127.0.0.1:8000/CentOS-6.5-x86_64-minimal.iso",
«Минимальный» диск CentOS настраивается и может делать неожиданные вещи, поскольку он был предназначен и настроен только для установки одного набора пакетов. Его не следует использовать при кикстарт-установке; используйте вместо этого netinstall или образы DVD.
Но, как я уже сказал, ISO вращается с использованием базы CentOS 6.4, и это не должно влиять на установку кикстарта.
Вам необходимо это проверить. Попробуйте со стандартным ISO.
Если он все еще выдает ошибку, вы сказали ему только очистить sda
:
# Partition clearing information
clearpart --all --initlabel --drives=sda
Изменить на:
clearpart --all --initlabel
и попробуй еще раз.