Форум проекта PuppyRus Linux

Разработки проекта PuppyRus => Программирование и компиляция => Тема начата: imp от 17 Октябрь 2020, 20:10:16

Название: Разметить диск из скрипта. sfdisk fdisk
Отправлено: imp от 17 Октябрь 2020, 20:10:16
В заголовке в принципе и указан вопрос.
Один раздел нарезаю, больше не умею.
А fdisk, зараза - интерактивный.
Толковой инфы ни в манах, ни на буржуйских форумах.
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: knn от 17 Октябрь 2020, 20:22:35
fdisk, зараза - интерактивный
Тезка, aka 'kostyalamer' в установщике ч/з 'EOF' сделал [под fdisk, и вроде под cfdisk].
( я с 'EOF' пока очень бегло ознакомился, почти не понял. было нужно для чего-то - покрутил/попробовал, решилось ч/з что-то другое )
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: imp от 17 Октябрь 2020, 20:29:08
Спасибо, побеспокою
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: betcher от 17 Октябрь 2020, 20:32:34
Parted, нет?
Fdisk в скриптах тоже можно, не особо удобно правда. Нужно передать ему в stdin последовательно ответы на все его вопросы. Примеры в сети есть.
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: imp от 17 Октябрь 2020, 20:36:38
Так ненавязчиво послали в яндексе гуглить)
Как-то я не понял, просто, передавать потоками на эту хрень
Буду разбираться
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: imp от 17 Октябрь 2020, 20:42:46
Вообще, задача стоит так - сделать 2 раздела:
1й - нтфс, загрузочный, небольшой, с пупсом
2й - большой, шифрованный cryptsetup-ом и с образами *wim, что разворачиваются тем же пупсом
Еще есть условия, но это не важно. Со всеми условиями все разобрано, кроме как создания
разделов из консоли автоматом ( я в Gpated-е всегда создавал)
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: knn от 17 Октябрь 2020, 20:53:59
я тебе четче не скажу (для меня "потоками" то громко звучит).
(у яши в первых рядах было - [fdisk EOF] - https://superuser.com/questions/332252/how-to-create-and-format-a-partition-using-a-bash-script, https://www.linuxquestions.org/questions/linux-newbie-8/fdisk-dev-sda-__eof__-what-does-this-do-932648/)
да и с фдиском пока малознаком
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: imp от 17 Октябрь 2020, 21:04:08
я тебе четче не скажу (для меня "потоками" то громко звучит).
(у яши в первых рядах было - [fdisk EOF] - https://superuser.com/questions/332252/how-to-create-and-format-a-partition-using-a-bash-script, https://www.linuxquestions.org/questions/linux-newbie-8/fdisk-dev-sda-__eof__-what-does-this-do-932648/)
да и с фдиском пока малознаком

Одну партицию я и так смог создать. А как больше? в том и вопрос...
Не нарезать же кучу пустых файлов определенного размера?
Да и места не хватит
Как-то ж утилиты это делают?
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: imp от 17 Октябрь 2020, 21:05:45
Нет, спасибо, конечно
Просто я это находил, но не понял скорее всего,
как еще разделы добавить?
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: imp от 17 Октябрь 2020, 21:11:13
Забыл еще одно условие.
Первый раздел (который не шифрованый), должен быть с загрузочным флагом
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: knn от 17 Октябрь 2020, 21:14:02
1. и в fdisk, и в EOF мало понимаю.
2. но тут -  https://superuser.com/questions/332252/how-to-create-and-format-a-partition-using-a-bash-script (https://superuser.com/a/984637) - вроде пара разделов (как понимаю, последний "до конца" можно отрезать...)
--------
) думаю почетче подскажут...
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: kostyalamer от 17 Октябрь 2020, 21:14:24
Так ненавязчиво послали в яндексе гуглить)
Как-то я не понял, просто, передавать потоками на эту хрень
Буду разбираться
Да там и разбираться особо нечего, как совершенно справедливо заметил Тезка все делается через EOF:
вызов_программы <<EOF
подсовываемые клавиши (каждая с новой строки - это эмулирует нажатие на Enter)
EOF
PS можно подсовывать не только одиночные клавиши а и ввод параметров как в примере Тезки из поста выше.
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: imp от 17 Октябрь 2020, 21:17:13
EOF - end of file, правильно? Где я таких обЬемов до конца раздела наберу?
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: imp от 17 Октябрь 2020, 21:19:26
Наверное, тема должна была называться:
"Как разметить диск из скрипта?"
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: knn от 17 Октябрь 2020, 21:22:44
похоже в данном случае - 'EOF' - "виртуальная-кнопкотыкалка" для fdisk-a ( как нажимал бы в самой проге для своих целей[последовательность]), своеобразный эмулятор
-----
..... ну а EOF-конструкцию -> в любое нужное место скрипта
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: imp от 17 Октябрь 2020, 21:26:30
Да пробовал напрямую fdisk-у параметры подсовывать - фигвам. Причем слитно. Говорят, что sfdisk - тот же fdisk, только скриптовый. разбираюсь
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: kostyalamer от 17 Октябрь 2020, 21:29:16
EOF - end of file, правильно? Где я таких обЬемов до конца раздела наберу?
Ты видимо не совсем понял механизм вот тебе как и обещал Тезка пример из Ледяного :
Код
fdisk $disk << EOF 
n
p
3



