Как создать индивидуальный Ubuntu Server ISO?

39

Я хотел бы создать настраиваемый Ubuntu Server 12.04 ISO, но не смог найти четкого подхода к тому, как это сделать. Я вижу, что Ubuntu-builder - очень хорошее приложение для создания настраиваемого рабочего стола Ubuntu, но как насчет сервера Ubuntu?

    
задан Shadin 23.01.2014 в 11:37
источник

1 ответ

57

Скачать

Загрузите ISO-сервер Ubuntu из этого местоположения . У вас есть возможность перейти на 32-разрядную или 64-разрядную версию. Имя файла для версии сервера будет выглядеть примерно так:

ubuntu-13.10-server-i386.iso 
ubuntu-13.10-server-amd64.iso 

Я буду считать версию 13.10 64-разрядной версии в следующих инструкциях, поэтому настройте команды на загрузку, которую вы сделали. Сохраните копию своей загрузки, чтобы вы могли создавать несколько новых версий из исходной загрузки, если вам нужно улучшить свой проект. Я также предполагаю, что мы используем ~/Downloads/ для выполнения всей нашей работы.

Начальная настройка

Это создаст 2 каталога "iso" и "isoNew" внутри вашего каталога "Загрузки", смонтирует ISO и скопирует содержимое с "iso" на "isoNew", чтобы запустить новый проект.

Поместите это в текстовый файл, сохраните его, сделайте его исполняемым и выполните:

# Ubuntu custom server 
# rinzwind askubuntu.com
# topic: https://ubuntugeeks.com/questions/1948/how-to-create-a-customized-ubuntu-server-iso"https://i.stack.imgur.com/1gfOH.png"> 

Результат:

Добавление опции меню загрузки

Параметры меню для установщика хранятся в isolinux/txt.cfg , и вы можете создавать новые параметры между default install и label install .

Это создаст новый параметр "Установить пользовательский сервер Ubuntu", и он добавит файл кикстарта (файл kickstart используется для изменения параметров, объясняется ниже):

label myownoption
  menu label ^Install Custom Ubuntu Server
  kernel /install/vmlinuz
  append  file=/cdrom/preseed/ubuntu-custom.seed initrd=/install/initrd.gz quiet ks=cdrom:/preseed/ks-custom.cfg --
  • myownoption - это всего лишь метка, которую вы можете использовать для идентификации вашего варианта.
  • "Установить пользовательский сервер Ubuntu" - это текст, который будет отображаться в меню загрузки.
  • Если вы хотите сделать свой вариант меню по умолчанию, вам нужно только изменить default install на default myownoption .

Пример:

и редактирование файла (я использовал nano, но если доступно, используйте gedit, vim или другой редактор). Вот мое дополнение к этому файлу, где я использовал "lamperver" в качестве ярлыка, и мое семя будет называться "lamperver".

Kickstart (графическая настройка файла конфигурации)

  

Метод установки Red Hat Kickstart используется в основном (но не исключительно) операционной системой Red Hat Enterprise Linux для автоматической установки и настройки автоматической установки операционной системы.

Документация по выбору / kickstart для Ubuntu . Ubuntu имеет ограниченную поддержку кикстарта (и предпосылки); одна из недостающих вещей - графический интерфейс для предпродажного обслуживания. У Kickstart есть варианты для этого (см. Изображения), но они, похоже, не работают на Ubuntu. Вы можете сделать это вручную (см. "Сохранение ниже").

Установка и запуск kickstart:

sudo apt-get install system-config-kickstart
ksconfig

** ПРЕДУПРЕЖДЕНИЕ **

kickstart прослушивается в Ubuntu 13.10, и при запуске он ошибается. Вот исправление . Поместите патч в комментарий в текстовый файл, сохраните его (я назвал его "patch") и зафиксировал его:

После этого ksconfig работал, и он запустит редактор конфигурации, который позволит вам манипулировать множеством опций.

См. Red Hat Linux 7.2: официальная настройка Red Hat Linux Руководство для описания всех параметров, которые вы можете установить.

После того, как вы закончите, сохраните изменения в файле ks.cfg и скопируйте его в ISO, который мы меняем:

sudo cp ks.cfg ~/Downloads/newIso/preseed/ks-custom.cfg
  • Если вы что-то меняете, установщик будет пропустить эту просьбу, если она считается действительной. Если вы не изменили вариант, установщик все равно попросит вас ответить.
  • Вы также можете загрузить kickstart файлы и сохранить их в ks-custom.cfg в ~/Downloads/newIso/preseed/ .

Пример, когда я вставил свои учетные данные. Я начал с sudo ksconfig из командной строки.

И сохраните его в проекте:

