Sistemas operativos
Crear una imagen de instalación de OpenBSD con ESP FAT32 y firmware
Construye una imagen de instalación de OpenBSD para amd64 con una ESP FAT32 de 260 MiB, 1.536 MiB para FFS y firmware opcional, sin recompilar el sistema base.
Descarga precreada
Como alternativa a reconstruir la imagen manualmente, está
disponible install79-fat32.img. Es una
modificación personalizada y no oficial de la imagen de instalación
installNN.img de OpenBSD para amd64; no es una
distribución ni una compilación independiente de OpenBSD. El nombre y
la suma de la descarga deben actualizarse conjuntamente al publicar una
nueva versión.
| Nombre | install79-fat32.img
|
|---|---|
| Plataforma y arquitectura | OpenBSD, amd64 |
| Particionado | MBR, siguiendo la imagen oficial de instalación |
| ESP | FAT32 de 260 MiB |
| Contenido base | Derivado de la imagen oficial installNN.img |
| Firmware adicional | Ninguno |
| SHA256 |
8521010252d97d2d4fe3becc47c58363640c74bff5fcea4b5267fed10f9f6f7f
|
La imagen precreada no contiene firmware adicional. No se ha
incluido firmware Wi-Fi propietario ni ningún otro firmware distribuido
externamente, para evitar posibles restricciones de licencia o
redistribución. Quien necesite firmware debe añadirlo por su cuenta con
los mecanismos oficiales de OpenBSD, como fw_update.
Alcance y preparación
Todo el procedimiento se ejecuta como root. Parte de
installNN.img oficial y copia su contenido a una imagen
mayor; no recompila OpenBSD ni modifica el ramdisk bsd.rd.
El resultado conserva el arranque Legacy BIOS y UEFI.
Antes de reutilizar los puntos de montaje, abandónalos y comprueba
los montajes y dispositivos vnd activos:
cd /
mount | grep '/mnt/'
vnconfig -l
Desmonte únicamente los recursos de un intento anterior y desconecte
solo sus dispositivos vnd:
umount /mnt/dst-efi 2>/dev/null || :
umount /mnt/dst 2>/dev/null || :
umount /mnt/src-efi 2>/dev/null || :
umount /mnt/src 2>/dev/null || :
vnconfig -u vnd1 2>/dev/null || :
vnconfig -u vnd0 2>/dev/null || :
Los dos últimos mandatos son solo un ejemplo: no desconecte otros
dispositivos vnd. Cree el directorio de trabajo y los
puntos de montaje, y compruebe que /home tiene varios GiB
libres para la imagen oficial y la personalizada:
mkdir -p /home/openbsd-custom
cd /home/openbsd-custom
df -h /home
mkdir -p /mnt/src /mnt/src-efi /mnt/dst /mnt/dst-efi
La distribución propuesta usa 260 MiB para la ESP FAT32 y 1.536 MiB para FFS, un total de 1.796 MiB. Con sectores de 512 bytes son 532480 sectores para la ESP, 3145728 para FFS y 3678208 en total.
Descargar y montar la imagen oficial
Antes de ejecutar los mandatos, establezca la versión con su forma de publicación y su número sin punto. Al actualizar OpenBSD, cambie estos valores y mantenga el resto del procedimiento:
VERSION=7.9
VERSION_NUMBER=79
ARCH=amd64
IMAGE="install${VERSION_NUMBER}.img"
CUSTOM_IMAGE="install${VERSION_NUMBER}-fat32.img"
Descargue la imagen para amd64, su suma y su firma.
Verifique primero la suma SHA-256 y después la firma:
ftp https://cdn.openbsd.org/pub/OpenBSD/${VERSION}/${ARCH}/${IMAGE}
ftp https://cdn.openbsd.org/pub/OpenBSD/${VERSION}/${ARCH}/SHA256
ftp https://cdn.openbsd.org/pub/OpenBSD/${VERSION}/${ARCH}/SHA256.sig
sha256 -C SHA256 "$IMAGE"
signify -Cp "/etc/signify/openbsd-${VERSION_NUMBER}-base.pub" \
-x SHA256.sig "$IMAGE"
La comprobación debe informar de ${IMAGE}: OK y la
verificación de firma debe incluir Signature Verified.
Conecte la imagen; vnconfig selecciona un vnd
libre y escribe su nombre por la salida estándar:
SRCVND=$(vnconfig "/home/openbsd-custom/${IMAGE}")
echo "$SRCVND"
fdisk "$SRCVND"
disklabel "$SRCVND"
mount -o ro "/dev/${SRCVND}a" /mnt/src
mount -t msdos -o ro "/dev/${SRCVND}i" /mnt/src-efi
df -h /mnt/src /mnt/src-efi
ls -la /mnt/src
ls -la /mnt/src-efi/efi/boot
du -sh /mnt/src
La ESP original debe incluir BOOTIA32.EFI y
BOOTX64.EFI. La imagen oficial reserva aproximadamente 800
MiB para FFS y queda muy ajustada; la imagen de destino deja más
espacio para los sets y el firmware.
Crear y formatear la imagen de destino
Elimine solamente una imagen personalizada fallida y cree la nueva imagen de 1.796 MiB. Conéctela y anote el dispositivo que se le haya asignado:
cd /home/openbsd-custom
rm -f "$CUSTOM_IMAGE"
dd if=/dev/zero of="$CUSTOM_IMAGE" bs=1m count=1796
ls -lh "$IMAGE" "$CUSTOM_IMAGE"
DSTVND=$(vnconfig "/home/openbsd-custom/${CUSTOM_IMAGE}")
echo "$DSTVND"
vnconfig -l
Cree la tabla MBR con una partición EFI EF y una
partición OpenBSD A6. Este procedimiento sigue el formato
de la imagen USB oficial, con los tamaños ampliados:
fdisk -yi \
-l 3145728 \
-b 532480 \
-f /usr/mdec/mbr \
"$DSTVND"
fdisk "$DSTVND"
echo '/ *' | disklabel -wAT- "$DSTVND"
disklabel "$DSTVND"
Antes de continuar, confirme que EF tiene 532480
sectores y A6 aproximadamente 3145728. El disklabel debe
incluir a como 4.2BSD, c como
unused e i como MSDOS.
Formatee explícitamente la ESP como FAT32 y cree el FFS1. La opción
-c no se usa: controla fragmentos por cylinder group y no
establece el tamaño del sistema de archivos; newfs toma
ese tamaño de la partición a.
newfs_msdos -F 32 "/dev/r${DSTVND}i"
newfs -O 1 -m 0 -o space -i 524288 "/dev/r${DSTVND}a"
mount "/dev/${DSTVND}a" /mnt/dst
mount -t msdos "/dev/${DSTVND}i" /mnt/dst-efi
df -h /mnt/src /mnt/dst /mnt/dst-efi
df -i /mnt/src /mnt/dst
/mnt/dst debe mostrar aproximadamente 1,5 GiB. Si
muestra unos 800 MiB, deténgase y revise la tabla de particiones antes
de copiar datos.
Copiar el instalador, el arranque y el firmware
Copie el árbol del instalador conservando permisos y demás
atributos. La copia ya no debe terminar con No space left on
device:
cd /mnt/src
pax -rw -pe . /mnt/dst
cd /
df -h /mnt/dst
ls -lah /mnt/dst
ls -lh "/mnt/dst/${VERSION}/${ARCH}/"
El directorio de sets debe contener los sets correspondientes a la
versión elegida, además de bsd, bsd.mp y
bsd.rd. Copie también los cargadores EFI y reinstale el
arranque BIOS; primero ejecútelo en modo que no escribe:
mkdir -p /mnt/dst-efi/efi/boot
cp -p /mnt/src-efi/efi/boot/* /mnt/dst-efi/efi/boot/
ls -lah /mnt/dst-efi/efi/boot/
installboot -nv -r /mnt/dst "$DSTVND" \
/usr/mdec/biosboot /mnt/dst/boot
installboot -v -r /mnt/dst "$DSTVND" \
/usr/mdec/biosboot /mnt/dst/boot
Añada, si lo necesita, firmware para el sistema instalado. El
firmware no hace que el Wi-Fi funcione dentro de bsd.rd
durante la instalación; para ello habría que modificar su ramdisk, que
es otro procedimiento.
cd /mnt/dst
fw_update -Fv iwx
fw_update -Fv iwm
cd /
fw_update -Fln iwx
find /mnt/dst -maxdepth 2 -type f -name '*firmware*.tgz' -o \
-name '*firmware*.tgz.sig'
fw_update -F descarga el firmware y sus firmas en el
directorio actual. Use uno o varios controladores según el hardware de
destino.
Desmontar y verificar la imagen
Sincronice los datos y desmonte primero la ESP y después FFS, tanto
en el destino como en el origen. Desconecte también ambos
vnd:
cd /
sync
umount /mnt/dst-efi
umount /mnt/dst
umount /mnt/src-efi
umount /mnt/src
mount | grep '/mnt/'
vnconfig -u "$DSTVND"
vnconfig -u "$SRCVND"
vnconfig -l
Vuelva a conectar la imagen final desde cero. Las comprobaciones de los sistemas de archivos no deben informar de errores que requieran reparación:
cd /home/openbsd-custom
VERIFYVND=$(vnconfig "$CUSTOM_IMAGE")
echo "$VERIFYVND"
fdisk "$VERIFYVND"
disklabel "$VERIFYVND"
fsck_msdos -n "/dev/r${VERIFYVND}i"
fsck_ffs -n "/dev/r${VERIFYVND}a"
mount -t msdos -o ro "/dev/${VERIFYVND}i" /mnt
df -h /mnt
ls -lah /mnt/efi/boot
umount /mnt
mount -o ro "/dev/${VERIFYVND}a" /mnt
ls -lah /mnt
ls -lh /mnt/bsd.rd
ls -lh "/mnt/${VERSION}/${ARCH}/"
umount /mnt
vnconfig -u "$VERIFYVND"
vnconfig -l
mount | grep '/mnt/'
La imagen terminada es
/home/openbsd-custom/${CUSTOM_IMAGE}. Contiene MBR, una
ESP FAT32 con EFI/BOOT/BOOTX64.EFI y
BOOTIA32.EFI, y una partición FFS1 con el instalador,
boot, bsd, bsd.rd, los sets y,
si se añadieron, los archivos de firmware.
Grabarla en una memoria USB
Identifique sin ambigüedad la memoria USB antes de escribir. Por
ejemplo, si sd2 es realmente el dispositivo correcto:
sysctl hw.disknames
disklabel sd2
dd if="/home/openbsd-custom/${CUSTOM_IMAGE}" \
of=/dev/rsd2c bs=1m
sync
No use /dev/rsd2c sin comprobar el disco:
dd sobrescribe directamente el dispositivo de destino.