w
EOF

Здесь пустые строки просто эмулируют нажатие на Enter
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: imp от 17 Октябрь 2020, 21:34:35
Об этом и говорилось. Не понял ничего.
Как нарезать 2гб, а после них - все остальное пространство?
Может и пойму логику
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: knn от 17 Октябрь 2020, 21:37:43
Здесь пустые строки просто эмулируют нажатие на Enter
- вот и я почерпнул полезного )
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: kostyalamer от 17 Октябрь 2020, 21:47:15
Об этом и говорилось. Не понял ничего.
Как нарезать 2гб, а после них - все остальное пространство?
Может и пойму логику
Тогда тебе надо не с подсовыванием нажатий разбираться а с самим fdisk-ом
https://losst.ru/komanda-fdisk-v-linux
https://vps.ua/wiki/fdisk-linux/
Потом сделать все что тебе нужно fdisk-ом вручную записывая на бумажку какие клавиши нажимал и какие значения вводил . После чего написать скрипт который будет все это скармливать fdisk-у через EOF.
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: kostyalamer от 17 Октябрь 2020, 21:55:38
Хотя может я тебя не так понял и тебе надо не инсталлятор писать а просто разбить диск ?
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: knn от 17 Октябрь 2020, 21:56:18
- теоретически - примерно так. (аналог https://superuser.com/a/984637) ! 2G - я взял по аналогии с dd. наугад. для обсолютной точности и под себя - все равно хоть как с прогой ознакамливаться
Код
# attation - no uno practika
sudo fdisk /dev/sdc << EOF
o # clear the in memory partition table
n # new partition
1 # partition number 1
  # default - start at beginning of disk
+2G # 2 G boot parttion
n # new partition
p # primary partition
  # default, start immediately after preceding partition
  # default, extend partition to end of disk
a # make a partition bootable
1 # bootable partition is partition 1 -- /dev/sda1
p # print the in-memory partition table
w # write the partition table
q # and we're done
EOF
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: imp от 17 Октябрь 2020, 22:08:53
разбить диск ?

Да, просто разбить на 2 и установить на 1й флаг bootable
Из скрипта
Далее загрузчик и файлы скопируются
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: imp от 17 Октябрь 2020, 22:15:10
А далее зашифруется второй раздел и там совсем другая канитель
Хотя, если б я знал, как с шифрованного раздела систему грузить - я бы и первый залочил
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: imp от 18 Октябрь 2020, 07:35:36
Я дебил. Дошло, зачем eof. Вместо стандартного потока. Всем извините)
Я так понимаю и через cat или echo такое можно делать.

А kostyalamer ведь дал исчерпывающий ответ)..

