Live manual Debian Live

# Debian Live Manual

# Conceptos básicos

159

# 4. Conceptos básicos

160

Este capítulo contiene una breve descripción del proceso de creación de las imágenes en vivo y las instrucciones para el uso de los tres tipos de imágenes más utilizadas. El tipo de imagen más versátil, `iso-hybrid`, se puede utilizar en una máquina virtual, en medios ópticos u otros dispositivos de almacenamiento USB. En ciertos casos especiales, como se explica más adelante, las imágenes `hdd`, pueden ser las más adecuadas. El capítulo incluye instrucciones detalladas para crear y utilizar una imagen de tipo `netboot`, que es un poco más complicado debido a la configuración necesaria en el servidor. Es un tema ligeramente avanzado para cualquier persona que no esté familiarizada con el arranque en red, pero se incluye aquí porque una vez que se realiza toda la configuración, es una forma muy conveniente para probar y desplegar imágenes de arranque en red local sin la molestia de tratar con los dispositivos de almacenamiento de la imagen.

161

La sección termina con una rápida introducción al arranque desde internet, que es, quizás, la manera más rápida de utilizar diferentes imágenes para diferentes propósitos, cambiando de una a otra según las necesidades, utilizando internet como medio.

162

A lo largo de todo el capítulo se hace a menudo referencia al nombre de las imágenes producidas por defecto por live-build. Si se descarga una imagen ya creada el nombre puede variar.

163

4.1 ¿Qué es un sistema en vivo?

164

Por lo general, un sistema en vivo se refiere a un sistema operativo que arranca en un equipo desde un medio extraíble, como un CD-ROM, dispositivo USB, o desde una red, listo para usar sin ningún tipo de instalación en la unidad de costumbre, con configuración automática en tiempo de ejecución (Ver Términos).

165

With live systems, it's an operating system, built for one of the supported architectures (currently amd64 and arm64). It is made from the following parts:

166

- Imágen del kernel de Linux, normalmente llamada `vmlinuz*`

167

- Imagen del Disco RAM inicial (initrd): Un Disco RAM configurado para el arranque de Linux, que incluya los módulos posiblemente necesarios para montar la imagen del sistema y algunos scripts para ponerlo en marcha.

168

- Imagen del sistema: La imagen del sistema de ficheros raíz. Por lo general, se utiliza un sistema de ficheros comprimido SquashFS para reducir al mínimo el tamaño de la imagen en vivo. Hay que tener en cuenta que es de sólo lectura. Por lo tanto, durante el arranque del sistema en vivo se utiliza un disco RAM y un mecanismo de «unión» que permite escribir ficheros en el sistema en funcionamiento. Sin embargo, todas las modificaciones se perderán al apagar el equipo a menos que se use de modo opcional la persistencia (ver Persistencia).

169

- Gestor de arranque: Una pequeña pieza de código diseñada para arrancar desde el medio de almacenamiento escogido, posiblemente mostrando un menú o un indicador de arranque para permitir la selección de opciones/configuración. Carga el kernel de Linux y su initrd para funcionar con un sistema de ficheros asociado. Se pueden usar soluciones diferentes, dependiendo del medio de almacenamiento de destino y el formato del sistema de ficheros que contenga los componentes mencionados anteriormente: isolinux para arrancar desde un CD o DVD en formato ISO9660, syslinux para arrancar desde el disco duro o unidad USB desde una partición VFAT, extlinux para formatos ext2/3/4 y particiones btrfs, pxelinux para arranque de red PXE, GRUB para particiones ext2/3/4 , etc.

170

You can use live-build to build the system image from your specifications, set up a Linux kernel, its initrd, and a bootloader to run them, all in one medium-dependent format (ISO9660 image, disk image, etc.).

171

4.2 Descarga de imágenes prefabricadas

172

You can download one of the prebuilt images from ‹https://www.debian.org/CD/live/›. For many of the popular desktop environments (GNOME, Xfce, KDE, etc.) a specific live image is prepared.

