tl; dr: ํ๋ก๊ทธ๋จ์์ ARM ์ปดํจํฐ์ฉ Kali Linux ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ ์์ต๋๋ค. debootstrap
, linux
ะธ u-boot
.
๊ทธ๋ค์ง ์ธ๊ธฐ๊ฐ ์๋ ๋จ์ผ ์ง๋ถ ์ ํ์ ๊ตฌ์
ํ ๊ฒฝ์ฐ ์ข์ํ๋ ๋ฐฐํฌ ํคํธ์ ์ด๋ฏธ์ง๊ฐ ๋ถ์กฑํ ์ ์์ต๋๋ค. ๊ฑฐ์ ๊ฐ์ ์ผ์ด ์ผ์ด๋ฌ์ต๋๋ค.
๋ค์ด๋ก๋ ํ๋ก์ธ์ค๋ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค.
- ํ๋์จ์ด๊ฐ ์ด๊ธฐํ๋ฉ๋๋ค.
- ์ ์ฅ ์ฅ์น(SD โโ์นด๋/eMMC ๋ฑ)์ ์ผ๋ถ ์์ญ์์ ๋ถํธ๋ก๋๋ฅผ ์ฝ๊ณ ์คํํฉ๋๋ค.
- ๋ก๋๋ ์ด์ ์ฒด์ ์ ์ปค๋์ ์ฐพ์ ์ผ๋ถ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ก๋ํ๊ณ ์คํํฉ๋๋ค.
- ์ปค๋์ ๋๋จธ์ง OS๋ฅผ ๋ก๋ํฉ๋๋ค.
๋ด ์์
์๋ ์ด ์์ค์ ์ธ๋ถ ์ ๋ณด๋ก ์ถฉ๋ถํฉ๋๋ค. ์ธ๋ถ ์ ๋ณด๋ฅผ ์ฝ์ ์ ์์ต๋๋ค.
๋ฃจํธ ํ์ผ ์์คํ ๊ตฌ์ถ
๋จผ์ ์น์
์ ์ค๋นํด์ผ ํฉ๋๋ค. Das U-Boot๋ ๋ค์ํ ํ์ผ ์์คํ
์ ์ง์ํ๋ฏ๋ก FAT32๋ฅผ ์ ํํ์ต๋๋ค. /boot
๋ฃจํธ์ ๊ฒฝ์ฐ ext3์ด๋ฉฐ ์ด๋ ARM์์ Kali์ ํ์ค ์ด๋ฏธ์ง ๋งํฌ์
์
๋๋ค. ๋๋ GNU Parted๋ฅผ ์ฌ์ฉํ ๊ฒ์ด์ง๋ง, ๊ฐ์ ๊ฒ์ ๋ ์น์ํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. fdisk
. ๋น์ ์ ๋ํ ํ์ํฉ๋๋ค dosfstools
ะธ e2fsprogs
ํ์ผ ์์คํ
์ ์์ฑํ๋ ค๋ฉด: apt install parted dosfstools e2fsprogs
.
SD ์นด๋ ํํฐ์ :
- MBR ํํฐ์
๋์ ์ฌ์ฉํ๋๋ก SD ์นด๋๋ฅผ ํ์ํฉ๋๋ค.
parted -s /dev/mmcblk0 mklabel msdos
- ๋ค์์ ๋ํ ์น์
๋ง๋ค๊ธฐ
/boot
128MB์ ๊ฒฝ์ฐ:parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB
. ์ฒซ ๋ฒ์งธ ๋๋ฝ๋ ๋ฉ๊ฐ๋ฐ์ดํธ๋ ๋งํฌ์ ์์ฒด์ ๋ถํธ๋ก๋๋ฅผ ์ํด ๋จ๊ฒจ๋์ด์ผ ํฉ๋๋ค. - ๋๋จธ์ง ์ฉ๋์ ๋ํ ๋ฃจํธ FS๋ฅผ ๋ง๋ญ๋๋ค.
parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
- ๊ฐ์๊ธฐ ํํฐ์ ํ์ผ์ ์์ฑํ๊ฑฐ๋ ๋ณ๊ฒฝํ์ง ์์ ๊ฒฝ์ฐ `partprobe`๋ฅผ ์คํํด์ผ ํํฐ์ ํ ์ด๋ธ์ ๋ค์ ์ฝ์ ์ ์์ต๋๋ค.
- ๋ ์ด๋ธ์ด ์ง์ ๋ ๋ถํ
ํํฐ์
ํ์ผ ์์คํ
์ ๋ง๋ญ๋๋ค.
BOOT
:mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
- ๋ ์ด๋ธ์ด ์๋ ๋ฃจํธ ํ์ผ ์์คํ
์์ฑ
ROOTFS
:mkfs.ext3 -L ROOTFS /dev/mmcblk0p2
์ข์ต๋๋ค. ์ด์ ์ฑ์ธ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์ถ๊ฐ๋ก ์๊ตฌํ ๊ฒ์
๋๋ค debootstrap
, ๋ฐ๋น์๊ณผ ๊ฐ์ ์ด์ ์ฒด์ ์์ ๋ฃจํธ FS๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ ํธ๋ฆฌํฐ: apt install debootstrap
.
์ฐ๋ฆฌ๋ FS๋ฅผ ์์งํฉ๋๋ค:
- ํํฐ์
์ ๋ง์ดํธ
/mnt/
(๋ ํธ๋ฆฌํ ๋ง์ดํธ ์ง์ ์ ์ฌ์ฉํ์ญ์์ค):mount /dev/mmcblk0p2 /mnt
- ์ค์ ๋ก ์ฐ๋ฆฌ๋ ํ์ผ ์์คํ
์ ์ฑ์๋๋ค.
debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling /mnt/ http://http.kali.org/kali
. ๋ชจ์--include
์ผ๋ถ ํจํค์ง๋ฅผ ์ถ๊ฐ๋ก ์ค์นํ๋๋ก ์ง์ ํ๋๋ฐ ์ ์ ์ผ๋ก ๋น๋๋ QEMU ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์ง์ ํ์ต๋๋ค. ์ํํ ์ ์์ต๋๋ค.chroot
ARM ํ๊ฒฝ์. ๋ค๋ฅธ ์ต์ ์ ์๋ฏธ๋ ๋ค์์์ ์ฐพ์ ์ ์์ต๋๋ค.man debootstrap
. ๋ชจ๋ ARM ๋ณด๋๊ฐ ์ํคํ ์ฒ๋ฅผ ์ง์ํ๋ ๊ฒ์ ์๋๋ผ๋ ์ ์ ์์ง ๋ง์ญ์์ค.armhf
. - ์ํคํ
์ฒ์ ์ฐจ์ด๋ก ์ธํด
debootstrap
๋ ๋จ๊ณ๋ก ์ํ๋๋ฉฐ ๋ ๋ฒ์งธ ๋จ๊ณ๋ ๋ค์๊ณผ ๊ฐ์ด ์ํ๋ฉ๋๋ค.chroot /mnt/ /debootstrap/debootstrap --second-stage
- ์ด์ ํ์ ํด์ผ ํฉ๋๋ค.
chroot /mnt /bin/bash
- ์์ฑ
/etc/hosts
ะธ/etc/hostname
๋์ FS. ๋ก์ปฌ ์ปดํจํฐ์ ๋ด์ฉ๊ณผ ๋์ผํ๊ฒ ์ ๋ ฅํ๊ณ ํธ์คํธ ์ด๋ฆ๋ง ๋ฐ๊พธ์ญ์์ค. - ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ ์ฌ์ฉ์ ์ ์ํ ์ ์์ต๋๋ค. ํนํ ๋ด๊ฐ ์ค์นํ๋
locales
(์ ์ฅ์ ํค), ๋ก์ผ์ผ ๋ฐ ์๊ฐ๋ ์ฌ๊ตฌ์ฑ(dpkg-reconfigure locales tzdata
). ๋ช ๋ น์ผ๋ก ์ํธ๋ฅผ ์ค์ ํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค.passwd
. - ๋น๋ฐ๋ฒํธ ์ค์
root
ํpasswd
. - ๋๋ฅผ์ํ ์ด๋ฏธ์ง ์ค๋น๋ ์ฑ์ฐ๊ธฐ๋ก ์๋ฃ๋ฉ๋๋ค.
/etc/fstab
์ด๋ด/mnt/
.
์์ ์์ฑํ ํ๊ทธ์ ๋ง์ถฐ ์ ๋ก๋ํ ์์ ์ด๋ฏ๋ก ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
LABEL=ROOTFS / ์๋ ์ค๋ฅ=remount-ro 0 1
LABEL=BOOT /๋ถํ ์๋ ๊ธฐ๋ณธ๊ฐ 0 0
๋ง์ง๋ง์ผ๋ก ๋ถํธ ํํฐ์ ์ ๋ง์ดํธํ ์ ์์ต๋๋ค. ์ปค๋์ ํ์ํฉ๋๋ค: `mount /dev/mmcblk0p1 /mnt/boot/`
๋ฆฌ๋ ์ค ๊ตฌ์ถ
๋ฐ๋น์ ํ
์คํธ์์ ์ปค๋(๊ทธ๋ฆฌ๊ณ ๋ถํธ๋ก๋)์ ๋น๋ํ๋ ค๋ฉด ๋์ ์ํคํ
์ฒ์ ๋ํ GCC, GNU Make ๋ฐ GNU C ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํค๋ ํ์ผ์ ํ์ค ์ธํธ๋ฅผ ์ค์นํด์ผ ํฉ๋๋ค. armhf
), OpenSSL ํค๋, ์ฝ์ ๊ณ์ฐ๊ธฐ bc
, bison
ะธ flex
: apt install crossbuild-essential-armhf bison flex libssl-dev bc
. ๊ธฐ๋ณธ ๋ก๋๋ ํ์ผ์ ์ฐพ๊ธฐ ๋๋ฌธ์ zImage
๋ถํ
ํํฐ์
์ ํ์ผ ์์คํ
์์ ํ๋์ ๋๋ผ์ด๋ธ๋ฅผ ๊นฐ ์๊ฐ์
๋๋ค.
- ์ปค๋์ ๋ณต์ ํ๋ ๊ฒ์ ๋๋ฌด ๊ธธ๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฅ ๋ค์ด๋ก๋ํ๊ฒ ์ต๋๋ค:
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz
. ์์ถ์ ํ๊ณ ์์ค ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํฉ๋๋ค.tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
- ์ปดํ์ผํ๊ธฐ ์ ์ ๊ตฌ์ฑ:
make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig
. ๊ตฌ์ฑ์ ๋๋ ํ ๋ฆฌ์ ์์ต๋๋ค.arch/arm/configs/
. ์๋ ๊ฒฝ์ฐ ๊ธฐ์ฑํ์ ์ฐพ์์ ๋ค์ด๋ก๋ํ๊ณ ์ด ๋๋ ํ ๋ฆฌ์ ํ์ผ ์ด๋ฆ์ ๋งค๊ฐ๋ณ์์ ์ ๋ฌํ ์ ์์ต๋๋ค.KBUILD_DEFCONFIG
. ๊ทน๋จ์ ์ธ ๊ฒฝ์ฐ์๋ ์ฆ์ ๋ค์ ๋จ๋ฝ์ผ๋ก ์งํํ์ญ์์ค. - ์ ํ์ ์ผ๋ก ์ค์ ์ ์กฐ์ ํ ์ ์์ต๋๋ค.
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
- ๊ทธ๋ฆฌ๊ณ ์ด๋ฏธ์ง๋ฅผ ํฌ๋ก์ค ์ปดํ์ผํฉ๋๋ค.
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
- ์ด์ ์ปค๋ ํ์ผ์ ๋ณต์ฌํ ์ ์์ต๋๋ค.
cp arch/arm/boot/zImage /mnt/boot/
- ๊ทธ๋ฆฌ๊ณ DeviceTree์ ํ์ผ(๋ณด๋์์ ์ฌ์ฉ ๊ฐ๋ฅํ ํ๋์จ์ด ์ค๋ช
):
cp arch/arm/boot/dts/*.dtb /mnt/boot/
- ๊ทธ๋ฆฌ๊ณ ๋ณ๋์ ํ์ผ๋ก ์ด์
๋ธ๋ ๋ชจ๋์ ์ค์นํฉ๋๋ค.
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install
์ปค๋์ด ์ค๋น๋์์ต๋๋ค. ๋ชจ๋ ๊ฒ์ ๋ง์ดํธ ํด์ ํ ์ ์์ต๋๋ค. umount /mnt/boot/ /mnt/
๋ค์ค์ ๋ถํธ
๋ถํธ๋ก๋๋ ๋ํ์์ด๋ฏ๋ก ๋ณด๋ ์์ฒด, ์ ์ฅ ์ฅ์น ๋ฐ ์ ํ ์ฌ์์ธ USB-UART ์ฅ์น๋ง์ผ๋ก๋ ์๋์ ํ ์คํธํ๊ธฐ์ ์ถฉ๋ถํฉ๋๋ค. ์ฆ, ๋์ค์ ์ปค๋๊ณผ OS๋ฅผ ์ฐ๊ธฐํ ์ ์์ต๋๋ค.
๋๋ถ๋ถ์ ์ ์กฐ์
์ฒด๋ ๊ธฐ๋ณธ ๋ถํ
์ Das U-Boot๋ฅผ ์ฌ์ฉํ ๊ฒ์ ์ ์ํฉ๋๋ค. ์ ์ฒด ์ง์์ ์ผ๋ฐ์ ์ผ๋ก ์์ฒด ํฌํฌ์์ ์ ๊ณต๋์ง๋ง ์
์คํธ๋ฆผ์ ๊ธฐ์ฌํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค. ์ ๊ฒฝ์ฐ์๋ ๋ณด๋๊ฐ ๋ค์์์ ์ง์๋ฉ๋๋ค.
๋ถํธ๋ก๋ ์์ฒด๋ฅผ ์์งํฉ๋๋ค.
- ์ ์ฅ์์ ์์ ์ ์ธ ๋ถ๊ธฐ๋ฅผ ๋ณต์ ํฉ๋๋ค.
git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
- ๋๋ ํ ๋ฆฌ ์์ฒด๋ก ์ด๋ํด ๋ณด๊ฒ ์ต๋๋ค.
cd u-boot
- ๋น๋ ๊ตฌ์ฑ ์ค๋น:
make mx6ull_14x14_evk_defconfig
. ์ด๊ฒ์ ๊ตฌ์ฑ์ด Das U-Boot ์์ฒด์ ์๋ ๊ฒฝ์ฐ์๋ง ์๋ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ ์กฐ์ ์ฒด์ ๊ตฌ์ฑ์ ์ฐพ์ ํ์ผ์ ์ ์ฅ์ ๋ฃจํธ์ ๋ฃ์ด์ผ ํฉ๋๋ค..config
, ๋๋ ์ ์กฐ์ ์ฒด์์ ๊ถ์ฅํ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์กฐ๋ฆฝํ์ญ์์ค. - ํฌ๋ก์ค ์ปดํ์ผ๋ฌ๋ก ๋ถํธ๋ก๋ ์ด๋ฏธ์ง ์์ฒด๋ฅผ ์์งํฉ๋๋ค.
armhf
:make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx
๊ฒฐ๊ณผ์ ์ผ๋ก ํ์ผ์ ์ป์ต๋๋ค. u-boot.imx
, ์ด๊ฒ์ USB ํ๋์ ๋๋ผ์ด๋ธ์ ์ธ ์ ์๋ ๊ธฐ์ฑํ ์ด๋ฏธ์ง์
๋๋ค. ์ฒ์ 1024๋ฐ์ดํธ๋ฅผ ๊ฑด๋๋ฐ๊ณ SD ์นด๋์ ๊ธฐ๋กํฉ๋๋ค. ๋์์ ์ ํํ ์ด์ u-boot.imx
? ์ ํํ 1024๋ฐ์ดํธ๋ฅผ ๋์น ์ด์ ๋ ๋ฌด์์
๋๊น? ์ด๊ฒ์ด ๊ทธ๋ค์ด ์ ์ํ๋ ๊ฒ์
๋๋ค.
์๋ฃ, ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค. ๋ถํธ๋ก๋๋ ์์ฒด ๋ฒ์ , ๋ณด๋์ ๋ํ ์ผ๋ถ ์ ๋ณด๋ฅผ ๋ณด๊ณ ํ๊ณ ํํฐ์ ์์ ์ปค๋ ์ด๋ฏธ์ง๋ฅผ ์ฐพ์ผ๋ ค๊ณ ์๋ํด์ผ ํฉ๋๋ค. ์คํจํ๋ฉด ๋คํธ์ํฌ๋ฅผ ํตํด ๋ถํ ์ ์๋ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ถ๋ ฅ์ ๋งค์ฐ ์์ธํ๋ฉฐ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ ์ค๋ฅ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
๋์ ๊ฒฐ๋ก
๋๊ณ ๋์ ์ด๋ง๋ ๋ผ๊ฐ ์๋ค๋ ์ฌ์ค์ ์๊ณ ๊ณ์ จ๋์? ๋ง ๊ทธ๋๋ก ์ธ ๋ฒ์งธ ๋, ๋ฐํฅ ์ ์๋ฅผ ์ํ ์ง๋ฐฉ ์์ ์ฒด์ ๋๋ค!
์ถ์ฒ : habr.com