Можно ставить плашку "Решено"
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: betcher от 18 Октябрь 2020, 10:15:09
. Вместо стандартного потока. Всем извините)
Собственно я вам сразу так и написал. Нужно скормить в fdisk через stdin ответы на все его вопросы. А там хоть cat, хоть echo -e, хоть eof.
Но повторюсь, если нужно разбивать из скрипта parted намного удобнее, fdisk заточен под интерактив. С партед могу и примеров кинуть, всегда его использую.
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: imp от 18 Октябрь 2020, 10:32:14
Если реально удобнее - хотел бы посмотреть на ваши пару примеров. Даже просто для понимания
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: betcher от 18 Октябрь 2020, 10:34:13
До дома доберусь, кину.
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: betcher от 18 Октябрь 2020, 16:51:45
Код
# gpt
# 1. - Раздел под не шифрованные данные (ntfs "размер флешки" - 8G)
# 2. - boot ESP (100M fat32)
# 3. - sys (5G ext3)
# 4. - luks (все что останется - luks/ext4)
gpt4 () {
fs_part1="ntfs/NOSECURE"
fs_part2="vfat/BOOT" ; part2=100
fs_part3="ext3/ROSA-SYSTEM"  ;  part3=5000
fs_part4="ext4(luks)/ROSA-DATA"
part1=$(( "$devsize" - 8000 ))
part4=$(( "$devsize"  - 8000 - "$part2" - "$part3" ))
show_stat gpt ${fs_part1}:${part1} ${fs_part2}:${part2} ${fs_part3}:${part3} ${fs_part4}:${part4}
action "Partition initialization"
try_to_clear
parted -s $device mklabel gpt
parted  -a optimal -s $device  mkpart DATA 1MiB $(($part1 + 1))MiB
parted  -a optimal -s $device  mkpart ESP   $(($part1 + 1))MiB $(( 1 + $part1 + $part2))MiB  set 2 esp on || echo_exit "$action - ERROR" ${LINENO}
parted  -a optimal -s $device  mkpart ROSA-SYSTEM $(( 1 + $part1 + $part2))MiB $(($part1 + $part2 + $part3 + 1))MiB || echo_exit "$action - ERROR" ${LINENO}
parted  -a optimal -s $device  mkpart ROSA-DATA $(($part1 + $part2 + $part3 + 1))MiB 100% || echo_exit "$action - ERROR" ${LINENO}
format 2 && install 2
}

# gpt
# 1. - boot ESP (100M fat32)
# 2. - sys (4-5G ext3)
# 3. - luks (все что останется - luks/ext4)
gpt3 () {
fs_part1=vfat/BOOT ; part1=100
fs_part2=ext3/ROSA-SYSTEM  ;  part2=5000
fs_part3="ext4(luks)/ROSA-DATA"
part3=$(( "$devsize" - "$part1" - "$part2" ))
echo ""
show_stat gpt ${fs_part1}:${part1} ${fs_part2}:${part2} ${fs_part3}:${part3}
action "Partition initialization"
try_to_clear
parted -s $device mklabel gpt
parted  -a optimal -s $device  mkpart ESP   1MiB $(($part1 + 1))MiB  set 1 esp on || echo_exit "$action - ERROR" ${LINENO}
parted  -a optimal -s $device  mkpart ROSA-SYSTEM $(($part1 + 1))MiB $(($part1 + $part2 + 1))MiB || echo_exit "$action - ERROR" ${LINENO}
parted  -a optimal -s $device  mkpart ROSA-DATA $(($part1 + $part2 + 1))MiB 100% || echo_exit "$action - ERROR" ${LINENO}
format 1 && install 1
}

# gpt (Разбивка для флэшек меньше 8 гигов. 2 раздела.)
# 1. - boot ESP (100M fat32)
# 2. - data (все что останется - ext4)
gpt2 () {
fs_part1="vfat/BOOT" ; part1=100
fs_part2="ext3/SYSTEM+DATA"
part2=$(( "$devsize"  - "$part1" ))
echo ""
show_stat gpt ${fs_part1}:${part1} ${fs_part2}:${part2}
action "Partition initialization"
try_to_clear
parted -s $device mklabel gpt
parted  -a optimal -s $device mkpart ESP  1MiB $(($part1 + 1))MiB set 1 esp on || echo_exit "$action - ERROR" ${LINENO}
parted  -a optimal -s $device mkpart ROSA-SYSTEM  $(($part1 + 1))MiB 100% || echo_exit "$action - ERROR" ${LINENO}
format 1 && install 1
}

