npx agentspec-cli install e339585a-cb31-4843-81e4-7fdf5a7ad029 --framework ClaudeCode→ .claude/skills/1 Struttura dirs/SKILL.md
cryptsetup e cryptsetup-initramfs sono già installati.
Ti mando il quadro ancora puù completo con il contenuto di my-init-overlay che esiste.
```
artisan@colibri:~/acqua$ sudo apt install cryptsetup cryptsetup-initramfs
[sudo] password for artisan:
cryptsetup is already the newest version (2:2.7.5-2).
cryptsetup-initramfs is already the newest version (2:2.7.5-2).
cryptsetup-initramfs set to manually installed.
Summary:
Upgrading: 0, Installing: 0, Removing: 0, Not Upgrading: 0
```
# 1 Struttura dirs
```
artisan@colibri:~/acqua$ ls
final-initrd.img initrd.img-6.12.48+deb13-amd64 my-initrd-overlay process.sh staging
artisan@colibri:~/acqua$ ls staging/
kernel scripts
# 2 staging/scripts/live-premount
artisan@colibri:~/acqua$ ls
```
artisan@colibri:~/acqua$ ls my-initrd-overlay/scripts/live-premount/ZZ-eggs-luks-unlock.sh
my-initrd-overlay/scripts/live-premount/ZZ-eggs-luks-unlock.sh
# staging/scripts/live-premount/Z-eggs-luks-unlock.sh
```
#!/bin/sh
# Questo è lo SCRIPT RUNTIME
# Eseguito da live-boot al BOOT della ISO
set -e
echo "EGGS: Avvio sblocco root.img..."
mkdir -p /mnt/live-media
mkdir -p /mnt/ext4
# 1. Trova live media
# (live-boot potrebbe averla già montata su /run/live/medium,
# ma farlo di nuovo è più robusto)
for dev in /dev/sr* /dev/sd* /dev/vd* /dev/nvme*n*; do
[ -b "$dev" ] || continue
if mount -o ro "$dev" /mnt/live-media 2>/dev/null; then
if [ -f /mnt/live-media/live/root.img ]; then
echo "EGGS: Trovata live media su $dev"
break
fi
umount /mnt/live-media 2>/dev/null
fi
done
if [ ! -f /mnt/live-media/live/root.img ]; then
echo "EGGS: ERRORE: Impossibile trovare /live/root.img"
exec /bin/sh
fi
ROOT_IMG_RO="/mnt/live-media/live/root.img"
ROOT_IMG="/tmp/root.img.rw"
# 2. Copia in RAM (per pulizia ext4)
echo "EGGS: Copia di root.img in RAM (/tmp)..."
cp "$ROOT_IMG_RO" "$ROOT_IMG"
# 3. Sblocca LUKS
echo "EGGS: In attesa della passphrase per sbloccare $ROOT_IMG..."
if ! cryptsetup open "$ROOT_IMG" live-root; then
echo "EGGS: ERRORE: Sblocco LUKS fallito."
rm "$ROOT_IMG"
exec /bin/sh
fi
# 4. Monta l'ext4 (rw) per la pulizia
mount -t ext4 -o rw /dev/mapper/live-root /mnt/ext4
# 5. Monta lo squashfs sulla destinazione finale
# che live-boot si aspetta. La variabile $rootmnt
# è fornita da live-boot stesso (di solito è /root).
echo "EGGS: Montaggio filesystem.squashfs su ${rootmnt}..."
mount -o loop /mnt/ext4/filesystem.squashfs "${rootmnt}"
# 6. Pulisci (lascia montato solo il rootfs finale)
umount /mnt/ext4
cryptsetup close live-root
rm "$ROOT_IMG"
umount /mnt/live-media
# 7. IL COLPO FINALE: Passa il testimone!
# Diciamo a live-boot che il rootfs è PRONTO
# e che deve saltare la sua logica di ricerca.
export ROOT_MOUNTED=true
echo "EGGS: Fatto. rootfs pronto, avvio del sistema."
exit 0
```
# 3 process.sh
```
#!/bin/bash
# Il tuo overlay con lo script di sblocco
OVERLAY_DIR="my-initrd-overlay"
# L'initramfs di base creato dal tuo tool
BASE_INITRD="initrd.img-6.12.48+deb13-amd64"
# L'initramfs finale per la ISO
FINAL_INITRD="final-initrd.img"
# 1. Crea una directory di staging pulita
STAGING=./staging
rm -rf $STAGING
mkdir -p $STAGING
cd $STAGING
# 2. Estrai l'initramfs di base
#echo "EGGS: Estraggo initramfs di base..."
#gzip -d < "../${BASE_INITRD}" | cpio -idm
cat "../${BASE_INITRD}" | cpio -idm
# 3. "Appiccica" i tuoi file overlay
# Questo è il momento chiave! Copi i tuoi file sopra quelli esistenti.
# Il tuo script finirà in /tmp/staging/scripts/local-top/ZZ-eggs-luks-unlock.sh
echo "EGGS: Applico overlay di sblocco..."
cp -R "../${OVERLAY_DIR}/"* .
# 4. Ricrea l'archivio finale
echo "EGGS: Ricomprimo initramfs finale..."
find . | cpio -o -H newc | gzip -c > "../${FINAL_INITRD}"
# 5. Pulisci
cd ..
# rm -rf $STAGING
```
# 4. codice di creazione initramfs in eggs
```
/**
* initrdDebian
*/
export async function initrdDebian(this: Ovary, verbose = false) {
Utils.warning(`creating ${this.initrd} using mkinitramfs on (ISO)/live`)
const prefix = this.settings.config.snapshot_prefix
const dest = `${this.settings.iso_work}live/${path.basename(this.initrd)}`
const log = `> ${this.settings.iso_work}${prefix}mkinitramfs.log.txt 2>&1`
const cmd = `mkinitramfs -o ${dest} ${this.kernel} ${log}`
// console.log(cmd)
await exec(cmd, this.echo)
}
```
# 4. log di creazione di initrd.img-6.12.48+deb13-amd64 da eggs
In allegato
Built on the Agent Skills standard
Directory Structure & Conventions
├── Actions/ # Single-responsibility action classes │ └── ClearChannel.php ├── Console/Commands/ # Artisan commands (auto-registered) │ ├── TwitchRelayCommand.php # IRC connection to Twitch
by AgentHub Crawler
Nombre de archivo: Gemini.md
1. **Encabezados:** NUNCA olvides la regla del encabezado de 3 líneas (Nombre, Ubicación, Descripción). Si creas un archivo, ponlo primero. [Fuente: AGENTS.md] 2. **Docker-First:** Si sugieres un script, asume que corre dentro de un contenedor, no en mi máquina local.
by AgentHub Crawler
Admin Dashboard Configuration
Cursor IDE rules and conventions for AI-assisted development.
by AgentHub Crawler
Sign in to leave a comment.
Readme.md
1. This is laravel project with inertiajs and reactjs 2. for authentication use inertia auth 3. Never update laravel default migration file 4. This is Open Source HRIS SAAS Project 5. Use Tailwind CSS for styling
by AgentHub Crawler