Strumenti Utente

Strumenti Sito


sistema:alpine:creare_chroot

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: Auto-script
Da usare solo per creare ambienti di sviluppo. Il chroot non garantisce isolamento. Per ambienti isolati meglio usare un container (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 <nome cartella dove mettere il 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. 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
sistema/alpine/creare_chroot.txt · Ultima modifica: 05/10/2026 09:11 da Fabio Di Matteo