busybox를 이용한 rootfs

markyang92·2024년 1월 27일
0

embedded_linux

목록 보기
6/7
post-thumbnail

busybox rootfs 설치

$ wget https://busybox.net/downloads/busybox-1.36.0.tar.bz2
$ tar xvf busybox-1.36.0.tar.bz2
$ cd busybox-1.36.0
  • Busybox Configure
    • 이전글의 크로스빌드 설정이 되어 있어야한다.
      export PATH=$PATH:$HOME/x-tools/arm-hello-linux-uclibcgnueabihf/bin
      $ arm-linux- <-- 여기서 탭치면
      arm-linux-addr2line     arm-linux-gcc    arm-linux-gcov          ... 생략
      툴체인 바로 실행할 수 있는 환경이어야한다.
$ make ARCH=arm CROSS_COMPILE=arm-linux- defconfig
$ make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig
  • menuconfig 설정변경
$ make -j8

  • install
$ make install

Creating initramfs

$ find . | cpio -H newc -ov --owner root:root > ../initramfs.cpio
$ cd .. && gzip initramfs.cpio
  • ~/initramfs.cpio.gz 생성확인

qemu탑재

$ qemu-system-arm -M vexpress-a9 -kernel <kernel> \
-dtb <dtb> \
-append "console=ttyAMA0 rdinit=/bin/sh" -nographic \
-initrd <initramfs>

rdinit=

  • rdinit=
    • ramdisk에서 실행하는 init process
    • full path를 적을 것

Creating rootfs ext4

  • 이번엔 rootfs용 ext4파일시스템을 구성해보자.
  1. 빈 이미지를 생성한다.
$ sudo dd if=/dev/zero of=rootfs.ext4 bs=1M count=100
  • 생성확인

  1. ext4로 포맷팅
$ sudo mkfs.ext4 ./rootfs.ext4

  1. 마운트해서 몇 가지 위의 busybox로 생성한 rootfs 내용 copy
$ mkdir temp_mount
$ sudo mount rootfs.ext4 ./temp_mount
$ sudo cp -r ~/rootfs/* ./temp_mount
$ sudo unmount temp_mount

qemu 탑재

$ qemu-system-arm -M vexpress-a9 -kernel <kernel> \
-dtb <dtb> \
-append "console=ttyAMA0 root=/dev/mmcblk0 rw" -nographic \
-sd <rootfs_image>
profile
pllpokko@alumni.kaist.ac.kr

0개의 댓글