*: Introduce eatmydata changes
This commit is contained in:
65
banana-pi.sh
65
banana-pi.sh
@@ -99,18 +99,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-arm-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -162,9 +198,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install git-core binutils ca-certificates locales console-common less nano git cmake
|
||||
eatmydata apt-get -y install git-core binutils ca-certificates locales console-common less nano git cmake
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -191,13 +227,12 @@ cp -p /bsp/services/all/*.service /etc/systemd/system/
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops systemd-timesyncd || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade -y \$aptops
|
||||
apt-get autoremove -y
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops systemd-timesyncd || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade -y \$aptops
|
||||
|
||||
# Regenerated the shared-mime-info database on the first boot
|
||||
# since it fails to do so properly in a chroot.
|
||||
@@ -225,11 +260,17 @@ _EOF_
|
||||
# Set the terminus font for a bit nicer display.
|
||||
sed -i -e 's/FONTFACE=.*/FONTFACE="Terminus"/' /etc/default/console-setup
|
||||
sed -i -e 's/FONTSIZE=.*/FONTSIZE="6x12"/' /etc/default/console-setup
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod +755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
@@ -99,18 +99,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-arm-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -163,9 +199,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
eatmydata apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -185,14 +221,14 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops --autoremove systemd-timesyncd || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade -y \$aptops
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops --autoremove systemd-timesyncd || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade -y \$aptops
|
||||
|
||||
apt-get -y --allow-change-held-packages --purge autoremove
|
||||
eatmydata apt-get -y --allow-change-held-packages --purge autoremove
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -234,12 +270,17 @@ sed -i 's/^TimeoutStartSec=5min/TimeoutStartSec=25/g' "/usr/lib/systemd/system/n
|
||||
cat << '_EOF_' > /etc/default/u-boot
|
||||
U_BOOT_PARAMETERS="console=ttyS0,115200 console=tty1 root=/dev/mmcblk0p1 rootwait panic=10 rw rootfstype=$fstype net.ifnames=0"
|
||||
_EOF_
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
65
bbb.sh
65
bbb.sh
@@ -99,18 +99,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-arm-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -163,9 +199,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
eatmydata apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -185,14 +221,14 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops --autoremove systemd-timesyncd || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade -y \$aptops
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops --autoremove systemd-timesyncd || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade -y \$aptops
|
||||
|
||||
apt-get -y --allow-change-held-packages --purge autoremove
|
||||
eatmydata apt-get -y --allow-change-held-packages --purge autoremove
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -240,12 +276,17 @@ _EOF_
|
||||
cat << _EOF_ >> /etc/securetty
|
||||
ttyO0
|
||||
_EOF_
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
@@ -100,18 +100,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-arm-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -160,9 +196,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install binutils ca-certificates console-common cryptsetup-bin git initramfs-tools less locales nano u-boot-tools
|
||||
eatmydata apt-get -y install binutils ca-certificates console-common cryptsetup-bin git initramfs-tools less locales nano u-boot-tools
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -182,14 +218,14 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops --autoremove systemd-timesyncd || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade -y \$aptops
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops --autoremove systemd-timesyncd || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade -y \$aptops
|
||||
|
||||
apt-get -y --allow-change-held-packages --purge autoremove
|
||||
eatmydata apt-get -y --allow-change-held-packages --purge autoremove
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -223,12 +259,17 @@ sed -i -e 's/FONTSIZE=.*/FONTSIZE="6x12"/' /etc/default/console-setup
|
||||
|
||||
# Fix startup time from 5 minutes to 15 secs on raise interface wlan0
|
||||
sed -i 's/^TimeoutStartSec=5min/TimeoutStartSec=15/g' "/usr/lib/systemd/system/networking.service"
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
@@ -101,18 +101,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-arm-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -161,9 +197,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install binutils ca-certificates console-common cryptsetup-bin git initramfs-tools less locales nano u-boot-tools
|
||||
eatmydata apt-get -y install binutils ca-certificates console-common cryptsetup-bin git initramfs-tools less locales nano u-boot-tools
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -183,14 +219,14 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops --autoremove systemd-timesyncd || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade -y \$aptops
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops --autoremove systemd-timesyncd || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade -y \$aptops
|
||||
|
||||
apt-get -y --allow-change-held-packages --purge autoremove
|
||||
eatmydata apt-get -y --allow-change-held-packages --purge autoremove
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -227,12 +263,17 @@ sed -i -e 's/FONTSIZE=.*/FONTSIZE="6x12"/' /etc/default/console-setup
|
||||
|
||||
# Fix startup time from 5 minutes to 15 secs on raise interface wlan0
|
||||
sed -i 's/^TimeoutStartSec=5min/TimeoutStartSec=15/g' "/usr/lib/systemd/system/networking.service"
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
@@ -101,18 +101,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-arm-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -164,9 +200,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install git-core binutils ca-certificates cryptsetup-bin initramfs-tools locales console-common less nano git u-boot-tools
|
||||
eatmydata apt-get -y install git-core binutils ca-certificates cryptsetup-bin initramfs-tools locales console-common less nano git u-boot-tools
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -186,14 +222,14 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops systemd-timesyncd || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops systemd-timesyncd || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade
|
||||
|
||||
apt-get -y --allow-change-held-packages --purge autoremove
|
||||
eatmydata apt-get -y --allow-change-held-packages --purge autoremove
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -220,12 +256,17 @@ apt download -o APT::Sandbox::User=root ca-certificates 2>/dev/null
|
||||
# Set the terminus font for a bit nicer display.
|
||||
sed -i -e 's/FONTFACE=.*/FONTFACE="Terminus"/' /etc/default/console-setup
|
||||
sed -i -e 's/FONTSIZE=.*/FONTSIZE="6x12"/' /etc/default/console-setup
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
@@ -99,18 +99,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-arm-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -163,9 +199,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
eatmydata apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -185,14 +221,14 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops --autoremove systemd-timesyncd || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade -y \$aptops
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops --autoremove systemd-timesyncd || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade -y \$aptops
|
||||
|
||||
apt-get -y --allow-change-held-packages --purge autoremove
|
||||
eatmydata apt-get -y --allow-change-held-packages --purge autoremove
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -229,12 +265,17 @@ sed -i -e 's/FONTSIZE=.*/FONTSIZE="6x12"/' /etc/default/console-setup
|
||||
|
||||
# Fix startup time from 5 minutes to 15 secs on raise interface wlan0
|
||||
sed -i 's/^TimeoutStartSec=5min/TimeoutStartSec=15/g' "/usr/lib/systemd/system/networking.service"
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
@@ -99,18 +99,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-arm-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -163,9 +199,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
eatmydata apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -185,14 +221,14 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops --autoremove systemd-timesyncd || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade -y \$aptops
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops --autoremove systemd-timesyncd || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade -y \$aptops
|
||||
|
||||
apt-get -y --allow-change-held-packages --purge autoremove
|
||||
eatmydata apt-get -y --allow-change-held-packages --purge autoremove
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -229,12 +265,17 @@ sed -i -e 's/FONTSIZE=.*/FONTSIZE="6x12"/' /etc/default/console-setup
|
||||
|
||||
# Fix startup time from 5 minutes to 15 secs on raise interface wlan0
|
||||
sed -i 's/^TimeoutStartSec=5min/TimeoutStartSec=15/g' "/usr/lib/systemd/system/networking.service"
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
65
cubox-i.sh
65
cubox-i.sh
@@ -101,18 +101,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-arm-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -165,9 +201,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install binutils ca-certificates console-common cryptsetup-bin git initramfs-tools less locales nano u-boot-tools
|
||||
eatmydata apt-get -y install binutils ca-certificates console-common cryptsetup-bin git initramfs-tools less locales nano u-boot-tools
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -187,14 +223,14 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops --autoremove systemd-timesyncd || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade -y \$aptops
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops --autoremove systemd-timesyncd || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade -y \$aptops
|
||||
|
||||
apt-get -y --allow-change-held-packages --purge autoremove
|
||||
eatmydata apt-get -y --allow-change-held-packages --purge autoremove
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -237,12 +273,17 @@ sed -i 's/^TimeoutStartSec=5min/TimeoutStartSec=15/g' "/usr/lib/systemd/system/n
|
||||
cat << '_EOF_' > /etc/default/u-boot
|
||||
U_BOOT_PARAMETERS="console=ttyS0,115200 console=tty1 root=/dev/mmcblk0p1 rootwait panic=10 rw rootfstype=$fstype net.ifnames=0"
|
||||
_EOF_
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
65
cubox.sh
65
cubox.sh
@@ -101,18 +101,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-arm-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -165,9 +201,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
eatmydata apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -187,14 +223,14 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops --autoremove systemd-timesyncd || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade -y \$aptops
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops --autoremove systemd-timesyncd || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade -y \$aptops
|
||||
|
||||
apt-get -y --allow-change-held-packages --purge autoremove
|
||||
eatmydata apt-get -y --allow-change-held-packages --purge autoremove
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -231,12 +267,17 @@ sed -i -e 's/FONTSIZE=.*/FONTSIZE="6x12"/' /etc/default/console-setup
|
||||
|
||||
# Fix startup time from 5 minutes to 15 secs on raise interface wlan0
|
||||
sed -i 's/^TimeoutStartSec=5min/TimeoutStartSec=15/g' "/usr/lib/systemd/system/networking.service"
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
@@ -101,18 +101,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-arm-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -205,14 +241,14 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops --autoremove systemd-timesyncd || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade -y \$aptops
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops --autoremove systemd-timesyncd || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade -y \$aptops
|
||||
|
||||
apt-get --yes --allow-change-held-packages -o dpkg::options::=--force-confnew autoremove
|
||||
eatmydata apt-get --yes --allow-change-held-packages -o dpkg::options::=--force-confnew autoremove
|
||||
|
||||
# Copy all services
|
||||
install -m644 /bsp/services/all/*.service /etc/systemd/system/
|
||||
@@ -245,6 +281,8 @@ sed -i -e 's/FONTSIZE=.*/FONTSIZE="6x12"/' /etc/default/console-setup
|
||||
|
||||
# Fix startup time from 5 minutes to 15 secs on raise interface wlan0
|
||||
sed -i 's/^TimeoutStartSec=5min/TimeoutStartSec=15/g' "/usr/lib/systemd/system/networking.service"
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
@@ -279,6 +317,9 @@ sed -i 's/INTERFACESv4=""/INTERFACESv4="usb0"/g' /etc/default/isc-dhcp-server
|
||||
systemctl enable isc-dhcp-server
|
||||
EOF
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
65
kalitap.sh
65
kalitap.sh
@@ -99,18 +99,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-arm-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -163,9 +199,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
eatmydata apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -185,14 +221,14 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops --autoremove systemd-timesyncd || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade -y \$aptops
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops --autoremove systemd-timesyncd || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade -y \$aptops
|
||||
|
||||
apt-get -y --allow-change-held-packages --purge autoremove
|
||||
eatmydata apt-get -y --allow-change-held-packages --purge autoremove
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -229,12 +265,17 @@ sed -i -e 's/FONTSIZE=.*/FONTSIZE="6x12"/' /etc/default/console-setup
|
||||
|
||||
# Fix startup time from 5 minutes to 15 secs on raise interface wlan0
|
||||
sed -i 's/^TimeoutStartSec=5min/TimeoutStartSec=15/g' "/usr/lib/systemd/system/networking.service"
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
63
luna.sh
63
luna.sh
@@ -99,18 +99,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-arm-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -163,9 +199,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano uboot-mkimage
|
||||
eatmydata apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano uboot-mkimage
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -185,13 +221,13 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops --autoremove systemd-timesyncd || apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops --autoremove systemd-timesyncd || eatmydata apt-get --yes --fix-broken install
|
||||
|
||||
apt-get -y --allow-change-held-packages --purge autoremove
|
||||
eatmydata apt-get -y --allow-change-held-packages --purge autoremove
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -228,12 +264,17 @@ sed -i -e 's/FONTSIZE=.*/FONTSIZE="6x12"/' /etc/default/console-setup
|
||||
|
||||
# Fix startup time from 5 minutes to 15 secs on raise interface wlan0
|
||||
sed -i 's/^TimeoutStartSec=5min/TimeoutStartSec=15/g' "/usr/lib/systemd/system/networking.service"
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
63
mini-x.sh
63
mini-x.sh
@@ -99,18 +99,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-aarch64-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -163,9 +199,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
eatmydata apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -185,13 +221,13 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade -y \$aptops
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade -y \$aptops
|
||||
|
||||
apt-get -y --allow-change-held-packages --purge autoremove
|
||||
eatmydata apt-get -y --allow-change-held-packages --purge autoremove
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -234,12 +270,17 @@ sed -i -e 's/FONTSIZE=.*/FONTSIZE="6x12"/' /etc/default/console-setup
|
||||
|
||||
# Fix startup time from 5 minutes to 15 secs on raise interface wlan0
|
||||
sed -i 's/^TimeoutStartSec=5min/TimeoutStartSec=15/g' "/usr/lib/systemd/system/networking.service"
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
65
nanopi2.sh
65
nanopi2.sh
@@ -102,18 +102,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-arm-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -172,9 +208,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
eatmydata apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -194,14 +230,14 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops --autoremove systemd-timesyncd || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade -y \$aptops
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops --autoremove systemd-timesyncd || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade -y \$aptops
|
||||
|
||||
apt-get -y --allow-change-held-packages --purge autoremove
|
||||
eatmydata apt-get -y --allow-change-held-packages --purge autoremove
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -241,12 +277,17 @@ sed -i -e 's/FONTSIZE=.*/FONTSIZE="6x12"/' /etc/default/console-setup
|
||||
|
||||
# Fix startup time from 5 minutes to 15 secs on raise interface wlan0
|
||||
sed -i 's/^TimeoutStartSec=5min/TimeoutStartSec=15/g' "/usr/lib/systemd/system/networking.service"
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
65
nanopi3.sh
65
nanopi3.sh
@@ -102,18 +102,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-aarch64-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -181,9 +217,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
eatmydata apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -203,14 +239,14 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \%aptops --autoremove systemd-timesyncd || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \%aptops --autoremove systemd-timesyncd || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade
|
||||
|
||||
apt-get -y --allow-change-held-packages --purge autoremove
|
||||
eatmydata apt-get -y --allow-change-held-packages --purge autoremove
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -251,12 +287,17 @@ sed -i -e 's/FONTSIZE=.*/FONTSIZE="6x12"/' /etc/default/console-setup
|
||||
|
||||
# Fix startup time from 5 minutes to 15 secs on raise interface wlan0
|
||||
sed -i 's/^TimeoutStartSec=5min/TimeoutStartSec=15/g' "/usr/lib/systemd/system/networking.service"
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
@@ -101,18 +101,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-aarch64-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -257,9 +293,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
eatmydata apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -279,13 +315,13 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade -y \$aptops
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade -y \$aptops
|
||||
|
||||
apt-get -y --allow-change-held-packages --purge autoremove
|
||||
eatmydata apt-get -y --allow-change-held-packages --purge autoremove
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -336,12 +372,17 @@ sed -i -e 's/FONTSIZE=.*/FONTSIZE="6x12"/' /etc/default/console-setup
|
||||
|
||||
# Fix startup time from 5 minutes to 15 secs on raise interface wlan0
|
||||
sed -i 's/^TimeoutStartSec=5min/TimeoutStartSec=15/g' "/usr/lib/systemd/system/networking.service"
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
@@ -101,18 +101,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-aarch64-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -260,9 +296,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
eatmydata apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -282,12 +318,12 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \${aptops} ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install --autoremove -y \$aptops systemd-timesyncd || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade -y \$aptops
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \${aptops} ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install --autoremove -y \$aptops systemd-timesyncd || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade -y \$aptops
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -334,12 +370,17 @@ cd /
|
||||
# Set the terminus font for a bit nicer display.
|
||||
sed -ie 's/FONTFACE=.*/FONTFACE="Terminus"/g' /etc/default/console-setup
|
||||
sed -ie 's/FONTSIZE=.*/FONTSIZE="6x12"/g' /etc/default/console-setup
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
66
odroid-c.sh
66
odroid-c.sh
@@ -102,18 +102,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-arm-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -166,10 +202,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get update
|
||||
apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
eatmydata apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -189,14 +224,14 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops --autoremove systemd-timesyncd || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade -y \$aptops
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops --autoremove systemd-timesyncd || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade -y \$aptops
|
||||
|
||||
apt-get -y --allow-change-held-packages --purge autoremove
|
||||
eatmydata apt-get -y --allow-change-held-packages --purge autoremove
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -237,12 +272,17 @@ sed -i -e 's/FONTSIZE=.*/FONTSIZE="6x12"/' /etc/default/console-setup
|
||||
|
||||
# Fix startup time from 5 minutes to 15 secs on raise interface wlan0
|
||||
sed -i 's/^TimeoutStartSec=5min/TimeoutStartSec=15/g' "/usr/lib/systemd/system/networking.service"
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
70
odroid-c2.sh
70
odroid-c2.sh
@@ -103,18 +103,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-aarch64-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -172,9 +208,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install git-core binutils ca-certificates locales console-common less nano git cmake
|
||||
eatmydata apt-get -y install git-core binutils ca-certificates locales console-common less nano git cmake
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -194,14 +230,14 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops systemd-timesyncd || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade -y \$aptops
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops systemd-timesyncd || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade -y \$aptops
|
||||
|
||||
apt-get -y --allow-change-held-packages --purge autoremove
|
||||
eatmydata apt-get -y --allow-change-held-packages --purge autoremove
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -238,11 +274,17 @@ apt download -o APT::Sandbox::User=root ca-certificates 2>/dev/null
|
||||
# Set the terminus font for a bit nicer display.
|
||||
sed -i -e 's/FONTFACE=.*/FONTFACE="Terminus"/' /etc/default/console-setup
|
||||
sed -i -e 's/FONTSIZE=.*/FONTSIZE="6x12"/' /etc/default/console-setup
|
||||
EOF
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
65
odroid-u2.sh
65
odroid-u2.sh
@@ -102,18 +102,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-arm-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -166,9 +202,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
eatmydata apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -188,14 +224,14 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops systemd-timesyncd || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade -y \$aptops
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops systemd-timesyncd || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade -y \$aptops
|
||||
|
||||
apt-get -y --allow-change-held-packages --purge autoremove
|
||||
eatmydata apt-get -y --allow-change-held-packages --purge autoremove
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -236,12 +272,17 @@ sed -i 's/^TimeoutStartSec=5min/TimeoutStartSec=15/g' "/usr/lib/systemd/system/n
|
||||
# This file needs to exist in order to save the mac address, otherwise every
|
||||
# boot, the ODROID-U2/U3 will generate a random mac address.
|
||||
touch /etc/smsc95xx_mac_addr
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
@@ -110,18 +110,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
--components=${components} --include=${arm// /,} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-aarch64-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -174,9 +210,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
eatmydata apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -196,13 +232,13 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade -y \$aptops
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade -y \$aptops
|
||||
|
||||
apt-get -y --allow-change-held-packages --purge autoremove
|
||||
eatmydata apt-get -y --allow-change-held-packages --purge autoremove
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -223,8 +259,8 @@ install -m755 /bsp/scripts/monstop /usr/bin/
|
||||
# Install the kernel packages
|
||||
echo "deb http://http.re4son-kernel.com/re4son kali-pi main" > /etc/apt/sources.list.d/re4son.list
|
||||
wget -qO- https://re4son-kernel.com/keys/http/archive-key.asc | apt-key add - > /dev/null 2>&1
|
||||
apt-get update
|
||||
apt-get install -y \$aptops kalipi-kernel kalipi-bootloader kalipi-re4son-firmware kalipi-kernel-headers
|
||||
eatmydata apt-get update
|
||||
eatmydata apt-get install -y \$aptops kalipi-kernel kalipi-bootloader kalipi-re4son-firmware kalipi-kernel-headers
|
||||
|
||||
# Regenerated the shared-mime-info database on the first boot
|
||||
# since it fails to do so properly in a chroot.
|
||||
@@ -274,12 +310,17 @@ sed -i -e 's/FONTSIZE=.*/FONTSIZE="6x12"/' /etc/default/console-setup
|
||||
|
||||
# Fix startup time from 5 minutes to 15 secs on raise interface wlan0
|
||||
sed -i 's/^TimeoutStartSec=5min/TimeoutStartSec=15/g' "/usr/lib/systemd/system/networking.service"
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
69
odroid-w.sh
69
odroid-w.sh
@@ -109,18 +109,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-arm-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -173,9 +209,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
eatmydata apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -195,14 +231,14 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops --autoremove systemd-timesyncd || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade -y \$aptops
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops --autoremove systemd-timesyncd || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade -y \$aptops
|
||||
|
||||
apt-get -y --allow-change-held-packages --purge autoremove
|
||||
eatmydata apt-get -y --allow-change-held-packages --purge autoremove
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -223,8 +259,8 @@ install -m755 /bsp/scripts/monstop /usr/bin/
|
||||
# Install the kernel packages
|
||||
echo "deb http://http.re4son-kernel.com/re4son kali-pi main" > /etc/apt/sources.list.d/re4son.list
|
||||
wget -qO- https://re4son-kernel.com/keys/http/archive-key.asc | apt-key add - > /dev/null 2>&1
|
||||
apt-get update
|
||||
apt-get install -y \$aptops kalipi-kernel kalipi-bootloader kalipi-re4son-firmware kalipi-kernel-headers
|
||||
eatmydata apt-get update
|
||||
eatmydata apt-get install -y \$aptops kalipi-kernel kalipi-bootloader kalipi-re4son-firmware kalipi-kernel-headers
|
||||
|
||||
# Regenerated the shared-mime-info database on the first boot
|
||||
# since it fails to do so properly in a chroot.
|
||||
@@ -274,12 +310,17 @@ sed -i -e 's/FONTSIZE=.*/FONTSIZE="6x12"/' /etc/default/console-setup
|
||||
|
||||
# Fix startup time from 5 minutes to 15 secs on raise interface wlan0
|
||||
sed -i 's/^TimeoutStartSec=5min/TimeoutStartSec=15/g' "/usr/lib/systemd/system/networking.service"
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
@@ -102,18 +102,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-arm-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -166,9 +202,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
eatmydata apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -188,14 +224,14 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops --autoremove systemd-timesyncd || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade -y \$aptops
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops --autoremove systemd-timesyncd || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade -y \$aptops
|
||||
|
||||
apt-get -y --allow-change-held-packages --purge autoremove
|
||||
eatmydata apt-get -y --allow-change-held-packages --purge autoremove
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -237,12 +273,17 @@ sed -i -e 's/FONTSIZE=.*/FONTSIZE="6x12"/' /etc/default/console-setup
|
||||
|
||||
# Fix startup time from 5 minutes to 15 secs on raise interface wlan0
|
||||
sed -i 's/^TimeoutStartSec=5min/TimeoutStartSec=15/g' "/usr/lib/systemd/system/networking.service"
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
@@ -226,11 +226,11 @@ echo "kali:kali" | chpasswd
|
||||
|
||||
aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acquire::Retries=3"
|
||||
|
||||
eatmydata apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops --autoremove systemd-timesyncd || apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops --autoremove systemd-timesyncd || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade -y \$aptops
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
|
||||
63
pinebook.sh
63
pinebook.sh
@@ -101,18 +101,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-aarch64-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -171,9 +207,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install git binutils ca-certificates console-common cryptsetup-bin initramfs-tools less locales nano u-boot-tools
|
||||
eatmydata apt-get -y install git binutils ca-certificates console-common cryptsetup-bin initramfs-tools less locales nano u-boot-tools
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -193,13 +229,13 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops systemd-timesyncd || apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops systemd-timesyncd || eatmydata apt-get --yes --fix-broken install
|
||||
|
||||
apt-get -y --allow-change-held-packages autoremove
|
||||
eatmydata apt-get -y --allow-change-held-packages autoremove
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -288,12 +324,17 @@ dkms install rtl8723cs/2020.02.27 -k 5.7.0-kali1-arm64
|
||||
|
||||
# Replace the conf file after we've built the module and hope for the best
|
||||
mv /usr/src/rtl8723cs-2020.02.27/dkms.conf.orig /usr/src/rtl8723cs-2020.02.27/dkms.conf
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
67
riot.sh
67
riot.sh
@@ -105,18 +105,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-arm-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -192,9 +228,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
eatmydata apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -214,19 +250,19 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops --autoremove systemd-timesyncd || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade -y \$aptops
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops --autoremove systemd-timesyncd || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade -y \$aptops
|
||||
|
||||
apt-get -y --allow-change-held-packages --purge autoremove
|
||||
eatmydata apt-get -y --allow-change-held-packages --purge autoremove
|
||||
|
||||
# We do this here, otherwise flash-kernel will fail to run because of not seeing
|
||||
# the proper kernel version.
|
||||
cd /root && gcc -Wall -shared -o libfakeuname.so fakeuname.c
|
||||
LD_PRELOAD=/root/libfakeuname.so apt-get install -y \$aptops linux-image-armmp u-boot-imx
|
||||
LD_PRELOAD=/root/libfakeuname.so eatmydata apt-get install -y \$aptops linux-image-armmp u-boot-imx
|
||||
rm /root/libfakeuname*
|
||||
cd /
|
||||
|
||||
@@ -265,12 +301,17 @@ sed -i -e 's/FONTSIZE=.*/FONTSIZE="6x12"/' /etc/default/console-setup
|
||||
|
||||
# Fix startup time from 5 minutes to 15 secs on raise interface wlan0
|
||||
sed -i 's/^TimeoutStartSec=5min/TimeoutStartSec=15/g' "/usr/lib/systemd/system/networking.service"
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
69
rpi.sh
69
rpi.sh
@@ -109,18 +109,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-arm-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -173,9 +209,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
eatmydata apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -195,14 +231,14 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops --autoremove systemd-timesyncd || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade -y \$aptops
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops --autoremove systemd-timesyncd || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade -y \$aptops
|
||||
|
||||
apt-get --yes --allow-change-held-packages --purge autoremove
|
||||
eatmydata apt-get --yes --allow-change-held-packages --purge autoremove
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -219,8 +255,8 @@ chmod 755 /usr/bin/kalipi-tft-config
|
||||
# Install the kernel packages
|
||||
echo "deb http://http.re4son-kernel.com/re4son kali-pi main" > /etc/apt/sources.list.d/re4son.list
|
||||
wget -qO /etc/apt/trusted.gpg.d/re4son-repo-key.asc https://re4son-kernel.com/keys/http/archive-key.asc
|
||||
apt-get update
|
||||
apt-get install -y \$aptops kalipi-kernel kalipi-bootloader kalipi-re4son-firmware kalipi-kernel-headers
|
||||
eatmydata apt-get update
|
||||
eatmydata apt-get install -y \$aptops kalipi-kernel kalipi-bootloader kalipi-re4son-firmware kalipi-kernel-headers
|
||||
|
||||
# Regenerated the shared-mime-info database on the first boot
|
||||
# since it fails to do so properly in a chroot.
|
||||
@@ -261,12 +297,17 @@ sed -i -e 's/FONTSIZE=.*/FONTSIZE="6x12"/' /etc/default/console-setup
|
||||
|
||||
# Fix startup time from 5 minutes to 15 secs on raise interface wlan0
|
||||
sed -i 's/^TimeoutStartSec=5min/TimeoutStartSec=15/g' "/usr/lib/systemd/system/networking.service"
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
@@ -110,18 +110,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-aarch64-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -174,9 +210,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
eatmydata apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -194,13 +230,13 @@ echo "kali:kali" | chpasswd
|
||||
|
||||
aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acquire::Retries=3"
|
||||
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade -y \$aptops
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade -y \$aptops
|
||||
|
||||
apt-get -y --allow-change-held-packages --purge autoremove
|
||||
eatmydata apt-get -y --allow-change-held-packages --purge autoremove
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -221,8 +257,8 @@ install -m755 /bsp/scripts/monstop /usr/bin/
|
||||
# Install the kernel packages
|
||||
echo "deb http://http.re4son-kernel.com/re4son kali-pi main" > /etc/apt/sources.list.d/re4son.list
|
||||
wget -qO /etc/apt/trusted.gpg.d/re4son-repo-key.asc https://re4son-kernel.com/keys/http/archive-key.asc
|
||||
apt-get update
|
||||
apt-get install -y \$aptops kalipi-kernel kalipi-bootloader kalipi-re4son-firmware kalipi-kernel-headers
|
||||
eatmydata apt-get update
|
||||
eatmydata apt-get install -y \$aptops kalipi-kernel kalipi-bootloader kalipi-re4son-firmware kalipi-kernel-headers
|
||||
|
||||
# Bluetooth enabling
|
||||
# Copy in the bluetooth firmware
|
||||
@@ -299,12 +335,17 @@ sed -i -e 's/FONTSIZE=.*/FONTSIZE="6x12"/' /etc/default/console-setup
|
||||
|
||||
# Fix startup time from 5 minutes to 15 secs on raise interface wlan0
|
||||
sed -i 's/^TimeoutStartSec=5min/TimeoutStartSec=15/g' "/usr/lib/systemd/system/networking.service"
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
@@ -110,18 +110,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-arm-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -173,9 +209,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
eatmydata apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -193,12 +229,12 @@ echo "kali:kali" | chpasswd
|
||||
|
||||
aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acquire::Retries=3"
|
||||
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops --autoremove systemd-timesyncd || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade -y \$aptops
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops --autoremove systemd-timesyncd || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade -y \$aptops
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -230,8 +266,8 @@ chmod 755 /usr/bin/kalipi-config
|
||||
# Install the kernel packages
|
||||
echo "deb http://http.re4son-kernel.com/re4son kali-pi main" > /etc/apt/sources.list.d/re4son.list
|
||||
wget -qO /etc/apt/trusted.gpg.d/re4son-repo-key.asc https://re4son-kernel.com/keys/http/archive-key.asc
|
||||
apt-get update
|
||||
apt-get install --yes --allow-change-held-packages kalipi-kernel kalipi-bootloader kalipi-re4son-firmware kalipi-kernel-headers
|
||||
eatmydata apt-get update
|
||||
eatmydata apt-get install --yes --allow-change-held-packages kalipi-kernel kalipi-bootloader kalipi-re4son-firmware kalipi-kernel-headers
|
||||
|
||||
# Bluetooth enabling
|
||||
install -m644 /bsp/bluetooth/rpi/50-bluetooth-hci-auto-poweron.rules /etc/udev/rules.d/
|
||||
@@ -293,12 +329,17 @@ sed -i -e 's/FONTSIZE=.*/FONTSIZE="6x12"/' /etc/default/console-setup
|
||||
|
||||
# Fix startup time from 5 minutes to 15 secs on raise interface wlan0
|
||||
sed -i 's/^TimeoutStartSec=5min/TimeoutStartSec=15/g' "/lib/systemd/system/networking.service"
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
@@ -100,24 +100,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# Detect architecture and define variable
|
||||
if [ ${architecture} = "arm64" ]; then
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
elif [ ${architecture} = "armhf" ] || [ ${architecture} = "armel" ]; then
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
# Define sources.list
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
@@ -171,9 +201,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install git-core binutils ca-certificates locales console-common less nano git cmake
|
||||
eatmydata apt-get -y install git-core binutils ca-certificates locales console-common less nano git cmake
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -191,12 +221,12 @@ echo "kali:kali" | chpasswd
|
||||
|
||||
aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acquire::Retries=3"
|
||||
|
||||
apt-get install -y \$aptops ${packages} || apt-get install -y --fix-broken
|
||||
apt-get install -y \$aptops ${packages} || apt-get install -y --fix-broken
|
||||
apt-get install -y \$aptops ${packages} ${extras} ${tools} || apt-get install -y --fix-broken
|
||||
apt-get install -y \$aptops ${packages} ${extras} ${tools} || apt-get install -y --fix-broken
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get install -y --fix-broken
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get install -y --fix-broken
|
||||
eatmydata apt-get install -y \$aptops ${packages} ${extras} ${tools} || eatmydata apt-get install -y --fix-broken
|
||||
eatmydata apt-get install -y \$aptops ${packages} ${extras} ${tools} || eatmydata apt-get install -y --fix-broken
|
||||
|
||||
apt-get -y --allow-change-held-packages --purge autoremove
|
||||
eatmydata apt-get -y --allow-change-held-packages --purge autoremove
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -217,8 +247,8 @@ install -m755 /bsp/scripts/monstop /usr/bin/
|
||||
# Install the kernel packages
|
||||
echo "deb http://http.re4son-kernel.com/re4son kali-pi main" > /etc/apt/sources.list.d/re4son.list
|
||||
wget -qO /etc/apt/trusted.gpg.d/re4son-repo-key.asc https://re4son-kernel.com/keys/http/archive-key.asc
|
||||
apt-get update
|
||||
apt-get install -y \$aptops kalipi-kernel kalipi-bootloader kalipi-re4son-firmware kalipi-kernel-headers
|
||||
eatmydata apt-get update
|
||||
eatmydata apt-get install -y \$aptops kalipi-kernel kalipi-bootloader kalipi-re4son-firmware kalipi-kernel-headers
|
||||
|
||||
# Regenerated the shared-mime-info database on the first boot
|
||||
# since it fails to do so properly in a chroot.
|
||||
@@ -277,12 +307,17 @@ install -m755 /bsp/configs/vc.sh /etc/profile.d/
|
||||
install -m644 /bsp/udev/99-vchiq-permissions.rules /etc/udev/rules.d/
|
||||
# Compile raspi userland
|
||||
cd /userland && ./buildme --aarch64
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
65
rpi3-64.sh
65
rpi3-64.sh
@@ -99,18 +99,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-aarch64-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -163,9 +199,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install binutils ca-certificates cmake console-common git initramfs-tools less locales nano u-boot-tools
|
||||
eatmydata apt-get -y install binutils ca-certificates cmake console-common git initramfs-tools less locales nano u-boot-tools
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -183,12 +219,12 @@ echo "kali:kali" | chpasswd
|
||||
|
||||
aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acquire::Retries=3"
|
||||
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
# We want systemd-timesyncd not sntp which gets pulled in by something in kali-linux-default
|
||||
apt-get install -y \$aptops --autoremove systemd-timesyncd
|
||||
eatmydata apt-get install -y \$aptops --autoremove systemd-timesyncd
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -225,8 +261,8 @@ chmod 755 /usr/bin/kalipi-tft-config
|
||||
# Install the kernel packages
|
||||
echo "deb http://http.re4son-kernel.com/re4son kali-pi main" > /etc/apt/sources.list.d/re4son.list
|
||||
wget -qO /etc/apt/trusted.gpg.d/re4son-repo-key.asc https://re4son-kernel.com/keys/http/archive-key.asc
|
||||
apt-get update
|
||||
apt-get install --yes --allow-change-held-packages -o dpkg::options::=--force-confnew kalipi-kernel kalipi-bootloader kalipi-re4son-firmware kalipi-kernel-headers
|
||||
eatmydata apt-get update
|
||||
eatmydata apt-get install --yes --allow-change-held-packages -o dpkg::options::=--force-confnew kalipi-kernel kalipi-bootloader kalipi-re4son-firmware kalipi-kernel-headers
|
||||
|
||||
# Regenerated the shared-mime-info database on the first boot
|
||||
# since it fails to do so properly in a chroot
|
||||
@@ -275,12 +311,17 @@ sed -i -e 's/FONTSIZE=.*/FONTSIZE="6x12"/' /etc/default/console-setup
|
||||
|
||||
# Fix startup time from 5 minutes to 15 secs on raise interface wlan0
|
||||
sed -i 's/^TimeoutStartSec=5min/TimeoutStartSec=15/g' "/lib/systemd/system/networking.service"
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
@@ -99,18 +99,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-arm-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -163,9 +199,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install git binutils ca-certificates console-common initramfs-tools less locales nano u-boot-tools
|
||||
eatmydata apt-get -y install git binutils ca-certificates console-common initramfs-tools less locales nano u-boot-tools
|
||||
|
||||
echo 'LANG=C.UTF-8' > /etc/default/locale
|
||||
|
||||
@@ -187,19 +223,19 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops --autoremove systemd-timesyncd || apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops --autoremove systemd-timesyncd || eatmydata apt-get --yes --fix-broken install
|
||||
|
||||
# Install the kernel packages
|
||||
echo "deb http://http.re4son-kernel.com/re4son kali-pi main" > /etc/apt/sources.list.d/re4son.list
|
||||
wget -qO /etc/apt/trusted.gpg.d/re4son-repo-key.asc https://re4son-kernel.com/keys/http/archive-key.asc
|
||||
apt-get update
|
||||
apt-get install --yes --allow-change-held-packages -o dpkg::options::=--force-confnew kalipi-kernel kalipi-bootloader kalipi-re4son-firmware kalipi-kernel-headers
|
||||
eatmydata apt-get update
|
||||
eatmydata apt-get install --yes --allow-change-held-packages -o dpkg::options::=--force-confnew kalipi-kernel kalipi-bootloader kalipi-re4son-firmware kalipi-kernel-headers
|
||||
|
||||
apt-get --yes --allow-change-held-packages autoremove
|
||||
eatmydata apt-get --yes --allow-change-held-packages autoremove
|
||||
|
||||
cp -p /bsp/services/all/*.service /etc/systemd/system/
|
||||
cp -p /bsp/services/rpi/*.service /etc/systemd/system/
|
||||
@@ -257,12 +293,17 @@ sed -i -e 's/FONTSIZE=.*/FONTSIZE="6x12"/' /etc/default/console-setup
|
||||
|
||||
# Fix startup time from 5 minutes to 15 secs on raise interface wlan0
|
||||
sed -i 's/^TimeoutStartSec=5min/TimeoutStartSec=15/g' "/usr/lib/systemd/system/networking.service"
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
67
trimslice.sh
67
trimslice.sh
@@ -102,18 +102,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-arm-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -188,9 +224,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
eatmydata apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -210,20 +246,20 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops --autoremove systemd-timesyncd || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade -y \$aptops
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops --autoremove systemd-timesyncd || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade -y \$aptops
|
||||
|
||||
# Install the kernel here. This is due to needing to fake being an arm device for flash-kernel to work properly.
|
||||
cd /root && gcc -Wall -shared -o libfakeuname.so fakeuname.c
|
||||
LD_PRELOAD=/root/libfakeuname.so apt-get install -y \$aptops linux-image-armmp u-boot-tegra
|
||||
LD_PRELOAD=/root/libfakeuname.so eatmydata apt-get install -y \$aptops linux-image-armmp u-boot-tegra
|
||||
rm libfakeuname.so fakeuname.c
|
||||
cd /
|
||||
|
||||
apt-get -y --allow-change-held-packages --purge autoremove
|
||||
eatmydata apt-get -y --allow-change-held-packages --purge autoremove
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -263,12 +299,17 @@ sed -i -e 's/FONTSIZE=.*/FONTSIZE="6x12"/' /etc/default/console-setup
|
||||
|
||||
# Fix startup time from 5 minutes to 15 secs on raise interface wlan0
|
||||
sed -i 's/^TimeoutStartSec=5min/TimeoutStartSec=15/g' "/usr/lib/systemd/system/networking.service"
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
63
usbarmory.sh
63
usbarmory.sh
@@ -99,18 +99,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-arm-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -163,9 +199,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
eatmydata apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -185,13 +221,13 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade -y \$aptops
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade -y \$aptops
|
||||
|
||||
apt-get -y --allow-change-held-packages --purge autoremove
|
||||
eatmydata apt-get -y --allow-change-held-packages --purge autoremove
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -228,12 +264,17 @@ sed -i -e 's/FONTSIZE=.*/FONTSIZE="6x12"/' /etc/default/console-setup
|
||||
|
||||
# Fix startup time from 5 minutes to 15 secs on raise interface wlan0
|
||||
sed -i 's/^TimeoutStartSec=5min/TimeoutStartSec=15/g' "/usr/lib/systemd/system/networking.service"
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
65
utilite.sh
65
utilite.sh
@@ -103,18 +103,54 @@ elif [ "$apt_cacher" = "apt-cacher-ng" ] ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Detect architecture
|
||||
if [[ "${architecture}" == "arm64" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-aarch64-static"
|
||||
lib_arch="aarch64-linux-gnu"
|
||||
elif [[ "${architecture}" == "armhf" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabihf"
|
||||
elif [[ "${architecture}" == "armel" ]]; then
|
||||
qemu_bin="/usr/bin/qemu-arm-static"
|
||||
lib_arch="arm-linux-gnueabi"
|
||||
fi
|
||||
|
||||
# create the rootfs - not much to modify here, except maybe throw in some more packages if you want.
|
||||
debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring \
|
||||
eatmydata debootstrap --foreign --keyring=/usr/share/keyrings/kali-archive-keyring.gpg --include=kali-archive-keyring,eatmydata \
|
||||
--components=${components} --arch ${architecture} ${suite} ${work_dir} http://http.kali.org/kali
|
||||
|
||||
# systemd-nspawn enviroment
|
||||
systemd-nspawn_exec(){
|
||||
qemu_bin=/usr/bin/qemu-arm-static
|
||||
LANG=C systemd-nspawn -q --bind-ro ${qemu_bin} -M ${machine} -D ${work_dir} "$@"
|
||||
}
|
||||
|
||||
# We need to manually extract eatmydata to use it for the second stage.
|
||||
for archive in ${work_dir}/var/cache/apt/archives/*eatmydata*.deb; do
|
||||
dpkg-deb --fsys-tarfile "$archive" > ${work_dir}/eatmydata
|
||||
tar -xkf ${work_dir}/eatmydata -C ${work_dir}
|
||||
rm -f ${work_dir}/eatmydata
|
||||
done
|
||||
|
||||
# Prepare dpkg to use eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --divert /usr/bin/dpkg-eatmydata --rename --add /usr/bin/dpkg
|
||||
|
||||
cat > ${work_dir}/usr/bin/dpkg << EOF
|
||||
#!/bin/sh
|
||||
if [ -e /usr/lib/${lib_arch}/libeatmydata.so ]; then
|
||||
[ -n "\${LD_PRELOAD}" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
fi
|
||||
for so in /usr/lib/${lib_arch}/libeatmydata.so; do
|
||||
[ -n "\$LD_PRELOAD" ] && LD_PRELOAD="\$LD_PRELOAD:"
|
||||
LD_PRELOAD="\$LD_PRELOAD\$so"
|
||||
done
|
||||
export LD_PRELOAD
|
||||
exec "\$0-eatmydata" --force-unsafe-io "\$@"
|
||||
EOF
|
||||
chmod 755 ${work_dir}/usr/bin/dpkg
|
||||
|
||||
# debootstrap second stage
|
||||
systemd-nspawn_exec /debootstrap/debootstrap --second-stage
|
||||
systemd-nspawn_exec eatmydata /debootstrap/debootstrap --second-stage
|
||||
|
||||
cat << EOF > ${work_dir}/etc/apt/sources.list
|
||||
deb ${mirror} ${suite} ${components//,/ }
|
||||
@@ -167,9 +203,9 @@ cat << EOF > ${work_dir}/third-stage
|
||||
#!/bin/bash -e
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get update
|
||||
eatmydata apt-get update
|
||||
|
||||
apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
eatmydata apt-get -y install binutils ca-certificates console-common git initramfs-tools less locales nano u-boot-tools
|
||||
|
||||
# Create kali user with kali password... but first, we need to manually make some groups because they don't yet exist...
|
||||
# This mirrors what we have on a pre-installed VM, until the script works properly to allow end users to set up their own... user.
|
||||
@@ -189,14 +225,14 @@ aptops="--allow-change-held-packages -o dpkg::options::=--force-confnew -o Acqui
|
||||
|
||||
# This looks weird, but we do it twice because every so often, there's a failure to download from the mirror
|
||||
# So to workaround it, we attempt to install them twice.
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${packages} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops ${desktop} ${extras} ${tools} || apt-get --yes --fix-broken install
|
||||
apt-get install -y \$aptops --autoremove systemd-timesyncd || apt-get --yes --fix-broken install
|
||||
apt-get dist-upgrade -y \$aptops
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${packages} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops ${desktop} ${extras} ${tools} || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get install -y \$aptops --autoremove systemd-timesyncd || eatmydata apt-get --yes --fix-broken install
|
||||
eatmydata apt-get dist-upgrade -y \$aptops
|
||||
|
||||
apt-get -y --allow-change-held-packages --purge autoremove
|
||||
eatmydata apt-get -y --allow-change-held-packages --purge autoremove
|
||||
|
||||
# Linux console/Keyboard configuration
|
||||
echo 'console-common console-data/keymap/policy select Select keymap from full list' | debconf-set-selections
|
||||
@@ -233,12 +269,17 @@ sed -i -e 's/FONTSIZE=.*/FONTSIZE="6x12"/' /etc/default/console-setup
|
||||
|
||||
# Fix startup time from 5 minutes to 15 secs on raise interface wlan0
|
||||
sed -i 's/^TimeoutStartSec=5min/TimeoutStartSec=15/g' "/usr/lib/systemd/system/networking.service"
|
||||
|
||||
rm -f /usr/bin/dpkg
|
||||
EOF
|
||||
|
||||
# Run third stage
|
||||
chmod 755 ${work_dir}/third-stage
|
||||
systemd-nspawn_exec /third-stage
|
||||
|
||||
# Clean up eatmydata
|
||||
systemd-nspawn_exec dpkg-divert --remove --rename /usr/bin/dpkg
|
||||
|
||||
# Clean system
|
||||
systemd-nspawn_exec << EOF
|
||||
rm -f /0
|
||||
|
||||
Reference in New Issue
Block a user