173

If you are unsure which file to download, use the 'Live GNOME' image from the 'stable' release. You can then skip reading the next sections and run the image in a virtual machine.

174

4.3 Primeros pasos: creación de una imagen ISO híbrida

175

Independientemente del tipo de imagen, cada vez se tendrá que realizar los mismos pasos básicos para construir una imagen. Como primer ejemplo, crear un directorio de trabajo, cambiar a ese directorio y ejecutar la siguiente secuencia de comandos live-build para crear una imagen ISO híbrida básica que contiene sólo el sistema por defecto de Debian sin X.org. Es adecuada para grabarla en un CD o DVD y también para copiarla en un dispositivo USB.

176

El nombre del directorio de trabajo es indiferente, pero si se da un vistazo a los ejemplos utilizados en live-manual, es una buena idea utilizar un nombre que ayude a identificar la imagen con la que está trabajando en cada directorio, especialmente si se está trabajando o experimentando con distintos tipos de imágenes. En este caso, vamos a construir un sistema utilizando los valores por defecto, así que lo vamos a llamar, por ejemplo, live-default.

177

$ mkdir live-default && cd live-default

178

Entonces, ejecutar el comando `lb config`. Esto creará una jerarquía «config/» en el directorio actual que será usada por otros comandos:

179

$ lb config

180

Al no pasar ningún parámetro a estos comandos, se utilizarán todas las opciones por defecto. Ver El comando lb config para más detalles.

181

Ahora que existe un jerarquía «config/», se puede crear la imagen con el comando `lb build`:

182

# lb build

183

This process can take a while, depending on the speed of your computer and your network connection. When it is complete, there should be a `live-image-amd64.hybrid.iso` image file, ready to use, in the current directory.

184

Nota: Si se está construyendo en un sistema amd64 el nombre de la imagen resultante será `live-image-amd64.hybrid.iso`. Tener en cuenta esta convención a lo largo del manual.

185

4.4 Usar una imagen ISO híbrida

186

After either building or downloading an ISO hybrid image the usual next step is to prepare your medium for booting, either CD-R(W) or DVD-R(W) optical media or a USB stick.

187

4.4.1 Grabar una imagen ISO en un medio físico.

188

Grabar una imagen ISO es fácil. Simplemente instalar xorriso y usarlo desde el intérprete de comandos para grabar la imagen. Por ejemplo:

189

# apt-get install xorriso
$ xorriso -as cdrecord -v dev=/dev/sr0 blank=as_needed live-image-amd64.hybrid.iso

190

4.4.2 Copiar una imagen ISO híbrida a un dispositivo USB

191

Las imágenes ISO preparadas con `xorriso`, pueden sencillamente copiarse a una llave USB con la orden `cp` o con un programa equivalente. Insertar una llave USB con un tamaño suficiente para la imagen y determinar qué dispositivo es, al cual nos referiremos de ahora en adelante como `${USBSTICK}`. Este nombre de «dispositivo» se refiere a la llave entera como por ejemplo `/dev/sdb` y ¡No a una partición como `/dev/sdb1`! Se puede encontrar el nombre del dispositivo correcto mirando la salida de `dmesg` después de conectar la llave, o mejor aún, ejecutando `ls -l /dev/disk/by-id`.

192

Cuando se esté seguro de tener el nombre del dispositivo correcto, usar la orden `cp` para copiar la imagen a la llave. ¡Esto borrará de forma definitiva cualquier contenido previo en la llave!

193

$ cp live-image-amd64.hybrid.iso ${USBSTICK}
$ sync

194

Nota: El comando sync se utiliza para asegurarse de que todos los datos, que el kernel almacena en la memoria mientras se copia la imagen, se escriben en la llave USB.

195

4.4.3 Usar el espacio libre en el dispositivo USB

196

After copying the `live-image-amd64.hybrid.iso` to a USB stick, the first partition on the device will be filled up by the live system. To use the remaining free space, use a partitioning tool such as gparted or parted to create a new partition on the stick.

