====== Creare e lanciare un un chroot alpine ====== Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **// 02/10/2026 08:54 //** // // Uno script per creare un chroot alpine che non fa uso di Systemd. Utile per sviluppare con musl. Aggiornerò lo script nel repository: [[https://www.freemedialab.org/code/project.php?p=auto-scripts|Auto-script]] Da usare solo per creare ambienti di sviluppo. Il chroot non garantisce isolamento. Per ambienti isolati meglio usare un container ([[sistema:systemd-nspawn:alpine_linux|Container Alpine Linux in Systemd-nspawn]]) o meglio ancora una macchina virtuale #!/usr/bin/env bash ARCH="x86_64" ALPINE_VER="3.24" ALPINE_SUB_VER="2" PROJECT_NAME=$1 mkdir -p $PROJECT_NAME/ctr cd $PROJECT_NAME/ctr curl -L https://dl-cdn.alpinelinux.org/alpine/v$ALPINE_VER/releases/$ARCH/alpine-minirootfs-$ALPINE_VER.$ALPINE_SUB_VER-$ARCH.tar.gz -o alpine.tar.gz tar xzf alpine.tar.gz rm alpine.tar.gz cd .. echo "#!/usr/bin/env bash" > runc.sh echo "cp /etc/resolv.conf ./ctr/etc/resolv.conf mount --bind /dev ./ctr/dev mount -t proc /proc ./ctr/proc mount -t sysfs /sys ./ctr/sys chroot ./ctr /bin/ash -l ./umount.sh " >> runc.sh chmod +x runc.sh echo "#!/usr/bin/env bash" > umount.sh echo "umount -R ctr/dev umount ctr/proc umount ctr/sys" >> umount.sh chmod +x umount.sh ===== Come usare lo script ===== Editare le variabili per la versione e architettura di alpine poi lanciare: ./auto-alpine-chroot Entriamo nella cartella e troviamo 2 script: runc.sh #avvia il chroot umount.sh #smonta il chroot Nota che **umount.sh** è opzionale invocarlo perchè uscend dal chroot viene invocato automaticamente. ===== Montare cartelle personali del sistema sul chroot ===== Si usa **mount --bind** così: **runc.sh** mount --bind /home/fabio/myfolder ./ctr/folder **umount.sh** umount ./ctr/folder ===== Avviare openrc ogni volta che entro nel chroot ===== creare uno script dentro il chroot con nome **/usr/loca/bin/start.sh** per esempio. #!/bin/sh openrc sysinit openrc boot openrc default /bin/sh lanciare il chroot con uno script del genere: #!/usr/bin/env bash cp /etc/resolv.conf ./ctr/etc/resolv.conf mount --bind /dev ./ctr/dev mount -t proc /proc ./ctr/proc mount -t sysfs /sys ./ctr/sys chroot --userspec=root:root ./ctr /usr/local/bin/start.sh ./umount.sh Qui è possibile trovare lo script già pronto che crea tutto il necessario. Editare, versione e architettura e avviare da root come sopra. [[https://www.freemedialab.org/code/project.php?p=auto-scripts|auto-alpine-chroot-openrc]] ===== Opzionale, ma comodo ===== Creare uno script per avviare o stoppare il nostro chroot **/usr/local/bin/myalpine** myalpine start # avvia myalpine stop # ferma e smonta tutto #!/usr/bin/env bash if [ "$1" = "start" ] then echo "Starting Alpine Linux..." cd /home/fabio/folder/alpine sudo ./runc.sh fi if [ "$1" = "stop" ] then echo "Shutdown Alpine ..." cd /home/fabio/folder/alpine sudo ./umount.sh fi ===== Creare sandbox con bubble wrap ===== #!/usr/bin/env bash ARCH="x86_64" ALPINE_VER="3.24" ALPINE_SUB_VER="2" PROJECT_NAME=$1 mkdir -p $PROJECT_NAME/ctr cd $PROJECT_NAME/ctr curl -L https://dl-cdn.alpinelinux.org/alpine/v$ALPINE_VER/releases/$ARCH/alpine-minirootfs-$ALPINE_VER.$ALPINE_SUB_VER-$ARCH.tar.gz -o alpine.tar.gz tar xzf alpine.tar.gz rm alpine.tar.gz cd .. echo "#!/usr/bin/env bash bwrap \ --die-with-parent \ --new-session \ --bind ./ctr / \ --dev /dev \ --proc /proc \ --tmpfs /tmp \ --ro-bind /etc/resolv.conf /etc/resolv.conf \ --chdir /root \ /bin/ash -l " > run_sandbox.sh chmod +x run_sandbox.sh