LINUX.ORG.RU

Как после chroot вызвать бинарники, находящиеся в основной системе?

 ,


0

2

Привет, народ.

Загрузился с System Rescue Cd. И нужно мне выполнить команду efibootmgr, и она есть на загруженном CD-Rom диске. Но чтобы она выполнилась, надо через chroot переключиться на каталог /mnt/sda3, куда смонтирована система, установленная на жестком диске.

Проблема в том, что в этой операционке нет efibootmgr. И после переключения через chroot, утилита efibootmgr становится недоступной.

Вопрос: есть ли возможность после chroot вызывать утилиты, находящиеся в основной загруженной системе?

★★★★★

А ты точно уверен, что тебе нужно входить в chroot? Насколько я знаю, просмотреть текущие записи в UEFI или создать новую можно и без этого.

Но если очень нужно, то просто в chroot поставь эту утилиту пакетным менеджером.

Vsevolod-linuxoid ★★★★★
()

XY-problem

Но чтобы она выполнилась, надо через chroot переключиться на каталог /mnt/sda3, куда смонтирована система, установленная на жестком диске.

Че это вдруг.

есть ли возможность после chroot вызывать утилиты, находящиеся в основной загруженной системе?

Есть, ты можешь, например, намонтировать наружную систему внутрь перед чрутом и устроить чрутценпшн.

Знать бы, только, нафига.

t184256 ★★★★★
()
Ответ на: комментарий от Dimez

Я не совсем понимаю, почему в chroot не работает ls, cat но при этом работает mc. Причем по номеру версии mc я вижу, что это именно тот mc, который в файловой системе, на которую производится переключение в chroot.

Xintrea ★★★★★
() автор топика

Может проще описать, что сломалось в основной системе, раз потребовался чрут со сторонним CD? Возможно именно это приблизит решение.

krasnh ★★★
()
Последнее исправление: krasnh (всего исправлений: 2)

Когда-то давно чтобы починить загрузчик нужно было загрузиться с live cd, смонтировать повреждённую систему и сделать chroot. Но кроме этого нужно было также смонтировать в точку монтирования такие каталоги как /dev, /proc и возможно что-то ещё. После этого в chroot были устройства и запускались программы. Правда это утерянные технологии древних. Нужно искать про восстановление grub или даже lilo.

sin_a ★★★★★
()

Загрузился с System Rescue Cd

Этот дистр на базе ArchLinux. А в арче вместо chroot используется arch-chroot.

Не знаю, насколько эта информация является определяющей. )

upd.

Скрипт bash arch-chroot(8) является частью пакета arch-install-scripts. arch-chroot обертывает команду chroot(1), обеспечивая при этом доступность важной функциональности, например, монтирования /dev, /proc и другие файловые системы API, или предоставление /etc/resolv.conf к корню ch. 

krasnh ★★★
()
Последнее исправление: krasnh (всего исправлений: 2)
Ответ на: комментарий от ox55ff

Не работают это как? Они у тебя в path добавлены?

Вот так, не работают.

bash: ls: command not found

С cat та же самая байда. При этом mc работает.

Я чрутюсь на корневую файловую систему дистрибутива, который на HDD находится. Бинарники ls и cat в этой файловой системе лежат там где должны лежать, т. е. /bin/ls и /bin/cat. В переменной PATH после chroot есть путь ...:/bin:... Что еще нужно, я не понимаю.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от undef

efibootmgr смотрит/правит содержимое фирмвари. В чем принципиальная необходимость запускать ее из чрута?

Я тоже этого не понимаю. Но я подумал, что чтобы efibootmgr правильно находил файлы ядер и видел структуру, чтоб потом эти данные записывать в фирмварь, его надо запускать в файловом окружении той системы, которая должна грузиться. А я с Live-CD загрузился, значит мне нужно было чрутнуться на HDD диск.

https://unix.stackexchange.com/questions/91620/efi-variables-are-not-supporte...

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Но я подумал, что чтобы efibootmgr правильно находил файлы ядер и видел структуру, чтоб потом эти данные записывать в фирмварь, его надо запускать в файловом окружении той системы, которая должна грузиться.

Куда-то не в ту сторону ты подумал. Если efibootmgr и нужен какой-то раздел, то это EFI-раздел, и то только для создания новых записей, (и то не уверен). Так что кроме EFI-раздела и efivars ему должно быть ничего не надо.

t184256 ★★★★★
()
Ответ на: комментарий от Xintrea

правильно находил файлы ядер

efibootmgr ничего не находит, он просто прописывает переменные загрузки в efivars. Ты можешь руками сделать загрузочную запись на существующий (или даже несуществующий) efi-файл, он безусловно его пропишет.

Dimez ★★★★★
()
Ответ на: комментарий от krasnh

Этот дистр на базе ArchLinux. А в арче вместо chroot используется arch-chroot.

Не знаю, насколько эта информация является определяющей. )

Не путвйте народ. Есть там chroot и работает штатно.

utanho ★★★★★
()
Ответ на: комментарий от utanho

Есть там chroot

Конечно есть и никто не утверждает обратного. Но в доках SystemRescueCD прописан именно arch-chroot, Chapter 13: How to Fix LinuxSystems Using chroot.

Next, create a mount point named linux and mount the Fedora
Linux root file system there:
[root@sysrescue ~]# mkdir -p /mnt/linux
[root@sysrescue ~]# mount /dev/sdc7 /mnt/linux

Now you are ready to use arch-chroot to change the current
context:
[root@sysrescue ~]# arch-chroot /mnt/linux

You can confirm that the context has been successfully changed as
files belonging to Fedora are accessible without having to specify
the mount point as a prefix.
[root@sysrescue /]# cat /etc/fedora-release
Fedora release 33 (Thirty Three)



Лишь повторюсь:

Не знаю, насколько эта информация является определяющей. )

krasnh ★★★
()