197

# gparted ${USBSTICK}

198

Después de crear la partición, dónde `${PARTITION}` es el nombre de la partición, por ejemplo `/dev/sdb2` se tiene que crear un sistema de ficheros en él. Una opción posible sería ext4.

199

# mkfs.ext4 ${PARTITION}

200

Nota: Si se desea usar el espacio extra con Windows, segun parece, ese sistema operativo no puede acceder normalmente a otra partición más que a la primera. Se han comentado algunas soluciones a este problema en nuestra lista de correo pero según parece no hay una solución fácil.

201

Remember: Every time you install a new live-image-amd64.hybrid.iso on the stick, all data on the stick will be lost because the partition table is overwritten by the contents of the image, so back up your extra partition first to restore again after updating the live image.

202

4.4.4 Arrancar el medio en vivo

203

La primera vez que se arranque desde el medio de almacenamiento en vivo, ya sea CD, DVD, llave USB, o de arranque en red PXE, primero puede ser necesario algún tipo de configuración en la BIOS de la máquina. Dado que las BIOS varían mucho en sus características y combinaciones de teclas, no se puede entrar en el tema en profundidad aquí. Algunas BIOS proporcionan una tecla para abrir un menú de dispositivos de arranque que es la manera más fácil de hacerlo si se encuentra disponible en el sistema. De lo contrario, se tiene que entrar en el menú de configuración de la BIOS y cambiar el orden de arranque y colocar el dispositivo de arranque del sistema en vivo antes que el dispositivo de arranque habitual.

204

Una vez que se haya arrancado desde el medio de almacenamiento, se accede a un menú de arranque. Si se pulsa la tecla «enter», el sistema arrancará usando el modo por defecto `Live` y las opciones predeterminadas. Para obtener más información acerca de las opciones de arranque, ver la opción «help» del menú y también las páginas del manual de live-boot y live-config que se encuentran en el sistema en vivo.

205

Assuming you've selected `Live` and booted a default desktop live image, after the boot messages scroll by, you should be automatically logged into the `user` account and see a desktop, ready to use. If you have booted a console-only image, you should be automatically logged in on the console to the `user` account and see a shell prompt, ready to use.

206

4.5 Usar una máquina virtual para pruebas

207

Ejecutar las imágenes en vivo en una máquina virtual (VM) puede ser un gran ahorro de tiempo para su desarrollo. Esto no está exento de advertencias:

208

- Para ejecutar una máquina virtual se requiere tener suficiente memoria RAM para el sistema operativo huésped y el anfitrión y se recomienda una CPU con soporte de hardware para la virtualización.

209

- Existen algunas limitaciones inherentes a la ejecución en una máquina virtual, por ejemplo, rendimiento de video pobre o limitada gama de hardware emulado.

210

- Cuando se desarrolla para un hardware específico, no hay sustituto mejor que el propio hardware.

211

- A veces hay errores causados únicamente por la ejecución en una máquina virtual. En caso de duda, probar la imagen directamente en el hardware.

212

Siempre que se pueda trabajar dentro de estas limitaciones, mirar que software VM hay disponible y elegir uno que sea adecuado según las necesidades.

213

4.5.1 Probar una imagen ISO con QEMU

214

La máquina virtual más versátil en Debian es QEMU. Si el procesador tiene soporte de hardware para virtualización, utilizar el paquete qemu-kvm. En la descripción del paquete qemu-kvm se enumera brevemente la lista de requisitos.

215

En primer lugar, instalar `qemu-kvm` si el procesador lo soporta. Si no es así, instalar `qemu`, en cuyo caso el nombre del programa será `qemu` en vez de `kvm` en los siguientes ejemplos. El paquete qemu-utils también es útil para la creación de imágenes virtuales de disco con `qemu-img`.

216

# apt-get install qemu-kvm qemu-utils

217

Arrancar una imagen ISO es sencillo:

218

$ kvm -cdrom live-image-amd64.hybrid.iso -m 4G

219

