ничего не вижу в sfdisk
документация, которая предполагает, что он поддерживает отрицательное относительное значение. Будет ли работать вычисление начальной позиции раздела?
Я собираюсь продемонстрировать использование разреженного файла обратной связи, имитирующего 2-гигабайтный диск.
root@ubuntu:~# fallocate -l файловая система 2G.img
root@ubuntu:~# lossup -f файловая система.img
root@ubuntu:~# lossup -a | файловая система grep.img
/dev/loop6: [2049]:20 (/root/filesystem.img)
Начальную позицию вашего раздела размером 650 МБ можно найти, вычитая 650 МБ из конца диска. $(blockdev --getsize64 /dev/loop6) / 1024
предоставляет размер диска в КиБ. 650 * 1024
составляет 650 МБ в КиБ. Соберите их вместе, чтобы узнать, сколько КиБ нужно использовать для первого раздела.
root@ubuntu:~# echo $(( $(blockdev --getsize64 /dev/loop6) / 1024 - (650 * 1024)) ))
1431552
Это значение можно использовать непосредственно при создании разделов с sfdisk
root@ubuntu:~# sfdisk /dev/loop6 <<EOF
> ярлык: gpt
> 1431552КиБ,,,-
> ,,,-
> EOF
...
Новая ситуация:
Тип метки диска: gpt
Идентификатор диска: 77816CA7-8A39-974B-A78D-CFCB2A5D66EC
Размер начальных и конечных секторов устройства Тип
/dev/loop6p1 2863104 4194270 1331167 650M файловая система Linux
/dev/loop6p2 2048 2863103 2861056 Файловая система Linux 1.4G
...
Вы также можете рассчитать значение на лету
root@ubuntu:~# wipefs -a /dev/loop6
...
root@ubuntu:~# sfdisk /dev/loop6 <<EOF
> ярлык: gpt
> $(( $(blockdev --getsize64 /dev/loop6) / 1024 - (650 * 1024)) КБ,,,-
> ,,,-
> EOF
...
Новая ситуация:
Тип метки диска: gpt
Идентификатор диска: 661C7E48-3342-3842-81BE-1AF4CB51BC6E
Размер начальных и конечных секторов устройства Тип
/dev/loop6p1 2863104 4194270 1331167 650M файловая система Linux
/dev/loop6p2 2048 2863103 2861056 Файловая система Linux 1.4G
...
В предыдущих примерах сначала был создан раздел размером 650 МБ. Это может немного сбивать с толку, поскольку разделы расположены не в обычном порядке. Вы можете сначала создать раздел «остальная часть диска», чтобы избежать путаницы.
root@ubuntu:~# wipefs -a /dev/loop6
...
root@ubuntu:~# sfdisk /dev/loop6 <<EOF
> ярлык: gpt
> ,$(( $(blockdev --getsize64 /dev/loop6) / 1024 - (650 * 1024)) КБ,,-
> ,,,-
> EOF
...
Новая ситуация:
Тип метки диска: gpt
Идентификатор диска: 3EF08C46-AF4F-1F48-B8AF-A65D67C438B7
Размер начальных и конечных секторов устройства Тип
/dev/loop6p1 2048 2865151 2863104 1.4G файловая система Linux
/dev/loop6p2 2865152 4194270 1329119 649M файловая система Linux
...