Domanda Come creare un ISO di Ubuntu Server personalizzato?


Mi piacerebbe 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 che dire di Ubuntu Server?


41
2018-01-23 11:37


origine




risposte:


Scaricare

Scarica l'ISO del server di 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 a questo:

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

Assumerò la versione 13.10 64-bit nelle seguenti istruzioni, quindi regola i comandi per il download che hai fatto. Conserva una copia del download in modo da poter creare più nuove versioni dal download originale nel caso in cui sia necessario migliorare il progetto. Presumo anche che usiamo ~/Downloads/ fare tutto il nostro lavoro

Configurazione iniziale

Questo creerà 2 directory "iso" e "isoNew" all'interno della directory Download, montare l'ISO e copiare il contenuto da "iso" a "isoNew" per avviare un nuovo progetto.

Metti questo 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/
  • Lancia 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 questo apparirà:

Esecuzione:

Executing

Risultato:

Result

Aggiunta di un'opzione del menu di avvio

Le opzioni di menu per l'installazione sono memorizzate in isolinux/txt.cfg e puoi creare nuove opzioni intermedie default install e label install.

Questo creerà una nuova opzione chiamata "Installa server Ubuntu personalizzato" e aggiungerà un file di kickstart (il file di kickstart viene usato 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 server Ubuntu personalizzato" è il testo che verrà visualizzato nel menu di avvio.
  • Se vuoi rendere la tua opzione di menu quella di default, devi solo cambiare la default install a default myownoption.

Esempio:

enter image description here

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

enter image description here

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 del sistema operativo non presidiato.

Documentazione su preseeding / kickstart per Ubuntu. Ubuntu ha un supporto limitato per kickstart (e preconfigurazione); una delle cose mancanti è un'interfaccia grafica per la preconfigurazione. Kickstart fa avere opzioni per questo (guarda le immagini) ma queste non sembrano funzionare su Ubuntu. Puoi farlo manualmente (vedi Preseeding sotto).

Installazione e avvio kickstart:

sudo apt-get install system-config-kickstart
ksconfig

** AVVERTIMENTO **

kickstart è gestito da un bug in Ubuntu 13.10 e quando viene avviato, si verifica un errore. Ecco una soluzione. Metti la patch nel commento in un file di testo, salvalo (l'ho chiamato "patch") e lo commetti:

enter image description here

Dopo di che ksconfigha funzionato e avvierà un editor di configurazione che consente di manipolare molte opzioni.

enter image description here

enter image description here

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

Al termine, salva le modifiche in a ks.cfg file e copiarlo sull'ISO che stiamo cambiando:

sudo cp ks.cfg ~/Downloads/newIso/preseed/ks-custom.cfg
  • Se cambi qualcosa qui, l'installatore salterà SKIP chiedendo tali informazioni se è considerato valido. Se non hai cambiato un'opzione, l'installatore ti chiederà comunque di rispondere.
  • Puoi anche scaricare kickstart File e salvare quelli in come ks-custom.cfg in ~/Downloads/newIso/preseed/.

Esempio in cui ho inserito le mie credenziali. L'ho iniziato con sudo ksconfig dalla linea di comando.

enter image description here

E salvandolo nel progetto:

enter image description here

preconfigurazione (impostazione manuale di un file di configurazione)

preconfigurazione 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ò rende possibile automatizzare completamente la maggior parte dei tipi di installazione e offre anche alcune funzionalità non disponibili durante le normali installazioni.

Copia la preconfigurata per l'installazione normale sulla tua etichetta:

sudo cp newIso/preseed/ubuntu-server.seed newIso/preseed/ubuntu-myownoption.seed
  • cambiare il myownoption a quello che hai usato

Ora per cambiare le impostazioni. utilizzando debconf-get-selections dal debconf-utils puoi investigare quali parametri puoi usare con un software specifico.

Esempio di impostazione:

enter image description here

E aggiungendo il lamp-server da installare con tasksel:

enter image description here

  • Se vuoi aggiungere 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 esempio di file preconfigurato
  • Esempi per quanto riguarda: localizzazione, configurazione di rete, console di rete, orologio e ora, partizionamento
  • Alla fine del file preseed puoi aggiungere pacchetti (esempi casuali) come questo:

    %Pacchetti openssh-server mysql server apache2

Installazione offline

Nel caso in cui si aggiungano pacchetti e quelli NON sono in 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 i pacchetti (e le dipendenze) al progetto e masterizzarli su un DVD. Fortunatamente il normale server ISO ha un sacco di spazio ma attenzione: CD e / o DVD hanno dimensioni limitate.

Scarica tutti i pacchetti DEB di cui hai bisogno e memorizzali ~/Downloads/. Queste 2 directory sono necessarie per la 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 rende un ISO dal tuo progetto che puoi masterizzare su un DVD.

Risultato:

enter image description here

E ora puoi provarlo eseguendo effettivamente la masterizzazione e installandolo. Ti consiglierei di usare come macchina virtuale dato che sarà più veloce per testare l'ISO creato inizialmente (altrimenti continuerai a riavviare).

E dopo aver installato VirtualBox ottengo il seguente menu:

enter image description here

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 linea tasksel di te non vuoi un server LAMP (per esempio Apache, Mysql, Php)


60
2018-01-23 14:12



Può essere usato per le versioni desktop? - Braiam
GRAZIE MILLE!! Non posso davvero ringraziarti abbastanza per aver reso questo processo facile e scorrevole! 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 se dai 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 tornerò da te. inoltre mi piacerebbe sapere se c'è un modo per rimuovere qualsiasi server aggiuntivo durante questo processo dall'immagine come server di posta, server web, JBOSS, ecc. Voglio che includa solo postgresql e i suoi pacchetti. - Shadin
@shadin che è ok guarda come Lucio fa questo ;-) Commenti puliti. Braiam: sì, può. Anche se ci sono molte più cose da modificare sul desktop, questo è un inizio (kickstart funziona anche se lo si aggiusta ma è ancora limitato da Ubuntu). - Rinzwind