Сохранение (настройка файла конфигурации вручную)

Preseeding предоставляет способ задать ответы на вопросы, заданные в процессе установки, без необходимости вручную вводить ответы в то время как установка выполняется. Это позволяет полностью автоматизировать большинство типов установки и даже предлагает некоторые функции, недоступные при нормальной установке.

Скопируйте предварительный запрос для нормальной установки на свой собственный ярлык:

sudo cp newIso/preseed/ubuntu-server.seed newIso/preseed/ubuntu-myownoption.seed
  • измените myownoption на то, что вы использовали.

Теперь для изменения настроек. Используя debconf-get-selections из debconf-utils , вы можете выяснить, какие параметры вы можете использовать с определенным программным обеспечением.

Пример настройки этого параметра:

И добавив ламповый сервер, который будет установлен с tasksel:

  • Если вы хотите добавить пакеты "openssh" и "build-essential", вы можете включить это в файл семпла:

    d-i pkgsel/include string openssh-server build-essential
    
  • Пример для openssh:

    debconf-get-selections | grep openssh
    openssh-server  ssh/vulnerable_host_keys    note
    openssh-server  ssh/use_old_init_script boolean true
    openssh-server  ssh/encrypted_host_key_but_no_keygen    note
    openssh-server  ssh/disable_cr_auth boolean false
    
  • Вы можете добавить эти опции в custom-iso/preseed/ubuntu-myownoption.seed .

  • Объяснение / примеры с использованием настроек debconf .
  • Пример файла preseed
  • Примеры относительно: Локализация, Конфигурация сети, Сетевая консоль, Часы и время, разбиение на разделы
  • В конце файла preseed вы можете добавлять пакеты (случайные примеры) следующим образом:

    % пакетов OpenSSH-сервер MySQL-сервер apache2

Автономная установка

Если вы добавляете пакеты, а НЕ - в ISO, установщик загрузит их из репозитория. Если у вас нет активного интернет-соединения, это будет проблематично, поэтому вам нужно будет добавить все эти пакеты (и зависимости) к вашему проекту и записать их на DVD-диск. К счастью, нормальный сервер ISO имеет много места, но будьте осторожны: компакт-диски и / или DVD-диски имеют ограниченный размер.

Загрузите все необходимые пакеты DEB и сохраните их в ~/Downloads/ . Эти 2 каталога необходимы для нового ISO:

mkdir -p ~/Downloads/newIso/dists/stable/extras/binary-i386
mkdir -p ~/Downloads/newIso/pool/extras/
sudo cp ~/Downloads/*.deb newIso/pool/extras/

И это обновит наш проект новыми пакетами:

cd ~/Downloads/newIso
sudo apt-ftparchive packages ./pool/extras/ > dists/stable/extras/binary-i386/Packages
sudo gzip -c ./dists/stable/extras/binary-i386/Packages | tee ./dists/stable/extras/binary-i386/Packages.gz > /dev/null
cd ~/Downloads/

Создать ISO

cd ~/Downloads/     
sudo md5sum 'find ! -name “md5sum.txt” ! -path “./isolinux/*” -follow -type f' > md5sum.txt
sudo mkisofs -J -l -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -z -iso-level 4 -c isolinux/isolinux.cat -o ./ubuntu-13.10-myowninstall-amd64.iso -joliet-long newIso/
  • вторая строка создает новую контрольную сумму и требуется только при добавлении пакетов.
  • третий делает ISO из вашего проекта, который вы можете записать на DVD.

Результат:

И теперь вы можете попробовать его, собственно, сжечь и установить его. Я бы посоветовал использовать его в качестве виртуальной машины, поскольку он будет быстрее тестировать исходный ISO (в противном случае вы будете перезагружать).

И после установки VirtualBox я получаю следующее меню:

Поиск ошибок

Устанавливается на 1 проблему при установке: по умолчанию не было выбрано.

Shadin. Из файла семян в комментарии

### Package Selection
tasksel tasksel/first multiselect Custom-Ubuntu-Server
d-i pkgsel/include string openssh-server build-essential
%packages openssh-server postgresql-9.1 postgresql-client-9.1 postgresql-contrib-9.1 libpq-dev postgresql-server-dev-9.1 pgadmin3

, вероятно, должно быть так:

### Package Selection
tasksel tasksel/first multiselect lamp-server
d-i pkgsel/include string openssh-server build-essential postgresql-9.1 postgresql-client-9.1 postgresql-contrib-9.1 libpq-dev postgresql-server-dev-9.1 pgadmin3

Поверните строку tasksel, что вам не нужен сервер LAMP (например, Apache, Mysql, Php)

    
ответ дан Rinzwind 23.01.2014 в 14:12
источник