Страница 1 из 1
Скрипты chroot, bash
Добавлено: 05 окт 2021, 16:14
sheridan
Решил я сделать для себя скрипт для установки Gentoo, что бы каждый раз при установке не стучать по клавиатуре, для Arch у меня получилось (помог спасибо
@rogoznik), так как там нет необходимости настраивать ядро вручную и для этого не требуется смена каталогов, в Gentoo всё гораздо сложней и требуется команде CD при установке с скрипта переходить в разные каталоги. Задача преследуется установка Gentoo от форматирования раздела до установки программ с перезагрузкой . Я сделал два скрипта один до chroot другой после. В программировании я пока ещё плаваю поэтому прошу вашей помощи.
gentoo.sh
gentoo2.sh
Скрипты chroot, bash
Добавлено: 05 окт 2021, 16:47
slant
Первая рекомендация - сделать первой строчкий скриптов: #!/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).
Скрипты chroot, bash
Добавлено: 05 окт 2021, 17:12
sheridan
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/, может в пути указать фактическое местоположение ядра?
Скрипты chroot, bash
Добавлено: 05 окт 2021, 18:08
slant
sheridan писал(а): ↑05 окт 2021, 17:12
Я вот ещё что думаю, папка linux это символьная ссылка
А когда и как она создавалась? Если до chroot - она становится неверной, т.к. символьная ссылка в отличии от жесткой указывает не на inode (т.е. фактический узел файловой системы), а просто содержит запись пути в текстовом виде. Может быть как абсолютной так и относительной. Т.е. там запросто может быть запись вида /mnt/gentoo/usr/src/linux-5.10.61-gentoo/ которая при переходе в chroot становится смотрящей в никуда.
В общем - делайте #!/bin/bash -x и смотрите что там в вызовах команд реально происходит.
Скрипты chroot, bash
Добавлено: 05 окт 2021, 18:26
sheridan
@slant Всё путь увидел, компиляция пошла теперь попробую с самого начала установить, это не быстро Gentoo, по окончании отпишусь. Спасибо

Скрипты chroot, bash
Добавлено: 05 окт 2021, 19:22
rogoznik
sheridan, поделись потом скриптами когда отладишь, хочу gentoo пощупать, а то в свое время не осилил установку - иксы не стартовали, вроде был косяк с драйвером видео
Скрипты chroot, bash
Добавлено: 05 окт 2021, 20:54
sheridan
rogoznik, Без проблем, ок
Скрипты chroot, bash
Добавлено: 07 окт 2021, 22:28
sheridan
Все мои вопросы для установки 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
4. Запускаем скрипт
Install_Arch_Scripts
Скрипты chroot, bash
Добавлено: 08 окт 2021, 11:33
sheridan
Ещё один момент, если у вас несколько осей, в консоли необходимо ввести эту команду
Код: Выделить всё
sudo echo "GRUB_DISABLE_OS_PROBER=false" >> /etc/default/grub
после этого обновить grub
Скрипты chroot, bash
Добавлено: 08 окт 2021, 14:06
sheridan
Отредактировал скрипты по установке Arch, также добавил Readme в архив, замечания и предложения принимаются.
Arch_install
Скрипты chroot, bash
Добавлено: 10 окт 2021, 10:16
sheridan
Не могу запустить Arch c одного скрипта?

В 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
Скрипты chroot, bash
Добавлено: 10 окт 2021, 10:27
rogoznik
sheridan писал(а): ↑10 окт 2021, 10:16
где то они же прописывают (arch-chroot, manjaro-chroot), а так же не требуется монтирование необходимых файловых систем как в Gentoo при установке,
Ты куда не туда смотришь. Вот ведь
монтирование
Скрипты chroot, bash
Добавлено: 10 окт 2021, 10:47
sheridan
rogoznik, При таком arch-chroot /mnt
скрипт разваливается после перехода в (chroot), дальнейшие команды после chroot не выполняются, если делю на два скрипта первый до, второй после chroot тогда всё гладко.
Вот команда arch-chroot /mnt sh /arch2.sh
Скрипты chroot, bash
Добавлено: 10 окт 2021, 12:36
sheridan
Доработал скрипты по установке Arch, с возможностью выбора DE, видеокарт NVIDIA, ATI.
github.com
Скрипты chroot, bash
Добавлено: 15 окт 2021, 18:39
sheridan
Скрипты по установке Gentoo с DE KDE Plasma, сделал двумя скриптами так правильней, проверял на своём железе,
замечания предложения приветствуются.
github
Скрипты chroot, bash
Добавлено: 22 дек 2021, 16:01
sheridan
Доработал скрипты по установке Arch linux, теперь ввод данных при работающем скрипте.
Спасибо за помощь
rogoznik, а так же за тестирование
Whowka,
Github
Скрипты chroot, bash
Добавлено: 06 июн 2022, 09:42
sheridan
Для тех кто хочет установить Manjaro с скрипта, скачайте zip архив, описание по установке в ReadMe файле.
Github