winiso2img v2
May. 14th, 2025 21:12(Продовження саги про віндюка та його інсталяцію.)
Я помітив що аплікація gnome-disks
вміє монтувати image files не
питаючи ув polkit дозволу. Виявляється, монтувати loop дівайси можна
через udisksctl без руту, тобто замість
$ sudo mount -t udf Win11_24H2_English_x64.iso /media
друкується
$ udisksctl loop-setup -f Win11_24H2_English_x64.iso
Mapped file Win11_24H2_English_x64.iso as /dev/loop0.
$ udisksctl mount -t udf -b /dev/loop0
Mounted /dev/loop0 at /run/media/alex/CCCOMA_X64FRE_EN-US_DV9
Таким чином, створювати окремі партішони, форматувати їх та копіювати результата до raw image можна також робити зовсім без руту. Наприклад, 2й партішон для ntfs:
$ truncate -s 6G lol.img
$ mkfs.ntfs -fF -s 512 -S 63 -H 255 -p $((boot_size + 2048)) lol.img
де boot_size
розмір (ув секторах) 1го партішону.
Raw image генерується sfdisk'ом як
$ boot_size=$(( 1024*1024*1023 / 512))
$ setup_size=$(( 6*1024*1024*1024 / 512))
$ sfdisk w11.img << EOF
label: gpt
1 : start=2048, size=$boot_size, type=EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, name="BOOT"
2 : start=$((boot_size + 2048)), size=$setup_size, type=EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, name="INSTALL"
EOF
Потім, щоб втулити отой lol.img
з ntfs до w11.img
, треба вказати
правильний офсета для dd і не забути про conv=notrunc
:
$ dd if=lol.img of=w11.img conv=notrunc bs=512 seek=$((boot_size + 2048))