나는 eMMC에서 부팅되는 임베디드 시스템을 가지고 있으며 실용적인 이유로 PXE 부팅이나 이와 유사한 것에 의존하지 않고도 SSH를 통해 전체 eMMC를 플래시하는 쉬운 방법을 원합니다.
파티션에 새 커널과 전체 rootfs가 포함된 새 initrd CPIO를 쉽게 삭제 /
하고 다음을 수행할 수 있습니다.
kexec -l /home/root/bzImage --initrd=/home/root/initrd.cpio.gz
systemctl kexec
예상대로 작동했고 나중에 SSH 연결을 끊었고 systemctl kexec
몇 초 후에 새로운 "라이브" 시스템에 로그인할 수 있었습니다.
mount
출력이 표시됩니다 .
rootfs on / type rootfs (rw,size=3913004k,nr_inodes=978251,inode64)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,size=4096k,nr_inodes=131072,mode=755,inode64)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,inode64)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,size=1595352k,nr_inodes=819200,mode=755,inode64)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k,inode64)
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot)
efivarfs on /sys/firmware/efi/efivars type efivarfs (rw,nosuid,nodev,noexec,relatime)
bpf on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,relatime,mode=700)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=29,pgrp=1,timeout=0,minproto=5,maxproto=5,direct)
mqueue on /dev/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,nosuid,nodev,noexec,relatime)
none on /run/credentials/systemd-sysusers.service type ramfs (ro,nosuid,nodev,noexec,relatime,mode=700)
따라서 모든 것이 RAM에 있는 것처럼 보이며 이제 dd if=stuff.img of=/dev/mmcblk0
새 파티션 변경 및 포맷과 같은 작업을 안전하게 수행할 수 있습니다.
그러나 free -m
출력을 보면 다음과 같습니다.
total used free shared buff/cache available
Mem: 7789 89 7217 473 483 7158
Swap: 0 0 0
나는 이 값이 혼란스럽습니다 used
. 적어도 압축되지 않은 전체 라이브 rootfs(~500Mb)의 크기가 되기를 바랍니다. 로 표시된 것이 있나요 shared
?
이 상태에서 eMMC에 직접 써도 안전한가요?
편집하다:
방금 메모리에 로드된 것이 gzip으로 압축된 CPIO이고 다음 코어에서 압축이 풀린다는 것을 깨달았습니다. 따라서 그 후에는 kexec
모든 것이 분명히 메모리에 있으며 eMMC의 원본 파일은 더 이상 중요하지 않습니다.
지금 내 생각에는 이 휘발성 rootfs가 실제로 유틸리티가 tmpfs
보고하는 대로 처리되는 것 같습니다.shared
free
내가 맞나요?