Jak stworzyć niestandardowy ISO Ubuntu Server?

42

Chciałbym stworzyć niestandardowy ISO Ubuntu Server 12.04, ale nie mogłem znaleźć jasnego podejścia do tego, jak to zrobić. Widzę, że Ubuntu-builder to bardzo dobra aplikacja do tworzenia niestandardowego pulpitu Ubuntu, ale co z Ubuntu Server?

Shadin
źródło

Odpowiedzi:

61

Pobieranie

Pobierz ISO serwera Ubuntu z tej lokalizacji . Możesz wybrać wersję 32-bitową lub 64-bitową. Nazwa pliku dla edycji serwera będzie wyglądać podobnie do tego:

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

Przyjmę wersję 64.10 bitową 13.10 w poniższych instrukcjach, więc dostosuj polecenia do pobranego pliku. Zachowaj kopię swojego pliku do pobrania, aby móc utworzyć wiele nowych wersji z oryginalnego pliku do pobrania na wypadek konieczności ulepszenia projektu. Zakładam również, że ~/Downloads/wykonujemy całą naszą pracę.

Początkowe ustawienia

Spowoduje to utworzenie 2 katalogów „iso” i „isoNew” w katalogu Pobrane, podłączenie ISO i skopiowanie zawartości z „iso” do „isoNew”, aby rozpocząć nowy projekt.

Umieść to w pliku tekstowym, zapisz go, uruchom i uruchom:

# 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/
  • Wyrzuci 1 komunikat o błędzie: mount: block device /discworld/Downloads/ubuntu-13.10-server-amd64.iso is write-protected, mounting read-only

Przykładowe obrazy, jak to będzie wyglądać:

Wykonywanie:

Wykonywanie

Wynik:

Wynik

Dodanie opcji menu rozruchu

Opcje menu dla instalatora są zapisane isolinux/txt.cfgi możesz tworzyć nowe opcje pomiędzy default installi label install.

Spowoduje to utworzenie nowej opcji o nazwie „Zainstaluj niestandardowy serwer Ubuntu” i doda plik kickstart (plik kickstart służy do zmiany opcji; wyjaśniono poniżej):

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 to tylko etykieta, której możesz użyć do zidentyfikowania swojej opcji.
  • „Zainstaluj niestandardowy serwer Ubuntu” to tekst, który pojawi się w menu rozruchowym.
  • Jeśli chcesz, aby Twoja opcja menu z jedną domyślną, trzeba tylko zmienić default installsię default myownoption.

Przykład:

wprowadź opis zdjęcia tutaj

i edycja pliku (użyłem nano, ale jeśli jest dostępny, użyj gedit, vim lub innego edytora). Oto mój dodatek do tego pliku, w którym użyłem „lampserver” jako etykiety, a moje ziarno będzie również nazywać się „lampserver”.

wprowadź opis zdjęcia tutaj

Kickstart (graficzne konfigurowanie pliku konfiguracyjnego)

Metoda instalacji Red Hat Kickstart jest używana przede wszystkim (ale nie wyłącznie) przez system operacyjny Red Hat Enterprise Linux do automatycznego wykonywania instalacji nienadzorowanej i konfiguracji systemu operacyjnego.

Dokumentacja dotycząca wstępnego siewu / kickstart dla Ubuntu . Ubuntu ma ograniczone wsparcie dla kickstartu (i preseeding); jedną z brakujących rzeczy jest graficzny interfejs do wstępnego siewu. Kickstart ma do tego opcje (patrz zdjęcia), ale wydaje się, że nie działają one w Ubuntu. Możesz to zrobić ręcznie (patrz: Uprawa poniżej).

Instalacja i uruchomienie kickstart:

sudo apt-get install system-config-kickstart
ksconfig

** OSTRZEŻENIE **

kickstart jest błędny w Ubuntu 13.10, a podczas uruchamiania się nie udaje. Oto poprawka . Umieść łatkę w komentarzu w pliku tekstowym, zapisz ją (nazwałem ją „łatką”) i zatwierdź:

wprowadź opis zdjęcia tutaj

Po tym ksconfigzadziała i uruchomi się edytor konfiguracji, który pozwala manipulować wieloma opcjami.

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Zobacz Red Hat Linux 7.2: Oficjalny przewodnik dostosowywania Red Hat Linux, aby uzyskać opis wszystkich opcji, które możesz ustawić.

Po zakończeniu zapisz zmiany w ks.cfgpliku i skopiuj go do zmienianego ISO:

sudo cp ks.cfg ~/Downloads/newIso/preseed/ks-custom.cfg
  • Jeśli cokolwiek tu zmienisz, instalator pominie prośbę o podanie tych informacji, jeśli zostanie uznana za prawidłową. Jeśli nie zmieniłeś opcji, instalator nadal prosi o odpowiedź.
  • Można również pobrać kickstartu pliki i zapisywać w tych jak ks-custom.cfgw ~/Downloads/newIso/preseed/.

Przykład, w którym podałem swoje dane uwierzytelniające. Zacząłem sudo ksconfigod wiersza poleceń.

