Скрипты chroot, bash

Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Для начала воспользуйтесь поиском форума. 2. Укажите версию ОС вместе с разрядностью. Пример: LM 19.3 x64, LM Sarah x32 3. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 4. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 5. Суть. Желательно с выводом консоли, логами. 6. Скрин. Просьба указывать 2, 3 и 4 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
Аватара пользователя

Автор темы
sheridan
Сообщения: 1283
Зарегистрирован: 24 фев 2020, 19:13
Решено: 14
Откуда: Алчевск
Благодарил (а): 892 раза
Поблагодарили: 467 раз
Контактная информация:

Скрипты chroot, bash

#1

05 окт 2021, 16:14

Решил я сделать для себя скрипт для установки Gentoo, что бы каждый раз при установке не стучать по клавиатуре, для Arch у меня получилось (помог спасибо @rogoznik), так как там нет необходимости настраивать ядро вручную и для этого не требуется смена каталогов, в Gentoo всё гораздо сложней и требуется команде CD при установке с скрипта переходить в разные каталоги. Задача преследуется установка Gentoo от форматирования раздела до установки программ с перезагрузкой . Я сделал два скрипта один до chroot другой после. В программировании я пока ещё плаваю поэтому прошу вашей помощи.
gentoo.sh
gentoo2.sh

Аватара пользователя

slant
Сообщения: 4506
Зарегистрирован: 21 июн 2017, 18:09
Решено: 99
Благодарил (а): 51 раз
Поблагодарили: 1993 раза
Контактная информация:

Скрипты chroot, bash

#2

05 окт 2021, 16:47

Первая рекомендация - сделать первой строчкий скриптов: #!/bin/bash -x
Это позволит лучше видеть команды которые выполняются, вместе с подстановкой значения переменных.

Второе:
chroot /mnt/gentoo /bin/bash ./gentoo2.sh
Вот здесь несколько неоднозначно получается.
При таком вызове происходит примерно вот что:
1. Меняем корневой каталог на /mnt/gentoo
2. Вызываем /bin/bash
3. Ему передаем параметр ./gentoo2.sh.

Вот только все местные (относительные) пути в процессе обработки сначала разворачиваются в абсолютные. И как это будет выглядеть здесь, при chroot?
/bin/bash - вызывается уже после chroot, т.е. оно так и будет выглядеть как /bin/bash. А вот его параметр - его будет искать уже bash запущенный из под chroot. Т.е. пути выше /mnt/gentoo оригинала ему будут уже недоступны. И gentoo2.sh рядом с gentoo.sh (предполагаю что они оба в каталоге вне chroot) - тоже. Потому здесь надо делать немного не так. А вот к примеру так:

echo '12. Переходим в новое окружение'
cp gentoo2.sh /mnt/gentoo/install2.sh
chroot /mnt/gentoo /install2.sh

Смысл в том, что мы сначала создаем скрипт дальнейшей инсталяции там, где он будет доступен после chroot. И только тогда вызываем chroot с вызовом этого скрипта по пути правильном уже в новом варианте корня (здесь он будет лежать в корне будущей системы, и вызываем его по абсолютному пути, так что именно /install2.sh а не ./install2.sh).

Аватара пользователя

Автор темы
sheridan
Сообщения: 1283
Зарегистрирован: 24 фев 2020, 19:13
Решено: 14
Откуда: Алчевск
Благодарил (а): 892 раза
Поблагодарили: 467 раз
Контактная информация:

Скрипты chroot, bash

#3

05 окт 2021, 17:12

slant, Спасибо попробую, дело в том что chroot подхватывает gentoo2.sh, так как я у казал в скрипте gentoo.sh скопировать gentoo2.sh (строка 20 gentoo.sh), проблемы начинаются во втором скрипте (gentoo2.sh строка 46) когда я меняю каталог, для того чтобы компилировать и затем скопировать ядро в boot, мне необходимо выполнить команду make которая требует чтобы находился (/usr/src/linux), этого не происходит и перепрыгивает на строку 50

Я вот ещё что думаю, папка linux это символьная ссылка на ядро которое находится по пути /usr/src/linux-5.10.61-gentoo/, может в пути указать фактическое местоположение ядра?
Последний раз редактировалось пользователем 1 sheridan; всего редактировалось раз: 5

Аватара пользователя

slant
Сообщения: 4506
Зарегистрирован: 21 июн 2017, 18:09
Решено: 99
Благодарил (а): 51 раз
Поблагодарили: 1993 раза
Контактная информация:

Скрипты chroot, bash

#4

05 окт 2021, 18:08

sheridan писал(а):
05 окт 2021, 17:12
Я вот ещё что думаю, папка linux это символьная ссылка
А когда и как она создавалась? Если до chroot - она становится неверной, т.к. символьная ссылка в отличии от жесткой указывает не на inode (т.е. фактический узел файловой системы), а просто содержит запись пути в текстовом виде. Может быть как абсолютной так и относительной. Т.е. там запросто может быть запись вида /mnt/gentoo/usr/src/linux-5.10.61-gentoo/ которая при переходе в chroot становится смотрящей в никуда.

В общем - делайте #!/bin/bash -x и смотрите что там в вызовах команд реально происходит.

Аватара пользователя

Автор темы
sheridan
Сообщения: 1283
Зарегистрирован: 24 фев 2020, 19:13
Решено: 14
Откуда: Алчевск
Благодарил (а): 892 раза
Поблагодарили: 467 раз
Контактная информация:

Скрипты chroot, bash

#5

05 окт 2021, 18:26

@slant Всё путь увидел, компиляция пошла теперь попробую с самого начала установить, это не быстро Gentoo, по окончании отпишусь. Спасибо :thumbs:

Аватара пользователя

rogoznik
Сообщения: 10044
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1956 раз
Контактная информация:

Скрипты chroot, bash

#6

05 окт 2021, 19:22

sheridan, поделись потом скриптами когда отладишь, хочу gentoo пощупать, а то в свое время не осилил установку - иксы не стартовали, вроде был косяк с драйвером видео
ИзображениеИзображение

Аватара пользователя

Автор темы
sheridan
Сообщения: 1283
Зарегистрирован: 24 фев 2020, 19:13
Решено: 14
Откуда: Алчевск
Благодарил (а): 892 раза
Поблагодарили: 467 раз
Контактная информация:

Скрипты chroot, bash

#7

05 окт 2021, 20:54

rogoznik, Без проблем, ок

Аватара пользователя

Автор темы
sheridan
Сообщения: 1283
Зарегистрирован: 24 фев 2020, 19:13
Решено: 14
Откуда: Алчевск
Благодарил (а): 892 раза
Поблагодарили: 467 раз
Контактная информация:

Скрипты chroot, bash

#8

07 окт 2021, 22:28

Все мои вопросы для установки Gentoo c скрипта решены, проверил работает с одного скрипта, ошибки были но об этом позже, скрипт на стадии доработки.
Хотел вам предложить мой скрипт по установке Arch Linux.
Он сделан для видеокарт Nvidia, есть возможность установки разных ядер (DEFAULT, ZEN, LTS), а так же подстановки своих разделов для форматирования и монтирования.
ВНИМАНИЕ!
Не запускайте скрипты сразу так как там указаны мои разделы, внимательно изучите куда подставлять данные.
Для тех у кого стоит на флешке программа VENTOY, рекомендую записывать скрипт во второй раздел ventoy.
Для этого необходимо смонтировать второй раздел,
пример: (подставляете свой раздел)
mount /sdb2 /mnt затем скопировать в /mnt первый скрипт (arch.sh),
второй скрипт должен лежать в дополнительном разделе который вы смонтируете при установке, что бы затем скопировать в корень устанавливаемой системы, в моём случае cp /mnt/data/arch2.sh /mnt/arch2.sh.
1. Загружаемся с установочного диска Arch
2. Создаём папку для монтирования второго раздела Ventoy mkdir /1
3. Монтируем второй раздел Ventoy

Код: Выделить всё

mount /dev/sdb2 /1
4. Запускаем скрипт

Код: Выделить всё

/1/arch.sh
Install_Arch_Scripts

Аватара пользователя

Автор темы
sheridan
Сообщения: 1283
Зарегистрирован: 24 фев 2020, 19:13
Решено: 14
Откуда: Алчевск
Благодарил (а): 892 раза
Поблагодарили: 467 раз
Контактная информация:

Скрипты chroot, bash

#9

08 окт 2021, 11:33

Ещё один момент, если у вас несколько осей, в консоли необходимо ввести эту команду

Код: Выделить всё

sudo echo "GRUB_DISABLE_OS_PROBER=false" >> /etc/default/grub
после этого обновить grub

Код: Выделить всё

sudo grub-mkconfig -o /boot/grub/grub.cfg

Аватара пользователя

Автор темы
sheridan
Сообщения: 1283
Зарегистрирован: 24 фев 2020, 19:13
Решено: 14
Откуда: Алчевск
Благодарил (а): 892 раза
Поблагодарили: 467 раз
Контактная информация:

Скрипты chroot, bash

#10

