Surgió que tenía que entregar una herramienta usable con la mínima interacción con un Linux personalizado desde Windows.
Imagen alucinada por la IA
Pasos para armar Virtual de HyperV
Creo la VM
Configuración:
HDD = 8 Gb
RAM = 2048 Mb
Red = Default switch
Resto por default
Unidad de DVD = ISO descargada de https://dl-cdn.alpinelinux.org/alpine/v3.20/releases/x86_64/alpine-standard-3.20.2-x86_64.iso
- Iniciar VM
- Loguear con root sin clave
- ejecutar: setup-alpine
- Seleccionar las siguientes opciones en el Wizzard
- Teclado / Idioma ➡️ seleccionar el que mas convenga
- UTC ➡️ no me interesa zona horaria
- eth0
- NTP none
- Enter mirror default
- Clave borradoseguro
- Setup user? none
- Which ssh server? opnessh ➡️lo uso para pasar el script
- Enter ssh key or URL for root? none
- Which disk would you like to use? sda
- How would you like to use it? sys
- Erase the above disk and continue ? yes
- Reiniciar con el comando reboot
- Desmontar la unidad DVD
- Actualizo paquetes
apk update
apk upgrade- Instalo paquetes
apk add hdparm
apk add nvme-cli
apk add bash -> porque esta hecho en bash el script , si no lo tengo que adaptar a ash
apk add lsblk
apk add nano
Configuro autologin
- Ejecuto
apk add agetty
- Edito /etc/inittab
- Modifico la linea que menciona tty1: con
tty1::respawn:/sbin/agetty 38400 --autologin root tty1 linux
Copio script
- Veo la ip asignada con
ip addr
- Creo la carpeta
mkdir /root/script
- Conecto por SCP y subo el file (se puede usar el WinSCP)
- Logueo como root
- Doy permisos de ejecución al script
chmod +x borrado_seguro.sh
Configuro para que inicie el script al bootear
- Creo un archivo
touch /etc/init.d/myscript
- edito el archivo y coloco
#!/sbin/openrc-run
command="/usr/local/bin/myscript.sh"
command_background=false- ejecutable el script
chmod +x /etc/init.d/myscript
- Añadir el script al runlevel default:
rc-update add myscript default
- Desactivar networking
- Editar /etc/network/interfaces
- Comentar línea con eth0
Quitar OpenSSH
apk delpenssh
Combino los Snapshot de la VM
- Versión GUI
- Seleccionar Hyper-V server en Hyper-V Manager
- En el panel izquierdo, seleccionar Inspect Disk
- Browse to location of restored AVHD/AVHDX files
- Seleccionar uno de los archivos AVHD/AVHDX > OK
- Grabar el nombre del disco principal
- Seleccionar Hyper-V server en Hyper-V Manager
- En el panel izquierdo, seleccionar Edit Disk
- Next > Seleccionar nuevo archivo AVHD/AVHD
- Next > Seleccionar Merge
- Next > To the parent virtual hard disk
- Finish
- Repetir los pasos 7-12 por cada disco AVHD/AVHDX hasta que quede un disco VHD/VHDX unico en la maquina
- Montar VHD/VHDX en una nueva maquina virtual en Hyper-V e iniciar
- Con powershell
Cambiar a la carpeta correcta donde están :
cd <directory path where files are located>
- Ejecutar el siguiente comando por cada archivo AVHDX:
Get-VHD .\<name of AVHDX file>.avhdx
- Anotar el nombre del archivo AVHDX principal de la entrada ParentPath en la salida
- Repitir los pasos 2 y 3 hasta que se tenga una lista de todos los archivos AVHDX con sus respectivos archivos AVHDX principales.
- A partir del archivo AVHDX más reciente (solo el archivo AVHDX sin archivos secundarios), ejecute el siguiente comando:
Merge-VHD -Path '<path to AVHDX>' -DestinationPath '<path to parent AVHDX'
- Repita el paso 5 en cada AVHDX, comenzando siempre con el archivo más reciente disponible
- Una vez que todos los archivos AVHDX estén consolidados, combine el último AVHDX con el archivo VHDX principal:
Merge-VHD -Path '<path to AVHDX>' -DestinationPath '<path to main VHDX disk'
- Nota: este método requiere que se agreguen los cmdlets Merge-VHD y Get-VHD a su PowerShell; Si no lo tiene agregado, puede recibir el siguiente error:
- Merge-VHD : El término 'Merge-VHD' no se reconoce como el nombre de un cmdlet, función, archivo de script o programa ejecutable. Verifique la ortografía del nombre o, si se incluyó una ruta, verifique que la ruta sea correcta e inténtelo nuevamente..
- Si recibe este error, ejecute este comando desde un símbolo del sistema elevado de PowerShell para instalar el cmdlet Merge-VHD:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Management-PowerShell
Copiado a un Pendrive
Montar Imagen
Montar el archivo .VHDX con el Administrador de Discos -> Acción -> Exponer VHD -> seleccionar el archivo VHDX
Si no aparece listado en la parte superior seleccionar otro ítem del árbol del panel izquierdo y volver al administrador de disco para que refresque la vista
Alternativas
- Versión Powershell
En una consola con permisos de Admin
Mount-VHD -Path "Full path of .vhd or .vhdx file"
- Versión GUI
Desde administrador de Discos
Explorardor de Archivos -> Seleccionar el archivo -> Botón derecho -> Montar
Clonar disco montado al pendrive con una herramienta como DiskGenius o EasyUS,.
Desmontar el VHD
la VM no corre si esta el VHD Montado
En Powrshell , desde una consola con permisos de Admin
Enumerar los discos con
Get-Disk
Desmontar con
Dismount-VHD -DiskNumber #
Donde # va el numero del disco con VHD obtenido de Get-Disk
Referencias
- https://www.easeus.com/partition-master/vhd-to-physical-disk.html
- https://wiki.alpinelinux.org/wiki/Configure_Networking
- https://wiki.alpinelinux.org/wiki/TTY_Autologin
- https://www.cyberciti.biz/faq/10-alpine-linux-apk-command-examples/
- https://unix.stackexchange.com/questions/442020/alpine-linux-run-a-startup-script-to-change-the-etc-issuehttps://me.n-able.com/s/article/Merge-differencing-disks-AVHD-AVHDX-to-boot-Hyper-V-machine-after-restoring-to-files-from-Hyper-V-datasource
- https://www.elevenforum.com/t/mount-or-unmount-vhd-and-vhdx-file-as-drive-in-windows-11.19177/
0 comments:
Publicar un comentario