Почему ядро ​​не наследует информацию о файловой системе от GRUB?

Если у вас есть список IP в файле, по одному в строке, grep уже имеет удобную опцию -f:

$ man fgrep | grep file= -A1
       -f FILE, --file=FILE
              Obtain patterns from FILE, one per line.  The empty file contains zero patterns, and therefore matches nothing.  (-f is specified by POSIX.)

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

2
13.08.2017, 12:17
2 ответа

И загрузчик (Grub ), и операционная система (Linux )имеют драйвер для файловой системы, т.е. часть кода, которая понимает такие команды, как «чтение данных из файла». Операционная система не может использовать драйвер из загрузчика, поскольку после того, как загрузчик загрузил операционную систему в память, загрузчик стирается из памяти. (А также потому, что драйвер загрузчика обычно менее эффективен, чем драйвер ОС — например, драйверы файловой системы Grub могут только читать, но не записывать.)

Монтирование файловой системы по пути /some/whereозначает, что доступ к файлам по адресу /some/whereнаправляется в эту файловую систему. Когда ядро ​​выполняет команду над именем файла (открыть, удалить, переименовать и т. д. ), оно анализирует путь к файлу, определяет, в какой файловой системе находится файл, на основе списка смонтированных в данный момент файловых систем, и отправляет запрос соответствующему драйверу. Монтирование выполняется внутри операционной системы, оно никак не влияет на аппаратное обеспечение, поэтому невозможно передать состояние монтирования из загрузчика в операционную систему.

0
27.01.2020, 22:18

Задача GRUB — загрузить ядро ​​(и initrd ), передать некоторые аргументы ядру и запустить его. Для этого он знает о разделах диска и может читать файловые системы. Монтирование файловой системы включает в себя заполнение структур данных в ядре, чтобы ядро ​​могло отслеживать структуру файловой иерархии. GRUB не является частью ядра и ничего не знает об этой иерархии. Ему говорят искать что-то в файловой системе данного раздела, но он не знает, что он будет называться /bootили куда он будет смонтирован ядром. (Хорошо, он может передать параметры ядру, говоря об этом, но на самом деле это не «знание».)

Задача GRUB состоит в том, чтобы «делать одно дело, и делать это хорошо». GRUB также не единственный загрузчик, способный запускать ядро ​​​​Linux, и даже не доступен на большинстве архитектур, поэтому ядро ​​не может зависеть от него.

1
27.01.2020, 22:18

Теги

Похожие вопросы