08 окт 2021, 14:06

Отредактировал скрипты по установке Arch, также добавил Readme в архив, замечания и предложения принимаются.
Arch_install

Аватара пользователя

Автор темы
sheridan
Сообщения: 1283
Зарегистрирован: 24 фев 2020, 19:13
Решено: 14
Откуда: Алчевск
Благодарил (а): 892 раза
Поблагодарили: 467 раз
Контактная информация:

Скрипты chroot, bash

#11

10 окт 2021, 10:16

Не могу запустить Arch c одного скрипта? :hm:
В Gentoo получилась полная установка с одного скрипта, после перехода в новое окружение (chroot), bash продолжает выполнять команды скрипта, в Arch после arch-chroot переходит в новое окружение и на этом всё.
Вот команда Gentoo по переходу в chroot, в Arch не работает.

chroot /mnt/gentoo /bin/bash -c "install_gentoo_chroot"
}

install_gentoo_chroot()
{


Я вот думаю возможно в Gentoo что то прописано в bash по переходу в новое окружение,
где то они же прописывают (arch-chroot, manjaro-chroot), а так же не требуется монтирование необходимых файловых систем как в Gentoo при установке,
mount --types proc /proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --make-rslave /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
mount --make-rslave /mnt/gentoo/dev
Хотелось бы доработать скрипт Arch, чтобы устанавливался с одного скрипта, затем уже доделал бы скрип Gentoo.
Сейчас переделываю скрипт с возможностью выбора разных DE

Аватара пользователя

rogoznik
Сообщения: 10044
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1956 раз
Контактная информация:

Скрипты chroot, bash

#12

10 окт 2021, 10:27

sheridan писал(а):
10 окт 2021, 10:16
где то они же прописывают (arch-chroot, manjaro-chroot), а так же не требуется монтирование необходимых файловых систем как в Gentoo при установке,
Ты куда не туда смотришь. Вот ведь монтирование
ИзображениеИзображение

Аватара пользователя

Автор темы
sheridan
Сообщения: 1283
Зарегистрирован: 24 фев 2020, 19:13
Решено: 14
Откуда: Алчевск
Благодарил (а): 892 раза
Поблагодарили: 467 раз
Контактная информация:

Скрипты chroot, bash

#13

10 окт 2021, 10:47

rogoznik, При таком arch-chroot /mnt скрипт разваливается после перехода в (chroot), дальнейшие команды после chroot не выполняются, если делю на два скрипта первый до, второй после chroot тогда всё гладко.
Вот команда arch-chroot /mnt sh /arch2.sh

Аватара пользователя

Автор темы
sheridan
Сообщения: 1283
Зарегистрирован: 24 фев 2020, 19:13
Решено: 14
Откуда: Алчевск
Благодарил (а): 892 раза
Поблагодарили: 467 раз
Контактная информация:

Скрипты chroot, bash

#14

10 окт 2021, 12:36

Доработал скрипты по установке Arch, с возможностью выбора DE, видеокарт NVIDIA, ATI.
github.com

Аватара пользователя

Автор темы
sheridan
Сообщения: 1283
Зарегистрирован: 24 фев 2020, 19:13
Решено: 14
Откуда: Алчевск
Благодарил (а): 892 раза
Поблагодарили: 467 раз
Контактная информация:

Скрипты chroot, bash

#15

15 окт 2021, 18:39

Скрипты по установке Gentoo с DE KDE Plasma, сделал двумя скриптами так правильней, проверял на своём железе,
замечания предложения приветствуются. github

Аватара пользователя

Автор темы
sheridan
Сообщения: 1283
Зарегистрирован: 24 фев 2020, 19:13
Решено: 14
Откуда: Алчевск
Благодарил (а): 892 раза
Поблагодарили: 467 раз
Контактная информация:

Скрипты chroot, bash

#16

22 дек 2021, 16:01

Доработал скрипты по установке Arch linux, теперь ввод данных при работающем скрипте.
Спасибо за помощь :hshake: rogoznik, а так же за тестирование :ku: Whowka,
Github

Аватара пользователя

Автор темы
sheridan
Сообщения: 1283
Зарегистрирован: 24 фев 2020, 19:13
Решено: 14
Откуда: Алчевск
Благодарил (а): 892 раза
Поблагодарили: 467 раз
Контактная информация:

Скрипты chroot, bash

#17

06 июн 2022, 09:42

Для тех кто хочет установить Manjaro с скрипта, скачайте zip архив, описание по установке в ReadMe файле.
Github

Ответить

Вернуться в «Программирование, скриптинг, виртуализация»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя