Przewodnik po szczegółach dostosowywania Instalatora Ubuntu

9

Próbowałem przeczytać przewodniki dotyczące wstępnego sadzenia i dostosowywania , ale nie rozumiałem, jak i gdzie zmodyfikować, które opcje. Mogę tylko wygodnie uczyć się na praktycznych przykładach, dla których zadaję to pytanie.

Zastanawiam się nad przygotowaniem i dostosowaniem rozwiązania, aby wykonać tylko kilka konkretnych zadań:

  • Całkowicie przepisz pakiety instalowane domyślnie, podobnie jak minimalne instalacje z --no-install-recommendsflagą apt-get.
  • Dodaj kilka zastrzeżonych aplikacji do domyślnej listy instalacji
  • Automatycznie instaluj i montuj zastrzeżone sterowniki podczas instalacji i sesji na żywo
  • Edytuj domyślne pliki konfiguracyjne dla aplikacji instalowanych domyślnie
  • Określ partycje wraz z uprawnieniami
  • Zmodyfikuj pulę pakietów na nośniku instalacyjnym (CD / DVD / USB), najlepiej za pomocą narzędzi wiersza poleceń podobnych do apt-geti aptitude.

Czy ktoś może mi powiedzieć, jak skonfigurować wstępnie ustawioną opcję, aby wykonywać tylko powyższe czynności?

Uwaga : Nie rozumiem części GPG po dodaniu / usunięciu pakietów w puli.

PS Trzeci punkt ma szczególne znaczenie.

Oxwivi
źródło
Dla jasności, czy „Instalator Ubuntu” odnosi się do graficznego (unikatowość) czy alternatywnego (instalator Debian)?
komputes
@komputes, albo zrobi.
Oxwivi

Odpowiedzi:

6

Aby zapoznać się z wstępną wersją, możesz odnieść się do instrukcji instalacji i386, która zawiera następującą wstępną wersję:

  /usr/share/doc/installation-guide-i386/example-preseed.txt.gz
  • Całkowicie przepisz pakiety zainstalowane domyślnie, podobnie jak minimalne instalacje
  • Dodaj kilka zastrzeżonych aplikacji do domyślnej listy instalacji

Aby podać listę pakietów, które chcesz zainstalować, możesz poszukać następującego wiersza:

  tasksel tasksel/first   multiselect ubuntu-desktop

Gdzie „ubuntu-desktop” można zmienić dla dowolnej liczby pakietów lub pakietów meta.

  • Automatycznie instaluj i montuj zastrzeżone sterowniki podczas instalacji i sesji na żywo

Inne, które określają potrzebne pakiety (dla zastrzeżonych sterowników), nie jestem pewien, jak by to osiągnąć. Na marginesie: „montujesz” partycję, „ładujesz” moduł / sterownik jądra.

  • Edytuj domyślne pliki konfiguracyjne dla aplikacji instalowanych domyślnie

Aby wprowadzić tego rodzaju zmiany w skryptach, prawdopodobnie zajrzysz do:

  d-i preseed/late_command string ...

Gdzie „...” można zastąpić dowolnymi poleceniami, takimi jak na przykład sed -i.

  • Określ partycje wraz z uprawnieniami

W powyższym przykładzie znajduje się sekcja partycji.

Wszechobecność z nasionami

Casper obsługuje wstępnie ustawione nasiona, a wszechobecność może mieć wiele wstępnie ustawionych wartości. Oto niektóre ze zmiennych, które można wstępnie zastosować w odniesieniu do wszechobecności:

ubiquity countrychooser/shortlist select US
ubiquity languagechooser/language-name select English
ubiquity localechooser/supported-locales multiselect en_US.UTF-8
ubiquity ubiquity/summary note
ubiquity ubiquity/reboot boolean true
ubiquity ubiquity/poweroff boolean true
ubiquity ubiquity/success_command string ...

Tam, gdzie „...” zawierałoby to samo, co wspomniane powyżej polecenie późno, polecenie sukces jest czytane przez wszechobecność, a polecenie późne przez di.

komputy
źródło
Czy nie ma możliwości wcześniejszej zmiany plików konfiguracyjnych? Jak zapobiec instalacji zalecanych pakietów? Jak dodać zastrzeżone pakiety do instalacji offline?
Oxwivi,
Wygląda na to, że chcesz utworzyć niestandardowy obraz, jak opisano tutaj: help.ubuntu.com/community/LiveCDCustomization Obraz może również zawierać wstępnie ustawiony plik, w którym możesz zmienić pliki konfiguracyjne zgodnie z powyższym opisem. Innym podejściem jest to, że możesz również tworzyć własne pakiety dla niektórych dostosowań.
komputes
Dobra, zapomnij o zmianie konfiguracji, czy muszę niestandardowe instrukcje na dysku CD, aby domyślnie uwzględniać pakiety nieobecne na dysku?
Oxwivi,
Zamontowałem obraz, skopiowałem zawartość do katalogu, zmodyfikowałem parametry Ubiquity. Jak to sfinalizować?
Oxwivi,
Aby sfinalizować / zbudować obraz ISO, postępuj zgodnie z rozmową zatytułowaną „Produkcja obrazu CD” tutaj: help.ubuntu.com/community/LiveCDCustomization
komputes
3

Poniżej utworzono zmodyfikowany obraz rozruchowy. Wypal go na płycie CD lub włóż ISO do maszyny wirtualnej, aby go przetestować. Będziesz potrzebował cpioi genisoimage(to są nazwy pakietów i plików wykonywalnych).

Poniższy plik ma postać pliku Makefile, ale można go wprowadzać interaktywnie. ${IN_ISO}odnosi się do oryginalnego obrazu ISO (użyłem -alternativewersji i sugerowałbym, aby zrobić to samo), ${OUT_ISO}do żądanej nazwy ISO.

