Рейтинг:0

sfdisk: создать раздел справа

флаг it

Я хочу создать раздел 2 с указанным размером, а раздел 1 занимает остальную часть диска:

эхо -en 'g\nw' | fdisk "$2" #создать gpt-таблицу
echo -en ',1331200\n,,U' | sudo sfdisk "/dev/sda" -W всегда

Последняя команда создает левый раздел размером 650 МБ, а правый занимает остальную часть диска, но, как я уже указал, это не то, что мне нужно. Чтобы создать правый раздел размером 650 МБ и левый, занимающий остальную часть диска, я подумал, что сделаю что-то вроде этого:

echo -en ',-1331200\n,,U' | sudo sfdisk "/dev/sda" -W всегда

с мыслью, что отрицательные значения начинаются справа, но вместо этого - знак полностью игнорируется, и команда имеет тот же эффект, что и команда без - подписать.

Как создать раздел, начиная справа, используя sfdisk?

waltinator avatar
флаг it
В какой среде вы запускаете этот фрагмент? Поможет ли обработка текста `sfdisk --list`? Рассмотрите возможность использования `expect` для автоматизации вашего общения с `sfdisk`. Читать `человек ожидает`
флаг it
В каком смысле какая среда?
Рейтинг:1
флаг jp

ничего не вижу в 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
...
флаг it
Благодаря вам моя проблема решилась.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.