kexec:initrdはメモリに完全に固定されていますか、それともまだストレージでサポートされていますか?

kexec:initrdはメモリに完全に固定されていますか、それともまだストレージでサポートされていますか?

私は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(〜500 Mb)のサイズになることを願っています。と表示されているものはありますかshared

この状態でeMMCに直接使っても安全ですか?

編集する:

私はメモリにロードされたのがgzipで圧縮されたCPIOで、次のコアで解凍されることに気づきました。したがって、その後、kexecすべてが明らかにメモリにあり、eMMCの元のファイルはもはや重要ではありません。

今私の考えでは、この揮発性rootfsは実際にユーティリティがtmpfs報告するように処理されるようです。sharedfree

私は正しいですか?

ベストアンサー1

おすすめ記事