저는 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를 사용하여 커널을 부팅하는 데 필요한 것이 누락된 걸까요?