wprowadź opis zdjęcia tutaj

I zapisując go do projektu:

wprowadź opis zdjęcia tutaj

Przedsiewne (ręczne konfigurowanie pliku konfiguracyjnego)

Preseeding zapewnia sposób ustawiania odpowiedzi na pytania zadawane podczas procesu instalacji, bez konieczności ręcznego wprowadzania odpowiedzi podczas instalacji. Umożliwia to pełną automatyzację większości typów instalacji, a nawet oferuje niektóre funkcje niedostępne podczas normalnych instalacji.

Skopiuj wstępne ustawienia normalnej instalacji na własną etykietę:

sudo cp newIso/preseed/ubuntu-server.seed newIso/preseed/ubuntu-myownoption.seed
  • zmień na myownoptionto, czego użyłeś.

Teraz do zmiany ustawień. Za debconf-get-selectionspomocą debconf-utilsmożesz sprawdzić, jakich parametrów możesz użyć z konkretnym oprogramowaniem.

Przykład konfiguracji:

wprowadź opis zdjęcia tutaj

I dodanie lampy-serwera do zainstalowania z tasksel:

wprowadź opis zdjęcia tutaj

  • Jeśli chcesz dodać pakiety „openssh” i „build-essential”, możesz dołączyć to do pliku źródłowego:

    d-i pkgsel/include string openssh-server build-essential
    
  • Przykład dla 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
    
  • Możesz dodać te opcje do custom-iso/preseed/ubuntu-myownoption.seed.

  • Wyjaśnienie / przykłady z użyciem ustawień debconf .
  • Przykładowy plik predefiniowany
  • Przykłady dotyczące: lokalizacji, konfiguracji sieci, konsoli sieci, zegara i czasu, partycjonowania
  • Na końcu wstępnie przygotowanego pliku możesz dodać pakiety (losowe przykłady) w następujący sposób:

    % pakietów openssh-server mysql-server apache2

Instalacja offline

W przypadku dodania pakietów, których NIE ma w ISO, instalator pobierze je z repozytorium. Jeśli nie masz aktywnego połączenia z Internetem, będzie to stanowić problem, więc musisz dodać wszystkie te pakiety (i zależności) do swojego projektu i nagrać je na dysk DVD. Na szczęście normalne ISO serwera ma dużo miejsca, ale uwaga: płyty CD i / lub DVD mają ograniczony rozmiar.

Pobierz wszystkie potrzebne pakiety DEB i przechowuj je ~/Downloads/. Te dwa katalogi są potrzebne w nowym ISO:

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

A to zaktualizuje nasz projekt o nowe pakiety:

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/

Utwórz 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. linia tworzy nową sumę kontrolną i jest potrzebna tylko podczas dodawania pakietów.
  • 3. tworzy ISO z twojego projektu, który możesz nagrać na DVD.

Wynik:

wprowadź opis zdjęcia tutaj

A teraz możesz go wypróbować, wypalając i instalując. Radziłbym używać go jako maszyny wirtualnej, ponieważ będzie ona szybsza do testowania początkowo utworzonego ISO (w przeciwnym razie będziesz się ponownie uruchamiał).

Po zainstalowaniu VirtualBox otrzymuję następujące menu:

wprowadź opis zdjęcia tutaj

Polowanie na robale

Wystąpiły 1 problemy podczas instalacji: domyślnie nie wybrano.

Shadin Z pliku źródłowego w komentarzu

### 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

prawdopodobnie musi być tak:

### 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

Porzuć swój wiersz zadań, nie chcesz serwera LAMP (np. Apache, Mysql, Php)

Rinzwind
źródło
Czy można tego użyć w wersjach na komputery stacjonarne?
Braiam
DZIĘKUJĘ BARDZO!! Naprawdę nie mogę ci wystarczająco podziękować za uczynienie tego procesu łatwym i płynnym! Miałem tylko jeden problem, po tym, jak zainstalowałem VirtualBox i zdecydowałem się zainstalować mój dostosowany serwer, dostałem ten komunikat błędu! Prawidłowy XHTML .
Shadin
Tak. właściwie wolę, jeśli spojrzysz na mój plik źródłowy [ megafileupload.com/en/file/493602/... Nie jestem pewien, w jaki sposób dodałem pakiety na końcu pliku
Shadin
O! dzięki! Spróbuję i skontaktuję się z tobą. Chciałbym również wiedzieć, czy istnieje jakiś sposób na usunięcie jakichkolwiek dodatkowych serwerów podczas tego procesu z obrazu, takich jak serwer poczty, serwer WWW, JBOSS .. itp. Chcę, aby zawierał tylko postgresql i jego pakiety.
Shadin
2
@shadin w porządku, patrz, jak robi to Lucio ;-) Wyczyściłem komentarze. Braiam: tak, może. Chociaż jest wiele innych rzeczy do zmiany na pulpicie, jest to początek (kickstart działa również, jeśli go załatałeś, ale nadal jest obsługiwany przez Ubuntu).
Rinzwind