Не удалось найти ядро ​​в корневом каталоге

Не так быстро, но в zsh (а может, в bash?) Есть эта функция под названием fc , я не уверен, что она обозначает, но если вы ее наберете, она, похоже, откроет команду в каким бы ни был ваш $ EDITOR .

Или, может быть, вы могли бы сделать историю | хвост -1 >> файл .

С точки зрения выполнения heredoc в одну строку, это:

~$ echo -e "cat << EOF\nhello\n12345\nEOF\n" | sh
hello
12345

- самое близкое, что я могу придумать.

0
02.01.2019, 07:11
2 ответа

В CentOS 7 ядро ​​по умолчанию находится в каталоге /boot. Это место будет указано в файле конфигурации загрузчика GRUB2. Расположение файла конфигурации GRUB2 — /etc/grub2.cfg. Это символическая ссылка на фактический файл конфигурации, расположение которого зависит от используемой прошивки (BIOS/UEFI ).

В конфигурационном файле GRUB2 вы найдете раздел «меню» для каждого ядра, на загрузку которого настроена ваша система. Внутри каждой строфы найдите переменную root. Пример из моей системы следующий:

set root='hd0,msdos1'

Приведенная выше переменная указывает первый раздел на первом диске с разделами MBR -. В моей системе это соответствует /dev/sda1, который монтируется как раздел /boot.

Продолжая работу в том же разделе меню, вы должны увидеть строку, начинающуюся с «linux16» или «linuxefi». Сразу за этим ключевым словом следует путь к ядру (относительно корневого каталога, указанного ранее ). Например:

linux16 /vmlinuz-3.10.0-693.el7.x86_64...

В вашей системе это будет один из файлов 'vmlinuz -*', которые вы видели в выводе ls /boot. Это ядра, установленные в настоящее время в вашей системе.

0
28.01.2020, 02:23

vmunixбыло/является традиционным именем файла ядра в нескольких операционных системах Unix.

В Linux это значение было изменено на vmlinux, а затем на vmlinuz, когда было добавлено сжатие файлов ядра.

Обычно файл ядра мог находиться в корневом каталоге, а в некоторых дистрибутивах Linux по-прежнему можно увидеть символическую ссылку /vmlinuzи /vmlinuz.old, указывающую на текущую и предыдущую версии ядра соответственно. Но современные загрузчики могут легко обрабатывать более двух версий ядра, и соглашение эволюционировало до использования /boot/vmlinuz-<kernel version number>.

Когда размеры дисков увеличились и адресация логических блоков стала нормой для дисков IDE (в период с 1994 по 2003 год ), BIOS систем до -1994 года не всегда поддерживали LBA и поэтому могли получить доступ к только первые 528 МБ или около того, пока не запустится операционная система с поддержкой LBA -. В результате было важно иметь возможность размещать файлы, необходимые для самых ранних фаз загрузки -, вплоть до отдельного небольшого раздела, который мог бы гарантированно находиться в самом начале диска. В Linux это привело к соглашению о файловой системе /boot.

В двух словах, у вас будет возможность создать /bootкак отдельную файловую систему, которая будет содержать только ядро ​​и файлы initrd/ initramfsтекущей и любых предыдущих резервных версий ядра, а также любые файлы самому загрузчику может понадобиться (чаще всего каталог /boot/grub).

Хотя все современные системы понимают LBA как нечто само собой разумеющееся, /bootсоглашение о файловой системе живет,так как его также можно использовать для загрузки системы, даже если корневая файловая система принимает форму, совершенно не распознаваемую системной прошивкой, например:

  • зашифрованная корневая файловая система,
  • корневая файловая система на Linux LVM (легко расширяемая за пределы любого отдельного диска, если это необходимо, даже в строке -),
  • корневая файловая система на программном наборе RAID0 или RAID5 (не обязательно хорошая идея для корневой файловой системы, если у вас нет особых требований)
  • или корневая файловая система на многотомном -томе ZFS или наборе BtrFS.

Некоторые системные микропрограммы включают встроенную -проверку существования распознаваемого загрузочного раздела перед попыткой загрузки с жесткого диска, даже если фактический загрузчик может загружаться с другого -] традиционные схемы дисков.

3
28.01.2020, 02:23

Теги

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