Нужна пошаговая процедура создания сервера kickstart на Ubuntu 14.04 LTS
решение1
Это хорошее пошаговое руководство.
TL;DR; использовать isohybrid после перепаковки пользовательского iso
Чтобы сделать этот usb, я использовал виртуальную машину с установленной Ubuntu 14.04. Цель здесь — сделать загрузочный usb, который не требует выбора таких вещей, как раскладка клавиатуры, язык и т. д. Мы хотим автоматическую установку сервера Ubuntu.
Нам нужно получить образ Ubuntu, который мы собираемся настроить для нашей установки.
wget http://releases.ubuntu.com/14.04/ubuntu-14.04.2-server-amd64.iso
Нам понадобится место для монтирования распакованного файла iso.
sudo mkdir -p /mnt/iso
После того, как мы создали точку монтирования для него, теперь нам нужно его смонтировать. Это откроет файлы, которые хранятся внутри iso. К сожалению, файлы будут только для чтения
. sudo mount -o loop ubuntu-14.04.2-server-amd64.iso /mnt/iso
Чтобы изменить файлы, нам нужно скопировать их в каталог, где мы сможем их изменить, поэтому мы создадим каталог, а затем скопируем в него файлы.
sudo mkdir -p /opt/ubuntuiso sudo cp -rT /mnt/iso /opt/ubuntuiso
Наш новый рабочий каталог будет /opt/ubuntuiso
cd /opt/ubuntuiso
Чтобы избежать запроса на выбор языка в процессе установки, нам нужно указать, какой язык мы будем использовать. В данном случае используется en, потому что я говорю по-английски.
echo en | sudo tee isolinux/lang
Теперь мы фактически собираемся создать файл kickstart с помощью программы system-config-kickstart. Поэтому мы убеждаемся, что она установлена, а затем запускаем ее.
sudo apt-get install system-config-kickstart system-config-kickstart
Затем сохраните файл из GUI в
/opt/ubuntuiso/
. Это должно сохранить файл с именем ks.cfg. Мой ks.cfg выглядит следующим образом#Generated by Kickstart Configurator #platform=AMD64 or Intel EM64T #System language lang en_US #Language modules to install langsupport en_US #System keyboard keyboard us #System mouse mouse #System timezone timezone America/Denver #Root password rootpw --disabled #Initial user user ubuntu --fullname "ubuntu" --iscrypted --password $1$MQ0zGB4W$pwjX8nolgr2RJch2Omamt. #Reboot after installation reboot #Use text mode install text #Install OS instead of upgrade install #Use CDROM installation media cdrom #System bootloader configuration bootloader --location=mbr #Clear the Master Boot Record zerombr yes #Partition clearing information clearpart --all --initlabel #Disk partitioning information part /boot --fstype ext2 --size 100 --asprimary part swap --recommended part / --fstype ext4 --size 1 --grow #System authorization infomation auth --useshadow --enablemd5 #Network information network --bootproto=dhcp --device=eth0 #Firewall configuration firewall --disabled #Do not configure the X Window System skipx %post #!/bin/bash exec < /dev/tty6 > /dev/tty6 chvt 6 echo 'Acquire::http { Proxy "http://10.2.4.27"; };' > /etc/apt/apt.conf.d/02proxy apt-get update apt-get -y upgrade apt-get -y dist-upgrade apt-get install -y git ansible openssh-server vim chvt 1
В постскриптуме (все после ) есть небольшой перехват
%post
. Строка, начинающаяся с exec, и следующая строка (chvt 6
) заставляют установщик показывать вывод команд, которые выполняются после нее. Причина этого в том, что полоса загрузки не будет двигаться во время установки, и может показаться, что установщик завис. Следующая строка, которая выполняет функцию прокси, предназначена для apt-cache в нашей локальной сети. Последняя строка (chvt 1
) возвращает вывод в основной установщик.Теперь нам нужно добавить preseed-файл, чтобы избежать других вопросов.
echo 'd-i partman/confirm_write_new_label boolean true d-i partman/choose_partition \ select Finish partitioning and write changes to disk d-i partman/confirm boolean true' | sudo tee ks.preseed
Теперь нам нужно сообщить установщику о файлах, которые мы только что сохранили, поэтому нам нужно изменить isolinux/txt.cfg. Сначала нам нужно сделать файл доступным для записи.
sudo chmod +w isolinux/txt.cfg
Затем нам нужно заменить строку добавления следующего раздела
label install menu label ^Install Ubuntu Server kernel /install/vmlinuz append file=/cdrom/preseed/ubuntu-server.seed vga=788 initrd=/install/initrd.gz quiet --
Замените строку добавления на
append file=/cdrom/preseed/ubuntu-server.seed initrd=/install/initrd.gz ks=cdrom:/ks.cfg preseed/file=/cdrom/ks.preseed --
Сохраните и выйдите из файла. Нам также нужно убедиться, что мы вернули файл в исходное состояние, поэтому удалите разрешения на запись.
sudo chmod -w isolinux/txt.cfg
Теперь создайте новый ISO-файл, который мы будем использовать для создания загрузочного USB-накопителя.
sudo mkisofs -D -r -V "ATTENDLESS_UBUNTU" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o /opt/autoinstall.iso /opt/ubuntuiso
Чтобы завершить создание загрузочного образа ISO для USB, нам необходимо его гибридизировать.
sudo isohybrid /opt/autoinstall.iso
После гибридизации мы можем переместить его на usb-накопитель. Usb-накопитель в моей виртуальной машине отображается в
/dev/sdb
, но вам нужно использовать правильную метку, поэтому замените X соответствующим образом. Убедитесь, что usb-накопитель размонтирован.sudo umount /dev/sdX
И, наконец, скопируйте ISO-образ на USB-накопитель. (Обратите внимание, **это уничтожит данные на целевом устройстве — убедитесь, что вы знаете, что делаете)
sudo dd if=/opt/autoinstall.iso of=/dev/sdX
Теперь ваш USB-накопитель готов к установке!
решение2
Комплексное решение:
Переделать CD, т. е. загрузить неграфический установочный ISO Ubuntu (серверный или альтернативный установочный CD) и смонтировать его. В этом случае, ваш ISO Ubuntu 14.
sudo mkdir -p /mnt/iso
sudo mount -o loop ubuntu.iso /mnt/iso
Скопируйте соответствующие файлы в другой каталог.
sudo mkdir -p /opt/ubuntuiso
sudo cp -rT /mnt/iso /opt/ubuntuiso
Предотвратить появление меню выбора языка
cd /opt/ubuntuiso
echo en | sudo tee isolinux/lang
Используйте программу с графическим интерфейсом для добавления файла кикстарта с именемks.cfg
sudo apt-get install system-config-kickstart
system-config-kickstart # save file to ks.cfg
Чтобы добавить пакеты для установки, добавьте %package
раздел в ks.cfg
файл кикстарта, добавив в конец ks.cfg
файла что-то вроде этого.
%packages
@ ubuntu-server
openssh-server
ftp
build-essential
Это установит «комплект» ubuntu-server и добавит пакеты openssh-server
, ftp
и build-essential
.
Добавьте файл preseed, чтобы подавить другие вопросы
echo 'd-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition \
select Finish partitioning and write changes to disk
d-i partman/confirm boolean true' | sudo tee ks.preseed
Настройте командную строку загрузки на использование файлов kickstart и preseed
sudo nano isolinux/txt.cfg
Искать
label install
menu label ^Install Ubuntu Server
kernel /install/vmlinuz
append file=/cdrom/preseed/ubuntu-server.seed vga=788 initrd=/install/initrd.gz quiet --
добавить ks=cdrom:/ks.cfg
и preseed/file=/cdrom/ks.preseed
в строку добавления. Вы можете удалить слова quiet
и vga=788
. Это должно выглядеть так
append file=/cdrom/preseed/ubuntu-server.seed initrd=/install/initrd.gz ks=cdrom:/ks.cfg preseed/file=/cdrom/ks.preseed --
Теперь создайте новый ISO-образ.
sudo mkisofs -D -r -V "ATTENDLESS_UBUNTU" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o /opt/autoinstall.iso /opt/ubuntuiso
Вот и все. У вас будет компакт-диск, который установит систему Ubuntu, как только вы с него загрузитесь, без необходимости ввода каких-либо данных.
При необходимости измените файлы ks.cfg и preseed.