Come creare un server Ubuntu personalizzato ISO?


42

Vorrei creare un Ubuntu Server 12.04 ISO personalizzato ma non sono riuscito a trovare un approccio chiaro su come farlo. Vedo che Ubuntu-builder è un'ottima app per creare un desktop Ubuntu personalizzato, ma per quanto riguarda Ubuntu Server?

Risposte:


61

Scaricare

Scarica l'ISO del server Ubuntu da questa posizione . Hai la possibilità di andare a 32-bit o 64-bit. Il nome del file per l'edizione del server sarà simile al seguente:

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

Assumerò la versione 13.10 a 64 bit nelle seguenti istruzioni, quindi adegua i comandi al download che hai eseguito. Conservare una copia del download in modo da poter creare più nuove versioni dal download originale nel caso in cui sia necessario migliorare il progetto. Supporrò anche che ~/Downloads/facciamo tutto il nostro lavoro.

Configurazione iniziale

Ciò creerà 2 directory "iso" e "isoNew" all'interno della directory Download, monterà l'ISO e copierà il contenuto da "iso" su "isoNew" per avviare un nuovo progetto.

Mettilo in un file di testo, salvalo, rendilo eseguibile ed eseguilo:

# 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/
  • Verrà visualizzato 1 messaggio di errore: mount: block device /discworld/Downloads/ubuntu-13.10-server-amd64.iso is write-protected, mounting read-only

Immagini di esempio su come apparirà:

Esecuzione:

Esecuzione

Risultato:

Risultato

Aggiunta di un'opzione del menu di avvio

Le opzioni di menu per il programma di installazione sono memorizzate isolinux/txt.cfge puoi creare nuove opzioni tra default installe label install.

Ciò creerà una nuova opzione chiamata "Installa server Ubuntu personalizzato" e aggiungerà un file kickstart (il file kickstart viene utilizzato per modificare le opzioni; spiegato di seguito):

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 è solo un'etichetta che puoi usare per identificare la tua opzione.
  • "Installa Ubuntu Server personalizzato" è il testo che comparirà nel menu di avvio.
  • Se si vuole rendere la vostra opzione di menu quello di default, avete solo bisogno di cambiare il default installverso default myownoption.

Esempio:

inserisci qui la descrizione dell'immagine

e modificando il file (ho usato nano ma se disponibile uso gedit, vim o un altro editor). Ecco la mia aggiunta a questo file in cui ho usato "lampserver" come etichetta e anche il mio seme sarà chiamato "lamperver".

inserisci qui la descrizione dell'immagine

Kickstart (impostazione grafica di un file di configurazione)

Il metodo di installazione di Red Hat Kickstart viene utilizzato principalmente (ma non esclusivamente) dal sistema operativo Red Hat Enterprise Linux per eseguire automaticamente l'installazione e la configurazione automatica del sistema operativo.

Documentazione su preconfigurazione / kickstart per Ubuntu . Ubuntu ha un supporto limitato per kickstart (e preseeding); una delle cose mancanti è un'interfaccia grafica per la preconfigurazione. Kickstart ha avere opzioni per questo (vedi le immagini), ma questi non sembrano lavorare su Ubuntu. È possibile farlo manualmente (consultare la sezione Predicatura di seguito).

Installazione e avvio del kickstart:

sudo apt-get install system-config-kickstart
ksconfig

** AVVERTIMENTO **

