以下文档描述了我们自己的创建自定义Kali Linux Beaglebone Black ARM映像的方法,并且针对开发人员。如果您想安装预制的Kali映像,请查看我们在Beaglebone Black上安装Kali的文章。
您需要具有root用户特权才能执行此过程,或者需要具有使用命令“ sudo su”升级特权的功能。
01.创建一个Kali rootfs
使用armhf架构,按照我们的Kali文档中的描述构建Kali rootfs。在此过程结束时,你应该在 ~/arm-stuff/rootfs/kali-armhf 中有一个填充的 rootfs 目录。
02.创建图像文件
接下来,我们创建物理映像文件,该文件将保存我们的Beaglebone Black rootfs和启动映像。
apt install -y kpartx xz-utils sharutils
cd ~/
mkdir -p arm-stuff/images/
cd arm-stuff/images/
dd if=/dev/zero of=kali-custom-bbb.img bs=4M count=7000
03.分区并挂载映像文件
parted --script kali-custom-bbb.img mklabel msdos
fdisk kali-custom-bbb.img << __EOF__
n
p
1
+64M
t
e
p
w
__EOF__
parted --script kali-custom-bbb.img set 1 boot on
fdisk kali-custom-bbb.img << __EOF__
n
p
2
w
__EOF__
loopdevice=`losetup -f --show kali-custom-bbb.img`
device=`kpartx -va $loopdevice| sed -E ‘s/.*(loop[0-9])p.*/\1/g‘ | head -1`
device="/dev/mapper/${device}"
bootp=${device}p1
rootp=${device}p2
mkfs.vfat -F 16 $bootp -n boot
mkfs.ext4 $rootp -L kaliroot
mkdir -p boot
mkdir -p root
mount $bootp boot
mount $rootp root
04.复制和修改Kali rootfs
rsync -HPavz /root/arm-stuff/rootfs/kali-armhf/ root
echo nameserver 8.8.8.8 > root/etc/resolv.conf
05.编译Beaglebone Black内核和模块
如果您不使用ARM硬件作为开发环境,则需要设置一个ARM交叉编译环境来构建ARM内核和模块。完成后,请按照以下说明进行操作。
cd ~/arm-stuff/
wget https://launchpad.net/linaro-toolchain-binaries/trunk/2013.03/+download/gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux.tar.bz2
tar -xjf gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux.tar.bz2
export CC=`pwd`/gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux/bin/arm-linux-gnueabihf-
git clone git://git.denx.de/u-boot.git
cd u-boot/
git checkout v2013.04 -b beaglebone-black
wget https://raw.github.com/eewiki/u-boot-patches/master/v2013.04/0001-am335x_evm-uEnv.txt-bootz-n-fixes.patch
patch -p1 < 0001-am335x_evm-uEnv.txt-bootz-n-fixes.patch
make ARCH=arm CROSS_COMPILE=${CC} distclean
make ARCH=arm CROSS_COMPILE=${CC} am335x_evm_config
make ARCH=arm CROSS_COMPILE=${CC}
cd ../
mkdir -p kernel/
cd kernel/
git clone git://github.com/RobertCNelson/linux-dev.git
cd linux-dev/
git checkout origin/am33x-v3.8 -b tmp
./build_kernel.sh
mkdir -p ../patches/
wget http://patches.aircrack-ng.org/mac80211.compat08082009.wl_frag+ack_v1.patch -O ../patches/mac80211.patch
cd KERNEL/
patch -p1 --no-backup-if-mismatch < ../../patches/mac80211.patch
cd ../
./tools/rebuild.sh
cd ../
cat <<EOF > boot/uEnv.txt
mmcroot=/dev/mmcblk0p2 ro
mmcrootfstype=ext4 rootwait fixrtc
uenvcmd=run loaduimage; run loadfdt; run mmcargs; bootz 0x80200000 - 0x80F80000
EOF
cp -v kernel/linux-dev/deploy/3.8.13-bone20.zImage boot/zImage
mkdir -p boot/dtbs
tar -xovf kernel/linux-dev/deploy/3.8.13-bone20-dtbs.tar.gz -C boot/dtbs/
tar -xovf kernel/linux-dev/deploy/3.8.13-bone20-modules.tar.gz -C root/
tar -xovf kernel/linux-dev/deploy/3.8.13-bone20-firmware.tar.gz -C root/lib/firmware/
cat <<EOF > root/etc/fstab
/dev/mmcblk0p2 / auto errors=remount-ro 0 1
/dev/mmcblk0p1 /boot/uboot auto defaults 0 0
EOF
umount $rootp
kpartx -dv $loopdevice
losetup -d $loopdevice
使用dd命令将此文件镜像到SD卡。在我们的示例中,我们假设存储设备位于/dev/sdb
。根据需要更改它。
dd if=kali-custom-bbb.img of=/dev/sdb bs=4M
dd操作完成后,卸载并弹出SD卡,然后将Beaglebone Black引导到Kali Linux中。引导时,您需要按住“ BOOT”按钮,它是离microSD卡最近的一个按钮。