Как создать собственный ISO-образ Ubuntu Server?

42

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

Shadin
источник

Ответы:

61

Скачать

Загрузите 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: http://askubuntu.com/questions/409607/how-to-create-a-customized-ubuntu-server-iso/409651#409651
cd ~/Downloads/    
mkdir -p iso newIso
sudo mount -o loop ./ubuntu-13.10-server-amd64.iso ./iso    
sudo cp -r ./iso/* ./newIso/
sudo cp -r ./iso/.disk/ ./newIso/    
sudo umount ./iso/
cd ~/Downloads/newIso/
  • Будет выдано 1 сообщение об ошибке: mount: block device /discworld/Downloads/ubuntu-13.10-server-amd64.iso is write-protected, mounting read-only

Пример изображения о том, как это будет выглядеть:

Выполнение:

проведение

Результат:

Результат

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

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

Это создаст новую опцию под названием «Install Custom Ubuntu server» и добавит файл кикстарта (файл кикстарта используется для изменения опций; объяснено ниже):

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 это просто ярлык, который вы можете использовать, чтобы определить свой вариант.
  • «Install Custom Ubuntu Server» - это текст, который будет отображаться в меню загрузки.
  • Если вы хотите, чтобы ваш пункт меню один по умолчанию, вам нужно всего лишь изменить default installк default myownoption.

Пример:

введите описание изображения здесь

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

введите описание изображения здесь

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

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

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

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

sudo apt-get install system-config-kickstart
ksconfig

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

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

введите описание изображения здесь

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

введите описание изображения здесь

введите описание изображения здесь

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

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

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

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

введите описание изображения здесь

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

введите описание изображения здесь

Предпосевная (ручная настройка файла конфигурации)

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

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

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

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

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

введите описание изображения здесь

И добавление lamp-сервера для установки вместе с 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-server mysql-server 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/
  • 2-я строка создает новую контрольную сумму и нужна только при добавлении пакетов.
  • третий делает 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
источник
Можно ли это использовать для настольных версий?
Брайам
БОЛЬШОЕ СПАСИБО!! Я действительно не могу отблагодарить вас за то, что вы сделали этот процесс легким и плавным! У меня просто была одна проблема, после того, как я установил VirtualBox и решил установить свой настроенный сервер, я получил это сообщение об ошибке! Действительный XHTML .
Шадин
Да, я сделал. на самом деле я предпочитаю, если вы посмотрите на мой начальный файл [ megafileupload.com/en/file/493602/… Я не уверен в том, как я добавил пакеты в конец файла
Shadin
ой! Благодарность! Я попробую это и вернусь к вам. также я хотел бы знать, есть ли какой-либо способ удалить какие-либо дополнительные серверы во время этого процесса из образа, такие как почтовый сервер, веб-сервер, JBOSS и т. д. Я хочу, чтобы он включал только postgresql и его пакеты.
Шадин
2
@shadin, смотри, как это делает Люцио ;-) Убрал комментарии. Брайам: да, может. Хотя на настольном компьютере нужно изменить гораздо больше вещей, это начало (кикстарт тоже работает, если вы его исправили, но он все еще ограничен, поддерживается Ubuntu).
Rinzwind