kickstart è infastidito in Ubuntu 13.10 e quando lo avvia, si rompe. Ecco una soluzione . Inserisci la patch nel commento in un file di testo, salvala (l'ho chiamata "patch") e impegnala:

inserisci qui la descrizione dell'immagine

Dopo che ha ksconfigfunzionato e avvierà un editor di configurazione che ti consente di manipolare molte opzioni.

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Vedi Red Hat Linux 7.2: la guida ufficiale alla personalizzazione di Red Hat Linux per una descrizione di tutte le opzioni che puoi impostare.

Al termine, salvare le modifiche in un ks.cfgfile e copiarlo nell'ISO che stiamo cambiando:

sudo cp ks.cfg ~/Downloads/newIso/preseed/ks-custom.cfg
  • Se si modifica qualcosa qui, l'installatore SALVERÀ chiedendo tali informazioni se ritenute valide. Se non hai modificato un'opzione, il programma di installazione ti chiederà comunque di rispondere.
  • Puoi anche scaricare i file kickstart e salvarli come ks-custom.cfgin ~/Downloads/newIso/preseed/.

Esempio in cui ho inserito le mie credenziali. L'ho iniziato con sudo ksconfigdalla riga di comando.

inserisci qui la descrizione dell'immagine

E salvandolo nel progetto:

inserisci qui la descrizione dell'immagine

Preseeding (impostazione manuale di un file di configurazione)

La previsione preliminare fornisce un modo per impostare le risposte alle domande poste durante il processo di installazione, senza dover inserire manualmente le risposte mentre l'installazione è in esecuzione. Ciò consente di automatizzare completamente la maggior parte dei tipi di installazione e offre anche alcune funzionalità non disponibili durante le normali installazioni.

Copia il preconfigurato per l'installazione normale sulla tua etichetta:

sudo cp newIso/preseed/ubuntu-server.seed newIso/preseed/ubuntu-myownoption.seed
  • cambia myownoptionin quello che hai usato.

Ora per modificare le impostazioni. Usando debconf-get-selectionsda debconf-utilspuoi esaminare quali parametri puoi usare con software specifici.

Esempio di impostazione:

inserisci qui la descrizione dell'immagine

E aggiungendo il server lampada da installare con taskel:

inserisci qui la descrizione dell'immagine

  • Se vuoi aggiungere i pacchetti "openssh" e "build-essential" puoi includerlo nel file seme:

    d-i pkgsel/include string openssh-server build-essential
    
  • Un esempio per 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
    
  • È possibile aggiungere queste opzioni a custom-iso/preseed/ubuntu-myownoption.seed.

  • Spiegazione / esempi usando le impostazioni di debconf .
  • Un file preconfigurato di esempio
  • Esempi riguardanti: Localizzazione, Configurazione della rete, Console di rete, Orologio e ora, partizionamento
  • Alla fine del file preconfigurato è possibile aggiungere pacchetti (esempi casuali) in questo modo:

    % pacchetti openssh-server mysql-server apache2

Installazione offline

Nel caso in cui si aggiungano pacchetti e quelli NON siano nell'ISO, il programma di installazione li scaricherà dal repository. Se non si dispone di una connessione Internet attiva, ciò sarà problematico, quindi sarà necessario aggiungere tutti quei pacchetti (e dipendenze) al progetto e masterizzarli su un DVD. Fortunatamente l'ISO del server normale ha molto spazio, ma attenzione: i CD e / o i DVD hanno dimensioni limitate.

Scarica tutti i pacchetti DEB di cui hai bisogno e archiviali ~/Downloads/. Queste 2 directory sono necessarie sulla nuova ISO:

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

E questo aggiornerà il nostro progetto con i nuovi pacchetti:

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/

Crea l'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/
  • la seconda riga crea un nuovo checksum ed è necessaria solo quando si aggiungono pacchetti.
  • il terzo crea un ISO dal tuo progetto che puoi masterizzare su un DVD.

Risultato:

inserisci qui la descrizione dell'immagine

E ora puoi provarlo bruciando e installandolo. Consiglio di utilizzare come macchina virtuale poiché sarà più veloce per testare la ISO iniziale creata (altrimenti continuerai a riavviare).

E dopo aver installato VirtualBox ottengo il seguente menu:

inserisci qui la descrizione dell'immagine

Caccia agli insetti

Si sono verificati 1 problemi durante l'installazione: l'impostazione predefinita non è stata selezionata.

Shadin. Dal tuo file seme nel commento

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

probabilmente deve essere così:

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

Abbandona la tua linea di task non vuoi un server LAMP (es. Apache, Mysql, Php)


Può essere usato per le versioni desktop?
Braiam,

GRAZIE MILLE!! Non posso davvero ringraziarti abbastanza per aver reso questo processo facile e fluido! Ho appena avuto un problema, dopo aver installato VirtualBox e scelto di installare il mio server personalizzato, ho ricevuto questo messaggio di errore! XHTML valido .
Shadin,

Si l'ho fatto. in realtà preferisco dare un'occhiata al mio file seme [ megafileupload.com/en/file/493602/… Non sono sicuro del modo in cui ho aggiunto i pacchetti alla fine del file
Shadin

Oh! Grazie! Ci proverò e ti risponderò. inoltre vorrei sapere se esiste un modo per rimuovere eventuali server aggiuntivi durante questo processo dall'immagine come mail server, web server, JBOSS ... ecc. Voglio che includa solo postgresql e i suoi pacchetti.
Shadin,

2
@shadin va bene guarda come lo fa Lucio ;-) Puliti commenti. Braiam: sì, può. Sebbene ci siano molte più cose da modificare sul desktop, questo è un inizio (kickstart funziona anche se lo patch, ma è ancora limitato supportato da Ubuntu).
Rinzwind,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.