====== 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