LINUX.ORG.RU

Автоматический поиск загрузочного раздела ядром

 


0

1

Приветствую.

Подскажите, можно ли поставить ядру при компиляции какую-нибудь опцию, чтобы оно само искало загрузочный раздел так, как это реализовано в android ?

★★★★★
Ответ на: комментарий от admucher

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

Нет. Ну или может быть я не так выразился.

Ядро передает управление иниту с рутфс. Ядро может быть загружено с fat32 раздела №2, а рутфс на ext4 разделе №7, которое указывается в параметрах загрузки ядра root=/dev/sda7 ну или через uuid, неважно.

В андроиде ядро само определяет где находится андроид, и грузит инит оттуда.

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

На самом деле рутфс монтируется не ядром в initramfs. А initramfs это скрипты. Можешь их переписать как тебе нужно. Впрочем что именно ты хочешь я не понял - перебирать все разделы по очереди в поисках на их чего-то? Чего? /bin/sh ? /sbin/init ?

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от windows10

Ну или может быть я не так выразился.

Скорее это, т.к. обычно под загрузочным разделом понимают условный /boot, в котором и лежит ядро, соответственно оно само себя найти и загрузить не может)

Если не ошибаюсь, то GRUB запускает ядро с параметром пути root=. Вот я бы в эту сторону копал. Как там в UEFI без понятия

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

https://wiki.archlinux.org/title/Persistent_block_device_naming_(Русский)

Статья про то «как использовать постоянные имена для ваших блочных устройств», а мне нужно про автоматический поиск рутфс.

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

На самом деле рутфс монтируется не ядром в initramfs. А initramfs это скрипты. Можешь их переписать как тебе нужно. Впрочем что именно ты хочешь я не понял - перебирать все разделы по очереди в поисках на их чего-то? Чего? /bin/sh ? /sbin/init ?

Наверное «перебирать». Я честно говоря не знаю как оно организовано.

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

Думал есть какая-то опция в ядре чтобы перебирать разделы на предмет /sbin/init

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

Согласен, заведомо невозможно сделать то, чего человек сам не знает, что.

Что конкретно тебе неясно из слов в топике ?

Что такое «ядро» ? Что такое «загрузочный раздел \ рутфс» ?

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

Если не ошибаюсь, то GRUB запускает ядро с параметром пути root=. Вот я бы в эту сторону копал. Как там в UEFI без понятия

Вот мне и нужно, чтобы root= не нужно было указывать.

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

В ядре нет такой опции

Если хочешь костылить патч, то ему придётся монтировать каждый раздел и искать на нём какие-то признаки системы, это будет очень долго. Через метку раздела будет быстрее, но Линуксы никаких таких меток не используют.

alex1101
()
Ответ на: комментарий от uwuwuu

правильное название темы: автоматический поиск ядром КОРНЕВОГО раздела.

и не чипсет ищет… уефи этож прошивка. где прошивка эта записана? во флеш памяти… можно ли вообще говорить так? короче: прошивка материнки, хотя и процессор как и чипсет матери - всего лишь камни без по

uwuwuu
()
Последнее исправление: uwuwuu (всего исправлений: 1)
Ответ на: комментарий от windows10

Скажем так, Андроид может телепатически, и может Винда.

Думал что линуксовое тоже умеет так.

Есть дистрибутивы Линукса, которые тоже находят рутфс «телепатически» – т.е. поиском заданного файла перебором всем имеющихся разделов. Так ведут себя live дистрибутивы Slax, Porteus, Puppyrus и аналогичные по умолчанию, т.к. заранее не известно к какому устройству будет примонтирована флешка.
В Убунте можно включить поиск опцией boot=casper, в Федоре тоже есть аналогичный механизм. Т.е. механизм поиска активизируется неким флагом в опциях ядра (который самому ядру непонятен и просто передается далее). А вот затем в стартовых скриптах проверяется наличие этого флага и алгоритм поиска рутфс меняется.
Дело в том, что ядро ничего само не ищет, а загружает в память и начинает выполнять указанный в initrd= образ временной корневой системы initramfs.img Собственно здесь и находятся стартовые скрипты, в которых прописан алгоритм поиска и подготовки реального корневого раздела, на который затем происходит переключение системным вызовом pivot_root

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

У линуксового рут-раздела в общем случае нет никаких особенных опознавательных признаков. С другой стороны, этих рут-разделов может быть несколько. Так что задача всё равно сводится к тому, чтобы выбрать, какой именно опознавательный признак ты хочешь использовать.

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

ТСу для начала было бы неплохо сформулировать, чем его не устраивает монтирование раздела по метке раздела.

И вообще хоть как-то прояснить ТЗ, прежде чем что-либо колхозить.

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

ТСу для начала было бы неплохо сформулировать, чем его не устраивает монтирование раздела по метке раздела.

Нет, этого я делать не стану, потому что меня интересует именно то, что я написал в топике, а не решения вопросов по неустраиванию монтирования.

Ну а вообще - unable to mount rootfs конечно же =)

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