Qemu에서 Linux 커널 이미지를 부팅하기 위해 initramfs를 수정하는 방법은 무엇입니까?

Qemu에서 Linux 커널 이미지를 부팅하기 위해 initramfs를 수정하는 방법은 무엇입니까?

저는 M2맥을 사용하고 있습니다. aarch64v8/ubuntu docker 컨테이너에 Linux 커널을 구축했습니다. 이것은 docker-compose.yml입니다.

version: "3"
services:
  dev:
    image: arm64v8/ubuntu
    platform: linux/arm64
    volumes:
      - .:/root/myfolder
    working_dir: /root
    #cpus: 
    network_mode: host
    security_opt:
      - seccomp:unconfined
    cap_add:
      - SYS_PTRACE

linux-5.10.209를 다운로드하고 커널을 빌드했습니다. 효율적인. 나는 busybox-1.36.1을 다운로드하여 구축했습니다. 그것도 작동했습니다.

이것은 내 루트 파일 시스템입니다.

(base) varunnawathey@Varuns-MacBook-Pro rootfs % ls -l
total 0
drwxr-xr-x@ 95 varunnawathey  staff  3040 Feb  3 02:58 bin
drwxr-xr-x   6 varunnawathey  staff   192 Feb  3 03:09 dev
drwxr-xr-x   2 varunnawathey  staff    64 Feb  3 03:03 etc
lrwxr-xr-x   1 varunnawathey  staff    11 Feb  3 03:04 init -> bin/busybox
lrwxr-xr-x@  1 varunnawathey  staff    11 Feb  3 02:58 linuxrc -> bin/busybox
drwxr-xr-x   2 varunnawathey  staff    64 Feb  3 03:03 proc
drwxr-xr-x@ 74 varunnawathey  staff  2368 Feb  3 02:58 sbin
drwxr-xr-x   2 varunnawathey  staff    64 Feb  3 03:03 sys
drwxr-xr-x@  4 varunnawathey  staff   128 Feb  3 02:55 usr
(base) varunnawathey@Varuns-MacBook-Pro rootfs % ls -l dev
total 0
crw-rw----  1 root  staff  0x1000001 Feb  3 03:06 mem
crw-rw----  1 root  staff  0x1000001 Feb  3 03:07 ttyS2
crw-rw----  1 root  staff  0x1000001 Feb  3 03:07 ttyS3
crw-rw----  1 root  staff  0x1000001 Feb  3 03:07 ttyS4

나는 이것을 실행했습니다 :

sudo find .  -print0 | cpio --null -ov --format=newc | gzip -9 > ../rootfs.cpio.gz

텍스트가 너무 많지만 여기에 뭔가 잘못된 것 같습니다.

./sbin/tunctl
./sbin/mkdosfs
./sbin/blkid
./etc
./sys
./linuxrc
./dev
cpio: Couldn't list extended attributes
./dev/ttyS4
cpio: Couldn't list extended attributes
./dev/ttyS3
cpio: Couldn't list extended attributes
./dev/ttyS2
cpio: Couldn't list extended attributes
./dev/mem
4302 blocks

rootfs를 만들어 보았지만 성공하지 못했습니다. 이것이 내가 붙어있는 곳입니다. mknod가 필요하지만 Docker 컨테이너에서는 허용되지 않는 몇 가지 단계가 있습니다.

여기서 무엇을 해야할지 모르겠습니다. Docker 컨테이너 대신 호스트를 통해 mknod를 실행해야 하는 경우 initramfs를 어떻게 만들어야 하는지 모르겠습니다.

이것은 단지 중단됩니다:

qemu-system-aarch64 -M virt -m 256M -kernel linux-5.10.209/arch/arm64/boot/Image -initrd rootfs.cpio.gz -append "root=/dev/mem" -nographic

Docker 컨테이너를 특권으로 설정해야 합니까? 어떻게 해야 하나요?

아니면 qemu를 사용하여 커널을 부팅하는 데 필요한 것이 누락된 걸까요?

관련 정보