LINUX.ORG.RU
ФорумAdmin

Откуда система знает с чего грузиться, если нет /boot ?

 , , ,


0

1

Отношу себя к дилетантам, в связи с чем не стыжусь подобных вопросов.
В linux вроде как давно, но сегодня в очередной раз открыл для себя что-то новое и не совсем понятное, сопсна за ответом пришёл к бомонду.

На новом железе торопясь ставил ОСь, в связи с чем не совсем, но всё-таки бездумно копи/пастил с какого-то мана команды. Сейчас, наводя порядок, решил отключить ipv6 в грабе. Внёс изменения в /etc/default/grub ну и вводя команду на обновление его, табом саму команду дополняю, но после /boot ничего не дополняется. ls’ом смотрю, а там нифига нет. Открыл fstab, а результатом моего бездумного копи/паста, туда залетела команда монтирования sda1 с параметрами noauto,noatime что первым параметром говорит не монтировать автоматически. На sda1 лежат файлы ядра, инитрамфс, граб и т.п…

Вопрос - а как система грузится без всех необходимых для загрузки файлов?

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

Если у тебя EFI

Ну да! Железу лет 5, там EFI. Я читал, что рядом с EFI ставят граб для более гибкой настройки загрузки, но при установке загрузчика была команда grub-install --target=x86_64-efi --efi-directory=/boot с предварительно смонтированным /dev/sda1

Сейчас это выглядит так

lsblk 
NAME          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
sda             8:0    0 447,1G  0 disk  
├─sda1          8:1    0   384M  0 part  /boot
└─sda2          8:2    0 446,8G  0 part  
  └─root      254:0    0 446,7G  0 crypt 
    └─vg-root 254:1    0 446,7G  0 lvm   /
ls -l /boot/
итого 57576
-rwxr-xr-x 1 root root   148480 фев  5 17:57 amd-uc.img
drwxr-xr-x 3 root root     4096 фев  5 20:21 EFI
drwxr-xr-x 6 root root     4096 фев  8 19:46 grub
-rwxr-xr-x 1 root root 14557704 фев  6 06:51 initramfs-6.6.74-gentoo-x86_64.img
-rwxr-xr-x 1 root root  6392222 фев  6 06:35 System.map-6.6.74-gentoo-x86_64
-rwxr-xr-x 1 root root 11989504 фев  6 06:35 vmlinuz-6.6.74-gentoo-x86_64

EFI же на /dev/sda1, то есть его всё равно необходимо смонитровать

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

Файлы из /boot читает grub, ему не важно что написано в fstab, он это делает до запуска ядра своими силами

/boot пустой во время запуска, так как не смонтирован. Ядро на /boot (/dev/sda1). Почему загрузка происходит?

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

Для загрузки используется очевидно read only режим, и никто другой раздел не читает и не пишет в тот момент. На правах предположения, доступ там упрощен и не требует «юзерской» процедуры mount, или делает mount RO и затем un-mount

I-Love-Microsoft ★★★★★
()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)
Ответ на: комментарий от I-Love-Microsoft

Хорошо. Тогда имеет ли какую-то важность очерёдность разделов? Если я предположим расположу необходимые файлы для загрузки ОСи на /dev/sda50, а корень у меня будет в /dev/sda1. Произойдёт ли правильная загрузка ОСи?

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

Да, если grub установлен и сконфигурирован правильно.

Понимаешь, ядро грузится через grub, грузится в память целиком, после чего необходимость читать /dev/sda50 отпадает. Если граб ок, то и ядро ок.

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

Ещё раз: grub не использет fstab и ядерные монтирования для чтения своих конфигов. То что ты смотришь /boot из линукса это его содержимое по версии ядра. А у grub свой драйвер файловой системы который сам читает этот раздел. О том, какой именно раздел надо смотреть, у него где-то прописано в его собственных данных, не помню кто прописывает.

firkax ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

доступ там упрощен и не требует «юзерской» процедуры mount

grub при всём желании не может сделать никаких mount, это сисколл ядра, а ядро ещё не загружено.

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

Загрузчик работает до запуска операционной системе, для него корень - это efi раздел с которого ты грузишься (если ты конечно не решил сделать отдельный раздел под /boot как делает убунта - что в целом бессмысленно)

mittorn ★★★★★
()

про grub тебе уже в принципе всё написали. Он же и грузит initramfs.

Добавлю, что /etc/fstab это не более чем конфиг файл, который может обрабатываться различными сервисами/скриптами. Т.е. по ходу загрузки корневой и другие разделы могут неоднократно монтироваться и размонтироваться в зависимости от того, как у тебя настроена загрузка вообще и initramfs в частности.

MirandaUser2
()
Ответ на: комментарий от Shprot

grub знать не знает что такое точка монтирования linux /boot и сам linux он тоже не знает, но ему и не нужно, ему нужно только передать управление ядру linux, у него своя система для чтения устройств, ФС и прочего, но функционал ограничен само собой и поэтому придумали ещё всякие initramfs.

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

Так система или загрузчик?

Во-первых, не путать где работа загрузчика, а где работа системы.

Во-вторых. Если система, то начинать с параметра ядра «root=». Если загрузчик, то параметр тоже «root», но это совершенно другой параметр, не имеет никакого отношения к параметру ядра.

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

Если система, то начинать с параметра ядра «root=». Если загрузчик, то параметр тоже «root», но это совершенно другой параметр

Вот тут нифига не понял

GRUB_CMDLINE_LINUX="ipv6.disable=1 crypt_root=/dev/sda2 root=/dev/mapper/vg-root rootfstype=ext4 dolvm quiet"

Вот тут у меня параметр root что грузит, систему или загрузчик?
Я так полагаю что систему

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

О, а вот и свидетели efi-stub подтянулись. Давай, расскажи мне, как ты будешь менять параметры ядра для одной отдельной загрузки (там, проверить чего-нибудь понадобилось).

anonymous
()