# Extract the ISO image to mount/ and copy it to cdroot/
cdroot:
    mkdir -p mount
    sudo mount -o loop ${IN_ISO} mount
    mkdir cdroot
    cd cdroot && tar cf - ../mount --transform 's,^mount/,,' | tar xf -
    sudo umount mount && rm -r mount
    chmod -R a+rw cdroot

# Copy new files to the disk. Content of those files is posted below
prepare: cdroot
    cp isolinux.cfg cdroot/isolinux/isolinux.cfg
    test -e ./initrd.orig.gz || cp cdroot/install/initrd.gz ./initrd.orig.gz
    mkdir -p initrd
    cd initrd && gunzip <../initrd.orig.gz | sudo cpio -i && cd ..
    cp preseed.cfg initrd/preseed.cfg
    cd initrd && find . | cpio -o --format=newc | gzip -9 > ../cdroot/install/initrd.gz && cd ..
    sudo rm -rf initrd

# Create the ISO image. Make sure to use extensions for lower-case filenames    
iso: cdroot prepare
    genisoimage -o ${OUT_ISO} \
        -force-rr -J \
        -b isolinux/isolinux.bin -c isolinux/boot.cat \
        -no-emul-boot -boot-load-size 4 -boot-info-table \
        cdroot

Potrzebujesz dodatkowych plików:

isolinux.cfgkonfiguruje moduł ładujący. Chcesz, aby po prostu się uruchomił i automatycznie przeszedł proces instalacji. To powinno wyglądać tak:

default install
label install
  menu label ^Install my custom Ubuntu
  kernel /install/vmlinuz
  append auto initrd=/install/initrd.gz --
# Leave 2 seconds to abort or debug
prompt 1
timeout 20

To wszystkie przygotowania, których potrzebujemy przed faktyczną konfiguracją instalacji. Pobierz przykładowy przykład i nazwij go preseed.cfg. Przejrzyj go i edytuj, co chcesz. Ważne opcje to:

# Locale
d-i debian-installer/locale string en_US
d-i time/zone string US/Eastern

# Partitioning. The following settings WILL OVERWRITE ANYTHING
# Don't insert the CD into your boss' computer ...
d-i partman-auto/method string regular
d-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

# To create a normal user account.
d-i passwd/user-fullname string Ubuntu User
d-i passwd/username string ubuntu
d-i passwd/user-password password insecure
d-i passwd/user-password-again password insecure
d-i user-setup/allow-password-weak boolean true

# Package selection. Don't include ubuntu-desktop to significantly reduce the content
tasksel tasksel/first multiselect standard

#d-i preseed/early_command string driver installation commands (stuff needed to boot)
#d-i preseed/late_command string driver installation commands, custom software, etc.

Ale sugeruję, abyś nie używał powyższego jako przykładu, ale pobierz przykład Ubuntu i skonfiguruj go do swoich potrzeb late_command, możesz zrobić wszystko od powłoki, w tym pobrać i uruchomić skrypt, który instaluje i konfiguruje oprogramowanie niestandardowe. Na przykład użyj tego jako late_command:

d-i preseed/late_command string in-target sh -c 'wget https://example.com/my/install.sh && sh install.sh'

Alternatywnie możesz umieścić install.shw initrd powyżej i wykonać go bezpośrednio. Jego zawartość może wyglądać następująco:

#!/bin/sh
aptitude install -y x11-apps any-package-you-want-installed
wget http://proprietary.com/drivers/for/ubuntu.tar.gz -O- | tar xf - && sh drivers/instal.sh

To naprawdę zależy od tego, jak działa twoja zastrzeżona procedura instalacji sterownika.

phihag
źródło
Tak jak powiedziałem w pytaniu, potrzebuję wskazówek, jak dokładnie do zadań, które wymieniłem; jak przepisać pakiety, które zostaną zainstalowane? Co z automatyczną instalacją zastrzeżonych sterowników?
Oxwivi,
@Oxwivi Napisz skrypt, który zainstaluje wszystko, co chcesz, a następnie pobierz i uruchom go late_command. Package selectionjest częścią, której możesz użyć do zainstalowania własnych pakietów, ale możesz to również zrobić w skrypcie.
phihag
1
@Oxwivi Możesz zainstalować dżokeja, a później usunąć go za aptitude purge jockeypomocą skryptu. Nie jestem pewien, co rozumiesz przez „ogólny sposób instalowania jakichkolwiek prawnie zastrzeżonych sterowników”. Jest to ogólny sposób instalowania dowolnych sterowników z ograniczeniami, wystarczy umieścić pakiet aptitude install -yskryptu, który instalujesz, w tasksel lub w skrypcie, i to zadziała. Jeśli chcesz, aby Twój obraz działał na wielu komputerach, prawdopodobnie będziesz musiał znaleźć sposób, aby poprosić dżokeja o wszystkich odpowiednich, zastrzeżonych kierowców. ...
phihag,
1
@Ocwivi ... Jednak instalacja wszystkich dostępnych zastrzeżonych sterowników jest generalnie złym pomysłem: zastrzeżone sterowniki są zwykle stare, nieobsługiwane i wymagają dodatkowej niestandardowej konfiguracji. Musisz także upewnić się, że masz prawo do rozpowszechniania niewolnych sterowników.
phihag
1
@Oxwivi To zaufanie jest bezpodstawne, biorąc pod uwagę, że każdy może umieścić wszystko w niewolnych repozytoriach. Jednak ta dyskusja jest daleko poza zakresem tego pytania (o przedsesekcji). Należy zapytać, w jaki sposób można uzyskać listę odpowiednich, zastrzeżonych sterowników dla bieżącego systemu.
phihag