¿Cómo crear un ISO de servidor Ubuntu personalizado?

42

Me gustaría crear un Ubuntu Server 12.04 ISO personalizado, pero no pude encontrar un enfoque claro sobre cómo hacerlo. Veo que Ubuntu-builder es una muy buena aplicación para crear un escritorio Ubuntu personalizado, pero ¿qué pasa con Ubuntu Server?

Shadin
fuente

Respuestas:

61

Descargar

Descargue el ISO del servidor Ubuntu desde esta ubicación . Tiene la opción de utilizar 32 bits o 64 bits. El nombre del archivo para la edición del servidor será similar a este:

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

Asumiré la versión 13.10 de 64 bits en las siguientes instrucciones, así que ajuste los comandos a la descarga que realizó. Guarde una copia de su descarga para que pueda crear múltiples versiones nuevas de la descarga original en caso de que necesite mejorar su proyecto. También asumiré que solíamos ~/Downloads/hacer todo nuestro trabajo.

Configuración inicial

Esto creará 2 directorios "iso" e "isoNew" dentro de su directorio de Descargas, montará el ISO y copiará el contenido de "iso" a "isoNew" para comenzar un nuevo proyecto.

Ponga esto en un archivo de texto, guárdelo, hágalo ejecutable y ejecútelo:

# 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/
  • Lanzará 1 mensaje de error: mount: block device /discworld/Downloads/ubuntu-13.10-server-amd64.iso is write-protected, mounting read-only

Imágenes de ejemplo sobre cómo se verá esto:

Ejecutando:

Ejecutando

Resultado:

Resultado

Agregar una opción de menú de arranque

Las opciones de menú para el instalador se almacenan isolinux/txt.cfgy puede crear nuevas opciones entre default instally label install.

Esto creará una nueva opción llamada "Instalar servidor Ubuntu personalizado" y agregará un archivo kickstart (el archivo kickstart se usa para modificar las opciones; se explica a continuación):

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 es solo una etiqueta que puede usar para identificar su opción.
  • "Instalar el servidor Ubuntu personalizado" es el texto que aparecerá en el menú de arranque.
  • Si desea que su opción de menú sea la predeterminada, solo necesita cambiarla default installa default myownoption.

Ejemplo:

ingrese la descripción de la imagen aquí

y editando el archivo (usé nano pero si está disponible use gedit, vim u otro editor). Aquí está mi adición a este archivo donde utilicé "lamperver" como etiqueta y mi semilla también se llamará "lamperver".

ingrese la descripción de la imagen aquí

Kickstart (configuración gráfica de un archivo de configuración)

El sistema operativo Red Hat Enterprise Linux utiliza el método de instalación Red Hat Kickstart principalmente (pero no exclusivamente) para realizar automáticamente la instalación y configuración desatendida del sistema operativo.

Documentación sobre preseeding / kickstart para Ubuntu . Ubuntu tiene soporte limitado para kickstart (y preseeding); Una de las cosas que faltan es una interfaz gráfica para la preselección. Kickstart hace tener opciones para esto (ver las imágenes) pero éstos no parecen funcionar en Ubuntu. Sin embargo, puede hacerlo manualmente (consulte Presentación a continuación).

Instalación y arranque kickstart:

sudo apt-get install system-config-kickstart
ksconfig

** ADVERTENCIA **

kickstart tiene errores en Ubuntu 13.10 y al iniciarlo, se equivoca. Aquí hay una solución . Coloque el parche en el comentario en un archivo de texto, guárdelo (lo llamé "parche") y confírmelo:

ingrese la descripción de la imagen aquí

Después de eso ksconfigfuncionó e iniciará un editor de configuración que le permite manipular muchas opciones.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Consulte Red Hat Linux 7.2: la Guía oficial de personalización de Red Hat Linux para obtener una descripción de todas las opciones que puede configurar.

Una vez que haya terminado, guarde los cambios en un ks.cfgarchivo y cópielo a la ISO que estamos cambiando:

sudo cp ks.cfg ~/Downloads/newIso/preseed/ks-custom.cfg
  • Si cambia algo aquí, el instalador SALTARÁ pidiendo esa información si se considera válida. Si no cambió una opción, el instalador aún le pedirá que responda.
  • También puede descargar archivos kickstart y guardarlos como ks-custom.cfgen ~/Downloads/newIso/preseed/.

Ejemplo donde inserté mis credenciales. Lo empecé con sudo ksconfigdesde la línea de comandos.

