-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathchroot_start
More file actions
executable file
·47 lines (36 loc) · 920 Bytes
/
chroot_start
File metadata and controls
executable file
·47 lines (36 loc) · 920 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/bin/sh
BASE_DIR="."
[ -z $1 ] || BASE_DIR=$1
PORTAGE_DIR="$BASE_DIR/var/lib/portage/gentoo"
PORTAGE_FILE="$PORTAGE_DIR.xz.sqfs"
DISTFILES_DIR="/var/lib/portage/distfiles"
PORTAGE_TMP="/var/tmp/portage"
SRC_DIR="/usr/src"
SYSTEMD_NSPAWN="/usr/bin/systemd-nspawn"
[ -d $BASE_DIR/proc ] || { echo "probably no rootfs!!!" ; exit 1; }
BINDS=""
for BIND in $SRC_DIR $PORTAGE_TMP $DISTFILES_DIR
do
[ -d $BASE_DIR/$BIND ] && BINDS="$BINDS $BIND"
done
if [[ -e $PORTAGE_FILE ]]
then
mount -t squashfs $PORTAGE_FILE $PORTAGE_DIR
fi
if [ -x $SYSTEMD_NSPAWN ]
then
BINDS=`echo $BINDS | sed s/\ /\ --bind\ /g`
$SYSTEMD_NSPAWN -D $BASE_DIR --bind $BINDS /bin/zsh
if [[ -e $PORTAGE_FILE ]]
then
umount $PORTAGE_DIR
fi
else
mount -t proc /proc $BASE_DIR/proc
for BIND in $BINDS /dev /dev/pts /dev/shm /sys
do
mount --bind $BIND $BASE_DIR/$BIND
done
echo "run:"
echo "chroot $BASE_DIR /bin/zsh --login"
fi