# mbr (если машина не грузится с gpt)
# 1. - boot ESP (100M fat32)
# 2. - sys (4-5G ext3)
# 3. - luks (все что останется - luks/ext4)
mbr3 () {
fs_part1=vfat/BOOT ; part1=100
fs_part2=ext3/ROSA-SYSTEM  ;  part2=5000
fs_part3="ext4(luks)/ROSA-DATA"
part3=$(( "$devsize" - "$part1" - "$part2" ))
echo ""
show_stat mbr ${fs_part1}:${part1} ${fs_part2}:${part2} ${fs_part3}:${part3}
try_to_clear
parted -s $device mklabel msdos
action "Partition initialization"
parted  -a optimal -s $device  mkpart primary fat32 1MiB $(($part1 + 1))MiB set 1 esp on set 1 boot on || echo_exit "$action - ERROR" ${LINENO}
parted  -a optimal -s $device  mkpart primary ext4 $(($part1 + 1))MiB $(($part1 + $part2 + 1))MiB || echo_exit "$action - ERROR" ${LINENO}
parted  -a optimal -s $device  mkpart primary $(($part1 + $part2 + 1))MiB 100% || echo_exit "$action - ERROR" ${LINENO}
format 1  &&  install 1
}



Это функции с разными разбивками из скрипта - инсталлятора.
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: DdShurick от 18 Октябрь 2020, 17:50:51
fs_part1=vfat/BOOT ;
Первый раздел не обязательно должен быть загрузочным, у меня на флешке система на втором разделе, первый /home. Для разбивки использовал gparted.
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: betcher от 18 Октябрь 2020, 18:24:32
Первый раздел не обязательно должен быть загрузочным,
В первой функции (gpt4) как раз так и есть. Первый раздел большой ntfs, а  загрузочный второй.
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: imp от 18 Октябрь 2020, 21:31:06
Спасибо большое. Ознакамливаюсь
Название: Re: sfdisk как нарезать 2+ раздела?
Отправлено: krasnyh от 18 Октябрь 2020, 23:14:24
Для примера разметки fdisk`ом в скрипте Скрипт для персональной установки ArchLinux (http://forum.puppyrus.org/index.php?topic=21469.new). Только там через echo, а не EOF.
Название: Re: Разметить диск из скрипта. sfdisk fdisk
Отправлено: sfs от 19 Октябрь 2020, 09:44:12
Я, когда писал инсталлятор LF , побоялся включать туда разбивку диска
Сам бы побоялся такое юзать. Чревато потерей инфы
Думаю, в основном, фругал ставят на уже разбитый диск
В противном случае лучше написать как разбить gparted с любого live linux
Название: Re: Разметить диск из скрипта. sfdisk fdisk
Отправлено: imp от 19 Октябрь 2020, 10:40:31
Сам бы побоялся такое юзать. Чревато потерей инфы

В данном случае - абсолютно пофигу. Это для "инженеров", которым не надо лезть, куда глаза не лезут.
Втыкается "новая" флешка, автоматом размечается, шифруется и в шифрованный раздел подтягивается все, что нужно.
При повторных запусках - сверка списка и сравнение md5 файлов на фтп и локальных на флешке. Если различаются - тянем с заменой.
Название: Re: Разметить диск из скрипта. sfdisk fdisk
Отправлено: imp от 20 Октябрь 2020, 21:13:37
Спойлер
Код
fdisk /dev/sdb <<EOF
o
n
p
1

+2G

t
87
w
EOF
fdisk /dev/sdb <<EOF
n
p
2



t
87
w
EOF
[свернуть]

В спойлере то, что писал

Partition number (1,2, default 2): Value out of range.
Название: Re: Разметить диск из скрипта. sfdisk fdisk
Отправлено: imp от 01 Ноябрь 2020, 15:51:17
Разобрался с parted. Понравилось. Спасибо betcher