Wiki

debootstrap

Tạo chroot debian

opkg install debootstrap
CHROOT=/volume1/@Entware/opt/debian
mkdir -p $CHROOT
debootstrap --arch=amd64 --extractor=ar bullseye $CHROOT link
debootstrap --arch=amd64 buster $CHROOT http://deb.debian.org/debian/

Nếu build từ phiên bản 9 về trước thì dùng link: http://archive.debian.org/debian/

Nếu build từ phiên bản 10 thì dùng link: http://deb.debian.org/debian/

Các phiên bản debian: 6-squeeze, 7-wheezy, 8-jessie, 9-stretch, 10-buster, 11-bullseye, 12-bookworm --arch=armhf,arm64,amd64

s99debian

cat >> /opt/etc/init.d/S99debian << 'EOF'
#!/bin/sh
PATH=/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin
# Folder with Debian Jessie
CHROOT_DIR=/@volume1/@Entware/opt/debian
# Some folder outside of sandbox,
# will be mounted to /mnt folder in Debian
# Uncommented "EXT_DIR=" line if you need to
# mount a folder inside debian (remove #)
# EXT_DIR=/tmp/mnt/sda1/Media/
CHROOT_SERVICES_LIST=/opt/etc/chroot-services.list
if [ ! -e "$CHROOT_SERVICES_LIST" ]; then
echo "Please, define Debian services to start in
$CHROOT_SERVICES_LIST first!"
echo "One service per line. Hint: this is a script names from
Debian's /etc/init.d/"
exit 1
fi
MountedDirCount="$(mount | grep $CHROOT_DIR | wc -l)"
start() {
if [ $MountedDirCount -gt 0 ]; then
echo "Chroot'ed services seems to be already started,
exiting..."
exit 1
fi
echo "Starting chroot'ed Debian services..."
for dir in dev proc sys; do
mount -o bind /$dir $CHROOT_DIR/$dir
done
[ -z "$EXT_DIR" ] || mount -o bind $EXT_DIR $CHROOT_DIR/mnt
for item in $(cat $CHROOT_SERVICES_LIST); do
chroot $CHROOT_DIR /etc/init.d/$item start
done
}
stop() {
if [ $MountedDirCount -eq 0 ]; then
echo "Chroot'ed services seems to be already stopped,
exiting..."
exit 1
fi
echo "Stopping chroot'ed Debian services..."
for item in $(cat $CHROOT_SERVICES_LIST); do
chroot $CHROOT_DIR /etc/init.d/$item stop
sleep 2
done
umount /opt/debian/dev/pts
mount | grep $CHROOT_DIR | awk '{print $3}' | xargs umount -l
}
restart() {
if [ $MountedDirCount -eq 0 ]; then
echo "Chroot'ed services seems to be already stopped"
start
else
echo "Stopping chroot'ed Debian services..."
for item in $(cat $CHROOT_SERVICES_LIST); do
chroot $CHROOT_DIR /etc/init.d/$item stop
sleep 2
done
mount | grep $CHROOT_DIR | awk '{print $3}' | xargs umount -l
echo "Restarting chroot'ed Debian services..."
for dir in dev proc sys; do
mount -o bind /$dir $CHROOT_DIR/$dir
done
[ -z "$EXT_DIR" ] || mount -o bind $EXT_DIR $CHROOT_DIR/mnt
for item in $(cat $CHROOT_SERVICES_LIST); do
chroot $CHROOT_DIR /etc/init.d/$item start
done
fi
}
enter() {
[ -z "$EXT_DIR" ] || mount -o bind $EXT_DIR $CHROOT_DIR/mnt
mount -o bind /dev/ /opt/debian/dev/
mount -o bind /dev/pts /opt/debian/dev/pts
mount -o bind /proc/ /opt/debian/proc/
mount -o bind /sys/ /opt/debian/sys/
chroot /opt/debian /bin/bash
}
status() {
if [ $MountedDirCount -gt 0 ]; then
echo "Chroot'ed services running..."
else
echo "Chroot'ed services not running!"
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
enter)
enter
;;
status) status
;;
*)
echo "Usage: (start|stop|restart|enter|status)"
exit 1
;;
esac
echo Done.
exit 0
EOF

Làm cho file s99debian có thể chạy

chmod 755 /opt/etc/init.d/S99debian

Tạo liên kết ứng dụng trong debian chạy khi debian chạy và lệnh chạy debian dễ dàng

touch /opt/etc/chroot-services.list
ln -s /opt/etc/init.d/S99debian /opt/bin/debian

Chúng ta dễ dàng chạy, vào, thoát, dừng debian thông qua các lệnh

debian start
debian stop
debian restart
debian enter
debian status

Copy file host

cp /etc/hosts /opt/debian/etc/

Tạo bản sao lưu

tar -cvzf debian-stretch-9_clean.tgz debian/

Khôi phục lại

tar -xvzf debian-buster-11_clean.tgz

Thêm nguồn

Mở file /etc/apt/sources.list và thêm vào

deb http://repo.aptly.info/ squeeze main

Cập nhật KEY

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A0546A43624A8331

Cập nhật

# apt-get update
# apt-get install aptly