Давайте обсудим очень распространенный случай при создании образа системы, в котором нам нужны наши rootfs как SquashFs
, чтобы действительно только для чтения, и еще один ext4
раздел (скажем, home
) для общего чтения. -записать хранилище.
Структура образа системы (genimage.cfg
) выглядит так в среде сборки root:
image sdcard.img {
hdimage {}
partition boot {
partition-type = 0xC
bootable = "true"
image = "boot.vfat"
}
partition rootfs {
partition-type = 0x83
image = "rootfs.squashfs"
}
partition home {
partition-type = 0x83
image = "home.ext4"
}
}
image boot.vfat {
vfat {
files = {
"bcm2711-rpi-4-b.dtb",
"rpi-firmware/cmdline.txt",
"rpi-firmware/config.txt",
"rpi-firmware/fixup4.dat",
"rpi-firmware/start4.elf",
"rpi-firmware/overlays",
"zImage"
}
}
size = 16M
}
image home.ext4 {
name = "home"
mountpoint = "/home"
ext4 {}
size = 32M
}
Но на финальной стадии создания образа мы в конечном итоге с ошибкой:
>> Executing post-image script ~/rpi4/post-image.sh
INFO: cmd: "mkdir -p "/home/iman/rpi4/genimage.tmp"" (stderr+stdout):
INFO: cmd: "rm -rf "/home/iman/rpi4/genimage.tmp"/*" (stderr+stdout):
DEBUG: hdimage(sdcard.img): adding implicit file rule for 'rootfs.squashfs'
DEBUG: vfat(boot.vfat): adding implicit file rule for 'bcm2711-rpi-4-b.dtb'
DEBUG: vfat(boot.vfat): adding implicit file rule for 'rpi-firmware/cmdline.txt'
DEBUG: vfat(boot.vfat): adding implicit file rule for 'rpi-firmware/config.txt'
DEBUG: vfat(boot.vfat): adding implicit file rule for 'rpi-firmware/fixup4.dat'
DEBUG: vfat(boot.vfat): adding implicit file rule for 'rpi-firmware/start4.elf'
DEBUG: vfat(boot.vfat): adding implicit file rule for 'rpi-firmware/overlays'
DEBUG: vfat(boot.vfat): adding implicit file rule for 'zImage'
INFO: cmd: "mkdir -p "/home/iman/rpi4/genimage.tmp"" (stderr+stdout):
INFO: cmd: "cp -a "/tmp/tmp.dMfSigyUwW" "/home/iman/rpi4/genimage.tmp/root"" (stderr+stdout):
INFO: cmd: "mv "/home/iman/rpi4/genimage.tmp/root/home" "/home/iman/rpi4/genimage.tmp/home"" (stderr+stdout):
mv: cannot stat '/home/iman/rpi4/genimage.tmp/root/home': No such file or directory
Makefile:809: recipe for target 'target-post-image' failed
make[1]: *** [target-post-image] Error 1
Makefile:84: recipe for target '_all' failed
make: *** [_all] Error 2
О каких еще шагах нужно позаботиться?
Или, в более общем смысле, как создать + смонтировать новый раздел в сборке root?