Consultar las páginas del manual para más detalles.

220

Note: For live systems containing a desktop environment that you want to test with qemu, you may wish to include the spice-vdagent package in your live-build configuration. This will automatically adjust the resolution and enable the clipboard between the virtual machine and the host.

221

$ echo "spice-vdagent" >> config/package-lists/spice.list.chroot

222

4.5.2 Probar una imagen ISO con VirtualBox

223

Para probar una imagen ISO con virtualbox:

224

# apt-get install virtualbox virtualbox-qt virtualbox-dkms
$ virtualbox

225

Create a new virtual machine, change the storage settings to use `live-image-amd64.hybrid.iso` as the CD/DVD device, and start the machine.

226

Nota: Para probar los sistemas en vivo con soporte X.org en virtualbox, se puede incluir el paquete del driver de VirtualBox X.org, virtualbox-guest-dkms y virtualbox-guest-x11, en la configuración de live-build. De lo contrario, la resolución se limita a 800x600.

227

$ echo "virtualbox-guest-dkms virtualbox-guest-x11" >> config/package-lists/my.list.chroot

228

Para que el paquete dkms funcione, hace falta tener instalados también los kernel-headers para la variante del kernel utilizado. En lugar de enumerar manualmente el paquete linux-headers correspondiente en la lista de paquetes creados anteriormente, live-build puede seleccionarlo automáticamente.

229

$ lb config --linux-packages "linux-image linux-headers"

230

4.6 Construir y utilizar una imágen HDD

231

Building an HDD image is similar to an ISO hybrid one in all respects except you specify `-b hdd` and the resulting filename is `live-image-amd64.img` which cannot be burnt to optical media. It is suitable for booting from USB sticks, USB hard drives, and various other portable storage devices. Normally, an ISO hybrid image can be used for this purpose instead, but if you have a BIOS which does not handle hybrid images properly, you need an HDD image.

232

Nota: si se ha creado una imagen ISO híbrida con el ejemplo anterior, se tendrá que limpiar el directorio de trabajo con el comando `lb clean` (ver El comando lb clean):

233

# lb clean --binary

234

Ejecutar el comando `lb config` como antes pero esta vez especificando el tipo de imagen HDD:

235

$ lb config -b hdd

236

Crear ahora la imagen con el comando `lb build`:

237

# lb build

238

When the build finishes, a `live-image-amd64.img` file should be present in the current directory.

239

The generated binary image contains a VFAT partition and the syslinux bootloader, ready to be directly written on a USB device. Once again, using an HDD image is just like using an ISO hybrid one on USB. Follow the instructions in Using an ISO hybrid live image, except use the filename `live-image-amd64.img` instead of `live-image-amd64.hybrid.iso`.

240

Likewise, to test an HDD image with Qemu, install qemu as described above in Testing an ISO image with QEMU. Then run `kvm` or `qemu`, depending on which version your host system needs, specifying `live-image-amd64.img` as the first hard drive.

241

$ kvm -hda live-image-amd64.img

242

4.7 Creación de una imagen de arranque en red

243

La siguiente secuencia de comandos creará una imagen de arranque en red básica que contendrá el sistema por defecto de Debian sin X.org. Se puede usar para el arranque en red.

244

Nota: si se ha seguido algúno de los ejemplos anteriores, se tendrá que limpiar el directorio de trabajo con el comando `lb clean`:

245

# lb clean

246

En este caso concreto, un `lb clean --binary` no sería suficiente para eliminar las etapas necesarias. La razón de esto es que en las configuraciones de arranque en red, se debe utilizar una configuración initramfs diferente que live-build ejecuta automáticamente al crear imágenes netboot. Ya que la creación del initramfs pertenece a la etapa chroot, realizar el cambio a netboot en un directorio de construcción ya existente significa reconstruir la etapa chroot también. Por lo tanto, se tiene que ejecutar un `lb clean` (que también eliminará la etapa chroot).

247

Ejecutar el comando `lb config` de la siguiente manera para configurar la imagen de arranque en red:

