# 定制Raspberry Pi鏡像
本文針對開發者描述何如創建一個**定制的Raspberry Pi ARM版Kali Linux鏡像**的方法.如果你只是想安裝Kali鏡像,請查閱我們的文章[“安裝Kali Linux ARM版到Raspberry Pi”](http://cn.docs.kali.org/general-use/%e5%ae%89%e8%a3%85kali-linux-arm%e7%89%88%e6%9c%ac%e5%88%b0raspberry-pi "Kali on Raspberry Pi").
### 01\. 創建Kali rootfs
創建一個**armel**架構的如Kali文檔中所述的[Kali rootfs](http://cn.docs.kali.org/development-cn/%e5%87%86%e5%a4%87kali-linux-arm-chroot "Kali ARM rootfs").最后生成的rootfs將位于**~/arm-stuff/rootfs/kali-armel**目錄.
### 02\. 創建鏡像文件
然后,我們創建用于存放我們Raspberry Pi rootfs和boot鏡像的物理鏡像文件.
```
apt-get install kpartx xz-utils sharutils
cd ~
mkdir -p arm-stuff
cd arm-stuff/
mkdir -p images
cd images
dd if=/dev/zero of=kali-custom-rpi.img bs=1MB count=5000
```
### 03\. 分區并掛載鏡像文件
```
parted kali-custom-rpi.img --script -- mklabel msdos
parted kali-custom-rpi.img --script -- mkpart primary fat32 0 64
parted kali-custom-rpi.img --script -- mkpart primary ext4 64 -1
```
```
loopdevice=`losetup -f --show kali-custom-rpi.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 $bootp
mkfs.ext4 $rootp
mkdir -p root
mkdir -p boot
mount $rootp root
mount $bootp boot
```
### 04\. 復制和修改Kali rootfs
```
rsync -HPavz /root/arm-stuff/rootfs/kali-armel/ root
echo nameserver 8.8.8.8 > root/etc/resolv.conf
```
### 05\. 編譯Raspberry Pi內核和模塊
如果你不是以ARM硬件作為開發環境,需要搭建[ARM交叉編譯環境](http://cn.docs.kali.org/development-cn/arm%e4%ba%a4%e5%8f%89%e7%bc%96%e8%af%91 "ARM Cross Compilation")來編譯ARM內核和模塊.完成后,執行如下命令.
```
cd ~/arm-stuff
mkdir -p kernel
cd kernel
git clone https://github.com/raspberrypi/tools.git
git clone https://github.com/raspberrypi/linux.git raspberrypi
cd raspberrypi
export ARCH=arm
export CROSS_COMPILE=~/arm-stuff/kernel/toolchains/arm-eabi-linaro-4.6.2/bin/arm-eabi-
make bcmrpi_cutdown_defconfig
# configure your kernel !
make menuconfig
make -j$(cat /proc/cpuinfo|grep processor|wc -l)
make modules_install INSTALL_MOD_PATH=~/arm-stuff/images/root
cd ../tools/mkimage/
python imagetool-uncompressed.py ../../raspberrypi/arch/arm/boot/Image
```
```
cd ~/arm-stuff/images
git clone git://github.com/raspberrypi/firmware.git rpi-firmware
cp -rf rpi-firmware/boot/* boot/
rm -rf rpi-firmware
cp ~/arm-stuff/kernel/tools/mkimage/kernel.img boot/
echo "dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait" > boot/cmdline.txt
```
```
umount $rootp
umount $bootp
kpartx -dv $loopdevice
losetup -d $loopdevice
```
使用**dd**工具克隆這個文件到你的SD卡.在本例中,我們假設存儲設備在/dev/sdb.**請按需修改**.
```
dd if=kali-pi.img of=/dev/sdb bs=1M
```
dd操作完成后,卸載并彈出SD卡.然后啟動進入到Kali Linux
- 00. Kali Linux介紹
- Kali Linux默認密碼
- 01. 下載Kali Linux
- 封裝定制的Kali Live ISO
- 用Live U盤安裝Kali Linux
- 02. 制作定制的Kali鏡象
- 03. 安裝Kali Linux
- 無線驅動疑難排解
- 用Mini ISO通過網絡安裝Kali Linux
- 通過網絡PXE安裝Kali Linux
- 加密安裝Kali Linux
- Kali和Windows雙引導
- 硬盤安裝Kali Linux
- 04. 通過網絡安裝Kali Linux
- 05. Kali Linux常見問題
- Virtual Box的Kali Linux虛擬機
- 運行 Metasploit Framework
- Kali虛擬機安裝VMware Tools
- Kali Linux電子取證模式
- 06. Kali Linux ARM文檔
- 在MK/SS808上安裝Kali ARM
- 在三星Chromebook安裝Kali
- 07. Kali Linux開發
- 定制Raspberry Pi鏡像
- 定制Chromebook鏡像
- 封裝定制的Kali Live ISO
- 定制Kali的桌面系統
- 重新編譯Kali Linux內核
- 從源代碼編譯包
- ARM交叉編譯
- 準備Kali Linux ARM chroot
- 08. Kali Linux疑難排解
- 09. Kali 社區支持
- 給Kali提交問題
- Kali Linux官方鏡像
- Kali Linux官方網站
- Kali Linux漏洞追蹤
- 10. Kali Linux 策略
- Kali Linux安全更新策略
- Kali Linux網絡服務策略
- Kali Linux Root用戶策略
- 滲透測試工具策略
- Kali Linux開源軟件策略
- Kali Linux商標策略
- Kali和Debian的關系