Una idea propuesta fue virtualizar, pero también tenía la restricción de hardware incapaz.
Otra usar una distro de tipo forense, que no monta por default los discos.
Otra modifar la imagen, desde poner un script al arranque que desmonte hasta que ni siquiera pueda montarlos, pasando por que no los monte.
Esto es lo que hice para preparar el terreno para lo último. Asumo que algo sabés de administración linux y que tenés mucha curiosidad e iniciativa, así que no entro en detalles menores como por ejemplo cómo y qué editar de syslinux.conf, ni explico nada que puedas hallar en man xxx y entiendo que cuando ejecutes unsquashfs y te diga que no está, llames a tu gestor de software y te lo instales.
Si incluyo los pasos concretos obvios como el wget, es para que esto sirva como base para un script genérico que en algún momento githubearé.
Los programas necesarios
- wget
- mount
- mkisofs
- unsquashfs
- mksquashfs
- editor de texto preferido
La estructura de directorios
- old/
- rebuild/
- puppy_xenialpup64_7.5/
- zdrv_xenialpup64_7.5/
- new/
- xenialpup64-7.5-uefi.iso
- xenialpup64-7.5-uefi-new.iso
Los pasos a seguir
- Copiar todos los archivos de la imagen original a la nueva imagen
- Descomprimir los squashfs presentes
- Modificar los archivos deseados
- Reconstruir los squashfs
- Rehacer la imagen
Manos a la obra
Crear estructura de directorios
Una carpetita para el live original, otra para el que queremos como resultadomkdir old new
Obtener imagen
wget \
http://distro.ibiblio.org/puppylinux/puppy-xenial/64/xenialpup64-7.5-uefi.iso \
-o xenialpup64-7.5-uefi.iso
Montar la imagen
Para poder acceder a los elementos de la imagen.
sudo mount -t iso9660 -o loop xenialpup64-7.5-uefi.iso old
Terminar de crear los directorios faltantes
Es que hasta este momento no los conocíamos, son los que hay en old/*.sfs sin la extensión.
mkdir -p rebuild/puppy_xenialpup64_7.5 rebuild/zdrv_xenialpup64_7.5
Copiar todo de la iso a la nueva imagen
Para tener lo mismo que tiene la live original
sudo cp -a old/* new
Luego los *.sfs serán actualizados.
Desplegar los squashsfs
Hay que tomar cada *.sfs y descomprimirlo para poder hacer modificaciones en el sistema de archivo que será montado cuando inicie la live.
cd rebuild
cd puppy_xenialpup64_7.5/
unsquashfs ../../old/puppy_xenialpup64_7.5.sfs
cd ..
cd zdrv_xenialpup64_7.5/
unsquashfs ../../old/zdrv_xenialpup64_7.5.sfs
cd ..
Acciones incrementales
Primera iteración
Modifiqué syslinux.conf para que ofrezca una sola opción de boot. Los squashfs se rehacen sin modificarlos, en este momento sólo nos interesa que funcione el proceso.
Antes... |
...despues |
Segunda iteración
Recomprimí los squashfs agregando un archivito testigo con touch.
Charly was there... |
Tercera iteración
Poniendo en isolinux.cfg:
prompt 0
NOESCAPE 1
desactiva el acceso al boot prompt, lo que permitiría arrancar en single mode y nos jodería todas la demás medidas que tomemos.
De todos modos puppy arranca con el usuario root, haría falta un poco de hardening, quizas sea más fácil usar otra distro.
Pendiente
Lo que dejo sin hacer es:
- Desactivar automount
- Hallar y desactivar el automount, obvio.
- Poner el driver de los discos en /etc/modprobe.d/blacklist.conf, mmmh, puede llevarse algo que haga falta.
- un script al incio desmontando todo, mmh, sucio, sucio, ProfMatías.
Poner los permisos correctosLa verdad es que ni me fijé, quizás haciendo todo como root.- Sigo sin fijarme, hice todo como root.
- Ver por que mi puppy_xenialpup64_7.5.sfs queda tanto más grande que la original.
- Me imagino que debe ser alguna opción de compresión.
Reconstruir imagen
Borrar y reconstruir los squashfs, pero sólo los que hayan sido modificados.
rm new/puppy_xenialpup64_7.5.sfs
mksquashfs \
rebuild/puppy_xenialpup64_7.5/squashfs-root \
new/puppy_xenialpup64_7.5.sfs
rm new/zdrv_xenialpup64_7.5.sfs
mksquashfs \
rebuild/zdrv_xenialpup64_7.5/squashfs-root \
new/zdrv_xenialpup64_7.5.sfs
cd new
sudo mkisofs -o ../xenialpup64-7.5-uefi-new.iso \
-r -J -no-emul-boot -boot-load-size 4 \
-b isolinux.bin -c boot.catalog \
-boot-info-table .
sudo umount mnt
Y listo, arrancar con la vm y repetir todo hasta que salga lo que queremos.
No hay comentarios:
Publicar un comentario