248

$ lb config -b netboot --net-root-path "/srv/debian-live" --net-root-server "192.168.0.2"

249

A diferencia de las imágenes ISO y HDD, el sistema de arranque en red en sí mismo no envía la imagen del sistema de ficheros al cliente, por eso los ficheros se deben enviar mediante NFS. Con lb config se puede seleccionar diferentes sistemas de ficheros en red. Las opciones `--net-root-path` y `--net-root-server` especifican la ubicación y el servidor, respectivamente, del servidor NFS en el que se encuentra la imagen del sistema de ficheros en el arranque. Se debe asegurar que estos se ajustan a los valores adecuados para la red y el servidor deseados.

250

Crear ahora la imagen con el comando `lb build`:

251

# lb build

252

En un arranque en red, el cliente ejecuta una pequeña pieza de software que generalmente se encuentra en la EPROM de la tarjeta Ethernet. Este programa envía una solicitud de DHCP para obtener una dirección IP e información sobre qué hacer a continuación. Por lo general, el siguiente paso es conseguir un gestor de arranque de alto nivel a través del protocolo TFTP. Este gestor podría ser PXELINUX, GRUB, o incluso arrancar directamente un sistema operativo como Linux.

253

For example, if you unpack the generated `live-image-amd64.netboot.tar` archive in the `/srv/debian-live` directory, you'll find the filesystem image in `live/filesystem.squashfs` and the kernel, initrd and pxelinux bootloader in `tftpboot/`.

254

Ahora se debe configurar tres servicios en el servidor para el arranque en red: el servidor DHCP, el servidor TFTP y el servidor NFS.

255

4.7.1 Servidor DHCP

256

Hay que configurar el servidor DHCP de red para asegurar que proporciona una dirección IP al cliente, y para anunciar la ubicación del gestor de arranque PXE.

257

He aquí un ejemplo que puede servir de inspiración. Fue escrito para el servidor ISC DHCP `isc-dhcp-server` en su fichero de configuración `/etc/dhcp/dhcpd.conf`:

258

# /etc/dhcp/dhcpd.conf - fichero de configuración para isc-dhcp-server
ddns-update-style none;
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.1 192.168.0.254;
filename "pxelinux.0";
next-server 192.168.0.2;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
}

259

4.7.2 Servidor TFTP

260

Se encarga de suministrar el kernel y el Disco RAM inicial para el sistema.

261

Se debe instalar el paquete tftpd-hpa. Este servidor podrá suministrar todos los ficheros contenidos de un directorio raíz, normalmente `/srv/tftp`. Para permitirle que pueda servir los ficheros de `/srv/debian-live/tftpboot`, se debe ejecutar el siguiente comando con privilegios de superusuario:

262

# dpkg-reconfigure -plow tftpd-hpa

263

y escribir el directorio del nuevo servidor tftp cuando sea requerido.

264

4.7.3 Servidor NFS

265

Una vez el equipo cliente ha descargado y arrancado el kernel de Linux junto a su initrd, intentará montar el sistema de archivos de la imagen en vivo a través de un servidor NFS.

266

Se debe instalar el paquete nfs-kernel-server.

267

Entonces, se debe hacer que la imagen del sistema de archivos esté disponible a través de NFS añadiendo una línea como la siguiente para `/etc/exports`:

268

/srv/debian-live *(ro,async,no_root_squash,no_subtree_check)

269

e informar al servidor NFS sobre esta nueva exportación con el siguiente comando:

270

# exportfs -rv

271

Setting up these three services can be a little tricky. You might need some patience to get all of them working together. For more information, see the syslinux wiki at ‹https://wiki.syslinux.org/wiki/index.php?title=PXELINUX› or the Debian Installer Manual's TFTP Net Booting section at ‹https://www.debian.org/releases/stable/amd64/ch04s05.en.html›. They might help, as their processes are very similar.

272

4.7.4 Cómo probar el arranque en red

273

