Скрипты 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 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
-
Автор темы - Сообщения: 1279
- Зарегистрирован: 24 фев 2020, 19:13
- Решено: 14
- Откуда: Алчевск
- Благодарил (а): 892 раза
- Поблагодарили: 467 раз
- Контактная информация:
Скрипты chroot, bash
Решил я сделать для себя скрипт для установки Gentoo, что бы каждый раз при установке не стучать по клавиатуре, для Arch у меня получилось (помог спасибо @rogoznik), так как там нет необходимости настраивать ядро вручную и для этого не требуется смена каталогов, в Gentoo всё гораздо сложней и требуется команде CD при установке с скрипта переходить в разные каталоги. Задача преследуется установка Gentoo от форматирования раздела до установки программ с перезагрузкой . Я сделал два скрипта один до chroot другой после. В программировании я пока ещё плаваю поэтому прошу вашей помощи.
gentoo.sh
gentoo2.sh
gentoo.sh
gentoo2.sh
-
- Сообщения: 4503
- Зарегистрирован: 21 июн 2017, 18:09
- Решено: 98
- Благодарил (а): 51 раз
- Поблагодарили: 1992 раза
- Контактная информация:
Скрипты chroot, bash
Первая рекомендация - сделать первой строчкий скриптов:
Это позволит лучше видеть команды которые выполняются, вместе с подстановкой значения переменных.
Второе:
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).
#!/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).
-
Автор темы - Сообщения: 1279
- Зарегистрирован: 24 фев 2020, 19:13
- Решено: 14
- Откуда: Алчевск
- Благодарил (а): 892 раза
- Поблагодарили: 467 раз
- Контактная информация:
Скрипты chroot, bash
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/, может в пути указать фактическое местоположение ядра?
Я вот ещё что думаю, папка linux это символьная ссылка на ядро которое находится по пути /usr/src/linux-5.10.61-gentoo/, может в пути указать фактическое местоположение ядра?
Последний раз редактировалось пользователем 1 sheridan; всего редактировалось раз: 5
-
- Сообщения: 4503
- Зарегистрирован: 21 июн 2017, 18:09
- Решено: 98
- Благодарил (а): 51 раз
- Поблагодарили: 1992 раза
- Контактная информация:
Скрипты chroot, bash
А когда и как она создавалась? Если до chroot - она становится неверной, т.к. символьная ссылка в отличии от жесткой указывает не на inode (т.е. фактический узел файловой системы), а просто содержит запись пути в текстовом виде. Может быть как абсолютной так и относительной. Т.е. там запросто может быть запись вида /mnt/gentoo/usr/src/linux-5.10.61-gentoo/ которая при переходе в chroot становится смотрящей в никуда.
В общем - делайте #!/bin/bash -x и смотрите что там в вызовах команд реально происходит.
-
Автор темы - Сообщения: 1279
- Зарегистрирован: 24 фев 2020, 19:13
- Решено: 14
- Откуда: Алчевск
- Благодарил (а): 892 раза
- Поблагодарили: 467 раз
- Контактная информация:
Скрипты chroot, bash
@slant Всё путь увидел, компиляция пошла теперь попробую с самого начала установить, это не быстро Gentoo, по окончании отпишусь. Спасибо
-
- Сообщения: 10038
- Зарегистрирован: 27 июн 2017, 13:36
- Решено: 129
- Откуда: Нижний Тагил
- Благодарил (а): 776 раз
- Поблагодарили: 1956 раз
- Контактная информация:
Скрипты chroot, bash
sheridan, поделись потом скриптами когда отладишь, хочу gentoo пощупать, а то в свое время не осилил установку - иксы не стартовали, вроде был косяк с драйвером видео
-
Автор темы - Сообщения: 1279
- Зарегистрирован: 24 фев 2020, 19:13
- Решено: 14
- Откуда: Алчевск
- Благодарил (а): 892 раза
- Поблагодарили: 467 раз
- Контактная информация:
Скрипты chroot, bash
Все мои вопросы для установки Gentoo c скрипта решены, проверил работает с одного скрипта, ошибки были но об этом позже, скрипт на стадии доработки.
Хотел вам предложить мой скрипт по установке Arch Linux.
Он сделан для видеокарт Nvidia, есть возможность установки разных ядер (DEFAULT, ZEN, LTS), а так же подстановки своих разделов для форматирования и монтирования.
ВНИМАНИЕ!
Не запускайте скрипты сразу так как там указаны мои разделы, внимательно изучите куда подставлять данные.
Для тех у кого стоит на флешке программа VENTOY, рекомендую записывать скрипт во второй раздел ventoy.
Для этого необходимо смонтировать второй раздел,
пример: (подставляете свой раздел)
mount /sdb2 /mnt затем скопировать в /mnt первый скрипт (arch.sh),
второй скрипт должен лежать в дополнительном разделе который вы смонтируете при установке, что бы затем скопировать в корень устанавливаемой системы, в моём случае
1. Загружаемся с установочного диска Arch
2. Создаём папку для монтирования второго раздела Ventoy
3. Монтируем второй раздел Ventoy
4. Запускаем скрипт
Install_Arch_Scripts
Хотел вам предложить мой скрипт по установке 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
Код: Выделить всё
/1/arch.sh
-
Автор темы - Сообщения: 1279
- Зарегистрирован: 24 фев 2020, 19:13
- Решено: 14
- Откуда: Алчевск
- Благодарил (а): 892 раза
- Поблагодарили: 467 раз
- Контактная информация:
Скрипты chroot, bash
Ещё один момент, если у вас несколько осей, в консоли необходимо ввести эту команду после этого обновить grub
Код: Выделить всё
sudo echo "GRUB_DISABLE_OS_PROBER=false" >> /etc/default/grub
Код: Выделить всё
sudo grub-mkconfig -o /boot/grub/grub.cfg
-
Автор темы - Сообщения: 1279
- Зарегистрирован: 24 фев 2020, 19:13
- Решено: 14
- Откуда: Алчевск
- Благодарил (а): 892 раза
- Поблагодарили: 467 раз
- Контактная информация:
Скрипты chroot, bash
Отредактировал скрипты по установке Arch, также добавил Readme в архив, замечания и предложения принимаются.
Arch_install
Arch_install
-
Автор темы - Сообщения: 1279
- Зарегистрирован: 24 фев 2020, 19:13
- Решено: 14
- Откуда: Алчевск
- Благодарил (а): 892 раза
- Поблагодарили: 467 раз
- Контактная информация:
Скрипты chroot, bash
Не могу запустить Arch c одного скрипта?
В Gentoo получилась полная установка с одного скрипта, после перехода в новое окружение (chroot), bash продолжает выполнять команды скрипта, в Arch после arch-chroot переходит в новое окружение и на этом всё.
Вот команда Gentoo по переходу в chroot, в Arch не работает.
Я вот думаю возможно в 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
В 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
-
- Сообщения: 10038
- Зарегистрирован: 27 июн 2017, 13:36
- Решено: 129
- Откуда: Нижний Тагил
- Благодарил (а): 776 раз
- Поблагодарили: 1956 раз
- Контактная информация:
-
Автор темы - Сообщения: 1279
- Зарегистрирован: 24 фев 2020, 19:13
- Решено: 14
- Откуда: Алчевск
- Благодарил (а): 892 раза
- Поблагодарили: 467 раз
- Контактная информация:
Скрипты chroot, bash
rogoznik, При таком
Вот команда
arch-chroot /mnt
скрипт разваливается после перехода в (chroot), дальнейшие команды после chroot не выполняются, если делю на два скрипта первый до, второй после chroot тогда всё гладко.Вот команда
arch-chroot /mnt sh /arch2.sh
-
Автор темы - Сообщения: 1279
- Зарегистрирован: 24 фев 2020, 19:13
- Решено: 14
- Откуда: Алчевск
- Благодарил (а): 892 раза
- Поблагодарили: 467 раз
- Контактная информация:
Скрипты chroot, bash
Доработал скрипты по установке Arch, с возможностью выбора DE, видеокарт NVIDIA, ATI.
github.com
github.com
-
Автор темы - Сообщения: 1279
- Зарегистрирован: 24 фев 2020, 19:13
- Решено: 14
- Откуда: Алчевск
- Благодарил (а): 892 раза
- Поблагодарили: 467 раз
- Контактная информация:
Скрипты chroot, bash
Скрипты по установке Gentoo с DE KDE Plasma, сделал двумя скриптами так правильней, проверял на своём железе,
замечания предложения приветствуются. github
замечания предложения приветствуются. github
-
Автор темы - Сообщения: 1279
- Зарегистрирован: 24 фев 2020, 19:13
- Решено: 14
- Откуда: Алчевск
- Благодарил (а): 892 раза
- Поблагодарили: 467 раз
- Контактная информация:
Скрипты chroot, bash
Доработал скрипты по установке Arch linux, теперь ввод данных при работающем скрипте.
Спасибо за помощь rogoznik, а так же за тестирование Whowka,
Github
Спасибо за помощь rogoznik, а так же за тестирование Whowka,
Github
-
Автор темы - Сообщения: 1279
- Зарегистрирован: 24 фев 2020, 19:13
- Решено: 14
- Откуда: Алчевск
- Благодарил (а): 892 раза
- Поблагодарили: 467 раз
- Контактная информация:
Скрипты chroot, bash
Для тех кто хочет установить Manjaro с скрипта, скачайте zip архив, описание по установке в ReadMe файле.
Github
Github
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя