While we don't release an rpi2 specific build, there are still people out there that build their own because they don't want to use Nexmon. This updates the rpi2 script to keep up with the changes for the rpi3 while leaving out nexmon/rpi3 bluetooth bits. Also update chmod because we don't need it.
272 lines
8.8 KiB
Bash
Executable File
272 lines
8.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
if [[ $EUID -ne 0 ]]; then
|
|
echo "This script must be run as root"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ $# -eq 0 ]] ; then
|
|
echo "Please pass version number, e.g. $0 1.0.1"
|
|
exit 0
|
|
fi
|
|
|
|
basedir=`pwd`/luna-$1
|
|
|
|
# Package installations for various sections.
|
|
# This will build a minimal XFCE Kali system with the top 10 tools.
|
|
# This is the section to edit if you would like to add more packages.
|
|
# See http://www.kali.org/news/kali-linux-metapackages/ for meta packages you
|
|
# can use. You can also install packages, using just the package name, but keep
|
|
# in mind that not all packages work on ARM! If you specify one of those, the
|
|
# script will throw an error, but will still continue on, and create an unusable
|
|
# image, keep that in mind.
|
|
|
|
arm="abootimg cgpt fake-hwclock ntpdate vboot-utils vboot-kernel-utils u-boot-tools"
|
|
base="kali-menu kali-defaults initramfs-tools usbutils"
|
|
desktop="xfce4 network-manager network-manager-gnome ntpdate xserver-xorg-video-fbdev"
|
|
tools="passing-the-hash winexe aircrack-ng hydra john sqlmap wireshark libnfc-bin mfoc"
|
|
services="openssh-server apache2"
|
|
extras="iceweasel wpasupplicant"
|
|
|
|
export packages="${arm} ${base} ${desktop} ${tools} ${services} ${extras}"
|
|
export architecture="armhf"
|
|
# If you have your own preferred mirrors, set them here.
|
|
# After generating the rootfs, we set the sources.list to the default settings.
|
|
mirror=http.kali.org
|
|
|
|
# Set this to use an http proxy, like apt-cacher-ng, and uncomment further down
|
|
# to unset it.
|
|
#export http_proxy="http://localhost:3142/"
|
|
|
|
mkdir -p ${basedir}
|
|
cd ${basedir}
|
|
|
|
# create the rootfs - not much to modify here, except maybe the hostname.
|
|
debootstrap --foreign --arch $architecture kali-rolling kali-$architecture http://$mirror/kali
|
|
|
|
cp /usr/bin/qemu-arm-static kali-$architecture/usr/bin/
|
|
|
|
LANG=C systemd-nspawn -M luna -D kali-$architecture /debootstrap/debootstrap --second-stage
|
|
cat << EOF > kali-$architecture/etc/apt/sources.list
|
|
deb http://$mirror/kali kali-rolling main contrib non-free
|
|
EOF
|
|
echo "kali" > kali-$architecture/etc/hostname
|
|
cat << EOF > kali-$architecture/etc/hosts
|
|
127.0.0.1 kali localhost
|
|
::1 localhost ip6-localhost ip6-loopback
|
|
fe00::0 ip6-localnet
|
|
ff00::0 ip6-mcastprefix
|
|
ff02::1 ip6-allnodes
|
|
ff02::2 ip6-allrouters
|
|
EOF
|
|
|
|
cat << EOF > kali-$architecture/etc/network/interfaces
|
|
auto lo
|
|
iface lo inet loopback
|
|
|
|
auto eth0
|
|
iface eth0 inet dhcp
|
|
|
|
iface usb0 inet static
|
|
address 192.168.7.2
|
|
netmask 255.255.255.0
|
|
network 192.168.7.0
|
|
gateway 192.168.7.1
|
|
EOF
|
|
|
|
cat << EOF > kali-$architecture/etc/resolv.conf
|
|
nameserver 8.8.8.8
|
|
EOF
|
|
|
|
export MALLOC_CHECK_=0 # workaround for LP: #520465
|
|
export LC_ALL=C
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
|
|
#mount -t proc proc kali-$architecture/proc
|
|
#mount -o bind /dev/ kali-$architecture/dev/
|
|
#mount -o bind /dev/pts kali-$architecture/dev/pts
|
|
|
|
cat << EOF > kali-$architecture/debconf.set
|
|
console-common console-data/keymap/policy select Select keymap from full list
|
|
console-common console-data/keymap/full select en-latin1-nodeadkeys
|
|
EOF
|
|
|
|
cat << EOF > kali-$architecture/third-stage
|
|
#!/bin/bash
|
|
dpkg-divert --add --local --divert /usr/sbin/invoke-rc.d.chroot --rename /usr/sbin/invoke-rc.d
|
|
cp /bin/true /usr/sbin/invoke-rc.d
|
|
echo -e "#!/bin/sh\nexit 101" > /usr/sbin/policy-rc.d
|
|
chmod 755 /usr/sbin/policy-rc.d
|
|
|
|
apt-get update
|
|
apt-get install --yes --allow-change-held-packages locales-all
|
|
|
|
debconf-set-selections /debconf.set
|
|
rm -f /debconf.set
|
|
apt-get update
|
|
apt-get -y install git-core binutils ca-certificates initramfs-tools uboot-mkimage
|
|
apt-get -y install locales console-common less nano git
|
|
echo "root:toor" | chpasswd
|
|
sed -i -e 's/KERNEL\!=\"eth\*|/KERNEL\!=\"/' /lib/udev/rules.d/75-persistent-net-generator.rules
|
|
rm -f /etc/udev/rules.d/70-persistent-net.rules
|
|
apt-get --yes --allow-change-held-packages install $packages
|
|
if [ $? > 0 ];
|
|
then
|
|
apt-get --yes --allow-change-held-packages --fix-broken install
|
|
fi
|
|
rm -f /usr/sbin/policy-rc.d
|
|
rm -f /usr/sbin/invoke-rc.d
|
|
dpkg-divert --remove --rename /usr/sbin/invoke-rc.d
|
|
|
|
rm -f /third-stage
|
|
EOF
|
|
|
|
chmod 755 kali-$architecture/third-stage
|
|
LANG=C systemd-nspawn -M luna -D kali-$architecture /third-stage
|
|
|
|
cat << EOF > kali-$architecture/cleanup
|
|
#!/bin/bash
|
|
rm -rf /root/.bash_history
|
|
apt-get update
|
|
apt-get clean
|
|
rm -f /0
|
|
rm -f /hs_err*
|
|
rm -f cleanup
|
|
rm -f /usr/bin/qemu*
|
|
EOF
|
|
|
|
chmod 755 kali-$architecture/cleanup
|
|
LANG=C systemd-nspawn -M luna -D kali-$architecture /cleanup
|
|
|
|
#umount kali-$architecture/proc/sys/fs/binfmt_misc
|
|
#umount kali-$architecture/dev/pts
|
|
#umount kali-$architecture/dev/
|
|
#umount kali-$architecture/proc
|
|
|
|
# Create the disk and partition it
|
|
echo "Creating image file for LUNA"
|
|
dd if=/dev/zero of=${basedir}/kali-linux-$1-luna.img bs=1M count=7000
|
|
parted kali-linux-$1-luna.img --script -- mklabel msdos
|
|
parted kali-linux-$1-luna.img --script -- mkpart primary fat32 2048s 264191s
|
|
parted kali-linux-$1-luna.img --script -- mkpart primary ext4 264192s 100%
|
|
|
|
# Set the partition variables
|
|
loopdevice=`losetup -f --show ${basedir}/kali-linux-$1-luna.img`
|
|
device=`kpartx -va $loopdevice| sed -E 's/.*(loop[0-9])p.*/\1/g' | head -1`
|
|
sleep 5
|
|
device="/dev/mapper/${device}"
|
|
bootp=${device}p1
|
|
rootp=${device}p2
|
|
|
|
# Create file systems
|
|
mkfs.vfat -F 16 $bootp
|
|
mkfs.ext4 -O ^flex_bg -O ^metadata_csum $rootp
|
|
|
|
# Create the dirs for the partitions and mount them
|
|
mkdir -p ${basedir}/bootp ${basedir}/root
|
|
mount $bootp ${basedir}/bootp
|
|
mount $rootp ${basedir}/root
|
|
|
|
echo "Rsyncing rootfs into image file"
|
|
rsync -HPavz -q ${basedir}/kali-$architecture/ ${basedir}/root/
|
|
|
|
# Enable serial console on ttyO0
|
|
echo 'T1:12345:respawn:/sbin/agetty 115200 ttyO0 vt100' >> ${basedir}/root/etc/inittab
|
|
|
|
cat << EOF >> ${basedir}/root/etc/udev/links.conf
|
|
M ttyO0 c 5 1
|
|
EOF
|
|
|
|
cat << EOF >> ${basedir}/root/etc/securetty
|
|
ttyO0
|
|
EOF
|
|
|
|
cat << EOF > ${basedir}/root/etc/apt/sources.list
|
|
deb http://http.kali.org/kali kali-rolling main non-free contrib
|
|
deb-src http://http.kali.org/kali kali-rolling main non-free contrib
|
|
EOF
|
|
|
|
# Uncomment this if you use apt-cacher-ng or else git clones will fail.
|
|
#unset http_proxy
|
|
|
|
# Get, compile and install kernel
|
|
git clone --depth 1 https://github.com/steev/luna-kernel kernel
|
|
cd ${basedir}/kernel
|
|
patch -p1 --no-backup-if-mismatch < ${basedir}/../patches/mac80211.patch
|
|
export ARCH=arm
|
|
export CROSS_COMPILE=arm-linux-gnueabihf-
|
|
cp ${basedir}/../kernel-configs/luna.config .config
|
|
make -j $(grep -c processor /proc/cpuinfo)
|
|
cp arch/arm/boot/zImage ${basedir}/bootp/
|
|
cp arch/arm/boot/dts/am335x-*luna*.dtb ${basedir}/bootp/
|
|
cd ${basedir}
|
|
|
|
cat << EOF > ${basedir}/root/etc/fstab
|
|
/dev/mmcblk0p2 / auto errors=remount-ro 0 1
|
|
/dev/mmcblk0p1 /boot auto defaults 0 0
|
|
EOF
|
|
|
|
rm -rf ${basedir}/root/lib/firmware
|
|
cd ${basedir}/root/lib
|
|
git clone https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git firmware
|
|
rm -rf ${basedir}/root/lib/firmware/.git
|
|
cd ${basedir}
|
|
|
|
# Fix up the symlink for building external modules
|
|
# kernver is used so we don't need to keep track of what the current compiled
|
|
# version is
|
|
kernver=$(ls ${basedir}/root/lib/modules/)
|
|
cd ${basedir}/root/lib/modules/$kernver
|
|
rm build
|
|
rm source
|
|
ln -s /usr/src/kernel build
|
|
ln -s /usr/src/kernel source
|
|
cd ${basedir}
|
|
|
|
#u-boot LUNA specific overrides:
|
|
cat << EOF > ${basedir}/bootp/uEnv.txt
|
|
fdtfile=am335x-luna.dtb
|
|
kernel_file=zImage
|
|
initrd_file=uInitrd
|
|
|
|
loadzimage=load mmc \${mmcdev}:\${mmcpart} \${loadaddr} \${kernel_file}
|
|
loadinitrd=load mmc \${mmcdev}:\${mmcpart} 0x81000000 \${initrd_file}; setenv initrd_size \${filesize}
|
|
loadfdt=load mmc \${mmcdev}:\${mmcpart} \${fdtaddr} /dtbs/\${fdtfile}
|
|
|
|
console=ttyO0,115200n8
|
|
mmcroot=/dev/mmcblk0p2 ro
|
|
mmcrootfstype=ext4 rootwait fixrtc net.ifnames=0
|
|
mmcargs=setenv bootargs console=\${console} root=\${mmcroot} rootfstype=\${mmcrootfstype} \${optargs}
|
|
|
|
#zImage:
|
|
uenvcmd=run loadzimage; run loadfdt; run mmcargs; bootz \${loadaddr} - \${fdtaddr}
|
|
EOF
|
|
|
|
sed -i -e 's/^#PermitRootLogin.*/PermitRootLogin yes/' ${basedir}/root/etc/ssh/sshd_config
|
|
|
|
# Unmount partitions
|
|
umount $bootp
|
|
umount $rootp
|
|
kpartx -dv $loopdevice
|
|
losetup -d $loopdevice
|
|
|
|
# Clean up all the temporary build stuff and remove the directories.
|
|
# Comment this out to keep things around if you want to see what may have gone
|
|
# wrong.
|
|
echo "Removing temporary build files"
|
|
rm -rf ${basedir}/bootp ${basedir}/root ${basedir}/kali-$architecture ${basedir}/patches ${basedir}/kernel
|
|
|
|
# If you're building an image for yourself, comment all of this out, as you
|
|
# don't need the sha256sum or to compress the image, since you will be testing it
|
|
# soon.
|
|
echo "Generating sha256sum for kali-linux-$1-luna.img"
|
|
sha256sum kali-linux-$1-luna.img > ${basedir}/kali-linux-$1-luna.img.sha256sum
|
|
# Don't pixz on 32bit, there isn't enough memory to compress the images.
|
|
MACHINE_TYPE=`uname -m`
|
|
if [ ${MACHINE_TYPE} == 'x86_64' ]; then
|
|
echo "Compressing kali-linux-$1-luna.img"
|
|
pixz ${basedir}/kali-linux-$1-luna.img
|
|
echo "Generating sha256sum for kali-linux-$1-luna.img.xz"
|
|
sha256sum kali-linux-$1-luna.img.xz > ${basedir}/kali-linux-$1-luna.img.xz.sha256sum
|
|
fi
|