La creación de una imagen de arranque en red es sencilla con live-build, pero probar las imágenes en máquinas físicas puede ser un proceso mucho más lento.

274

Para hacer nuestra vida más fácil, se puede utilizar la virtualización.

275

4.7.5 Qemu

276

- Instalar qemu, bridge-utils, sudo.

277

Se debe editar el fichero `/etc/qemu-ifup`:

278

#!/bin/sh
sudo -p "Password for $0:" /sbin/ifconfig $1 172.20.0.1
echo "Executing /etc/qemu-ifup"
echo "Bringing up $1 for bridged mode..."
sudo /sbin/ifconfig $1 0.0.0.0 promisc up
echo "Adding $1 to br0..."
sudo /usr/sbin/brctl addif br0 $1
sleep 2

279

Obtener o crear un `grub-floppy-netboot`.

280

Lanzar `qemu` con "`-net nic,vlan=0 -net tap,vlan=0,ifname=tun0`"

281

4.8 Arrancar desde internet

282

Arrancar desde internet, o Webbooting, es una manera muy adecuada de descargar y arrancar sistemas en vivo utilizando internet como medio, ya que hay muy pocos requisitos para arrancar desde internet utilizando webbooting. Por un lado, se necesita un medio en vivo con un gestor de arranque, un disco ram inicial y un kernel. Por otro lado, un servidor web para almacenar los ficheros squashfs que contienen el sistema de ficheros.

283

4.8.1 Conseguir los ficheros para arrancar desde internet

284

As usual, you can build the images yourself or use the prebuilt files. Using prebuilt images would be handy for doing initial testing until one can fine tune their own needs. If you have built a live image you will find the files needed for webbooting in the build directory under `binary/live/`. The files are called `vmlinuz`, `initrd.img` and `filesystem.squashfs`.

285

También es posible extraer los ficheros de una imagen iso ya existente. Para ello, hay que montar la imagen de la siguiente manera:

286

# mount -o loop image.iso /mnt

287

The files are to be found under the `live/` directory. In this specific case, it would be `/mnt/live/`. This method has the disadvantage that you need to be root to be able to mount the image. However, it has the advantage that it is easily scriptable and thus, easily automated.

288

Pero, sin duda alguna, la forma más fácil de extraer los ficheros de una imagen iso y subirlos al servidor web al mismo tiempo, es utilizando el midnight commander o mc. Si se tiene el paquete genisoimage instalado, este administrador de ficheros de dos paneles permite examinar el contenido de un archivo iso en un panel y subir los ficheros a través de ftp en el otro panel. A pesar de que este método requiere un trabajo manual, no requiere privilegios de root.

289

4.8.2 Arrancar imágenes webboot

290

Aunque algunos usuarios pueden preferir la virtualización para probar el arranque desde internet, en este caso se utiliza hardware real para ilustrar el caso de uso que se explica a continuación y que debe considerarse sólo como un ejemplo.

291

Para arrancar una imagen webboot es suficiente copiar los elementos mencionados anteriormente, es decir, `vmlinuz` y `initrd.img` en una llave usb dentro de un directorio llamado `live/` e instalar syslinux como gestor de arranque. Entonces, arrancar desde la llave usb y teclear `fetch=URL/RUTA/AL/FICHERO` en las opciones de arranque. live-boot se encargará de descargar el archivo squashfs y almacenarlo en la memoria ram. De este modo, es posible utilizar el sistema de ficheros comprimido descargado como si fuera un sistema en vivo normal. Por ejemplo:

292

append boot=live components fetch=http://192.168.2.50/images/webboot/filesystem.squashfs

293

Caso de uso: Se tiene dos archivos squashfs almacenados en un servidor web, uno que contiene un escritorio completo, como gnome, y uno standard. Si se necesita un entorno gráfico para una máquina, se puede insertar la llave usb y arrancar desde internet la imagen gnome. Si se necesita una de las herramientas incluidas en el segundo tipo de imagen, quizás para otra máquina, se puede arrancar desde internet la imagen standard.