ingrese la descripción de la imagen aquí

Y guardarlo en el proyecto:

ingrese la descripción de la imagen aquí

Presentación (configuración manual de un archivo de configuración)

Presentar proporciona una manera de establecer respuestas a las preguntas formuladas durante el proceso de instalación, sin tener que ingresar manualmente las respuestas mientras se ejecuta la instalación. Esto hace posible automatizar completamente la mayoría de los tipos de instalación e incluso ofrece algunas características que no están disponibles durante las instalaciones normales.

Copie los valores predeterminados para la instalación normal en su propia etiqueta:

sudo cp newIso/preseed/ubuntu-server.seed newIso/preseed/ubuntu-myownoption.seed
  • cambia el myownoptiona lo que usaste.

Ahora para cambiar la configuración. Usando debconf-get-selectionsdesde el debconf-utilspuede investigar qué parámetros puede usar con un software específico.

Ejemplo configurando esto:

ingrese la descripción de la imagen aquí

Y agregando lamp-server para ser instalado con taskel:

ingrese la descripción de la imagen aquí

  • Si desea agregar paquetes "openssh" y "build-essential" puede incluir esto en el archivo semilla:

    d-i pkgsel/include string openssh-server build-essential
    
  • Un ejemplo para 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
    
  • Puede agregar estas opciones a custom-iso/preseed/ubuntu-myownoption.seed.

  • Explicación / ejemplos usando la configuración de debconf .
  • Un ejemplo de archivo preseleccionado
  • Ejemplos relacionados con: localización, configuración de red, consola de red, reloj y hora, particionamiento
  • Al final del archivo preestablecido, puede agregar paquetes (ejemplos aleatorios) como este:

    % paquetes openssh-server mysql-server apache2

Instalación fuera de línea

En caso de que agregue paquetes y estos NO estén en la ISO, el instalador los descargará del repositorio. Si no tiene una conexión a Internet activa, esto será problemático, por lo que deberá agregar todos esos paquetes (y dependencias) a su proyecto y grabarlos en un DVD. Afortunadamente, el ISO normal del servidor tiene mucho espacio, pero tenga cuidado: los CD y / o DVD tienen un tamaño limitado.

Descargue todos los paquetes DEB que necesite y guárdelos ~/Downloads/. Estos 2 directorios son necesarios en el nuevo ISO:

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

Y esto actualizará nuestro proyecto con los nuevos paquetes:

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 el 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 segunda línea crea una nueva suma de verificación y solo es necesaria al agregar paquetes.
  • el tercero crea un ISO de su proyecto que puede grabar en un DVD.

Resultado:

ingrese la descripción de la imagen aquí

Y ahora puede probarlo en realidad quemándolo e instalándolo. Aconsejaría usarlo como máquina virtual, ya que será más rápido para probar el ISO creado inicialmente (de lo contrario, continuará reiniciando).

Y después de instalar VirtualBox me sale el siguiente menú:

ingrese la descripción de la imagen aquí

Caza de insectos

Se encontró con 1 problemas durante la instalación: no se seleccionó el predeterminado.

Shadin De su archivo semilla en comentario

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

probablemente necesita ser así:

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

Deshágase de la línea de tareas de usted no desea un servidor LAMP (es decir, Apache, Mysql, Php)

Rinzwind
fuente
¿Se puede usar para versiones de escritorio?
Braiam
¡¡MUCHAS GRACIAS!! ¡Realmente no puedo agradecerles lo suficiente por hacer este proceso fácil y sin problemas! ¡Solo tuve un problema, después de instalar VirtualBox y elegir instalar mi servidor personalizado, recibí este mensaje de error! Válido XHTML .
Shadin
Sí, lo hice. de hecho, prefiero que echen un vistazo a mi archivo semilla [ megafileupload.com/en/file/493602/… No estoy seguro de la forma en que agregué los paquetes al final del archivo
Shadin
¡Oh! ¡Gracias! Lo intentaré y te responderé. También me gustaría saber si hay alguna forma de eliminar servidores adicionales durante este proceso de la imagen, como el servidor de correo, el servidor web, JBOSS ... etc. Quiero que incluya solo postgresql y sus paquetes.
Shadin
2
@shadin eso está bien, mira cómo Lucio hace eso ;-) Comentarios limpios. Braiam: si puede. Aunque hay muchas más cosas para alterar en el escritorio, este es un comienzo (kickstart también funciona si lo parches pero Ubuntu todavía lo admite de manera limitada).
Rinzwind