Как Linux / xBSD загружался до GRUB?

Каждая часть конвейера (т.е. каждая сторона конвейера) выполняется в отдельном процессе (называемом подоболочкой, когда оболочка разветвляет подпроцесс для запуска часть сценария). В par_set PIPE FAILS | sed -e's / FAILS / BARFS / ' переменная PIPE устанавливается в подпроцессе, который выполняет левую часть конвейера. Это изменение не отражается в родительском процессе (переменные среды не передаются между процессами, они наследуются только подпроцессами.

Левая часть конвейера всегда выполняется в подоболочке. Некоторые оболочки (ATT ksh, zsh) запускать правую часть в родительских оболочках; большинство также запускают правую часть в подоболочке.

Если вы хотите как перенаправить вывод части сценария, так и запустить эту часть в родительской оболочке, в ksh / bash / zsh, вы можете использовать замену процесса .

par_set PROCESS SUBSTITUTION > >(sed s/ION/ED/)

С любой оболочкой POSIX вы можете перенаправить вывод в именованный канал.

mkfifo f
f

О, и вам не хватает кавычек вокруг подстановок переменных , ваш код разбивается на такие вещи, как par_set name 'значение' с пробелами 'звездочка' * '.

export "${PAR}=${VAL}"
…
par_set "$@"

23
08.01.2019, 05:55
5 ответов

Вплоть до середины ядра 2.6 ядро ​​x86 можно было загрузить напрямую, если скопировать на дискету (, как если бы это был образ диска ).

Фактически это был первоначальный способ загрузки Linux.

Если вы сегодня посмотрите на заголовок ядра x86, то увидите сообщение об ошибке, в котором говорится, что загрузка с таких дискет больше не работает.

12
27.01.2020, 19:41

А до появления LILO и GRUB его приходилось запускать из командной строки с помощью какой-то специальной утилиты загрузчика.

Например, для Amiga был доступен Linux. Вам пришлось использовать утилиту командной строки под названием amiboot, чтобы загрузить ELF ядра в память и перейти к нему.

Вот видео, на котором кто-то использует amiboot из командной строки для запуска Linux на Amiga 600 . Его скрипт StartInstall вызывает исполняемый файл amiboot. Вы можете посмотреть, как amiboot настраивает память, определяет желаемый адрес загрузки и передает параметры ядру примерно на 0 :55.

0
27.01.2020, 19:41

Я начал с Linux в конце 90-х и, как уже упоминалось, liloстоял по умолчанию. Если вы хотите выполнить двойную загрузку с системой DOS, вы можете выполнить чистую загрузку, не загружая ничего в HIMEM или загружая драйверы компакт-дисков и т. д., и использовать loadlin. Для двойной загрузки Win95 вы можете сначала сделать диск загружаемым с DOS, затем установить '95, а загрузчик '95 позволит вам по-прежнему загружать ядро ​​​​DOS, а затем вы можете использовать loadlin.

Для двойной загрузки с NT4 хитрость заключалась в том, чтобы записать LILO в раздел /, затем удалить первые 512 байтов, используя dd(dd if=/dev/sda2 of=/path/to/file bs=512 count=1), и поместить полученный файл туда, где ntldrмог его увидеть, и вы могли его использовать. из загрузчика WinNT. Проблема с этим заключается в том, что когда вы обновляли ядро, вам нужно было не забыть повторить все шаги перед перезагрузкой, иначе у вас возникнут проблемы с возвращением в систему Linux. Тот же процесс работал с Win2k.

В LILO каждый раз, когда обновлялось ядро, вы должны были помнить об обновлении LILO.

С loadlinпри каждом обновлении ядра вы должны были не забывать копировать ядро ​​в раздел DOS.

Еще один вариант, на который намекают в других ответах, заключался в том, чтобы записать ядро ​​​​непосредственно на дискету с помощью dd if=/path/to/vmlinuz of=/dev/fd0, НО корневое устройство должно было быть правильно установлено в ядре либо во время компиляции, либо с помощью rdevполезность.

Когда появился GRUB, было много радости, потому что вам больше не нужно было помнить об обновлении LILO или обновлении LILO и повторно -удалять загрузочную информацию и т. д. Больше не нужно отвлекаться от вашей системы Linux. потому что вы забыли обновить информацию о загрузчике...

5
27.01.2020, 19:41

LILO был фактическим -стандартом для загрузки Linux на ПК до того, как Grub, с самого раннего этапа, (MCC, один из первых дистрибутивов Linux, использовал его ). Одновременно использовались различные другие загрузчики. Loadlin был довольно распространенным явлением; он загружал Linux из DOS и даже использовался в некоторых конфигурациях сumsdosдля размещения среды Linux в файловой системе DOS... Другая распространенная конфигурация вообще не включала загрузчик :, из которого ядро ​​могло загружаться. дискету, и у большинства пользователей Linux была известная -хорошая пара «загрузочных и корневых» дискет, одна из которых содержала ядро, а другая базовую корневую файловую систему для целей восстановления.

Было несколько способов использовать загрузчики других операционных систем для загрузки Linux; например, менеджер загрузки OS/2 или NTLDR Windows NT.

В других системах были свои загрузчики:

  • SILO на SPARC (Рабочие станции Sun и другие );
  • PALO на PA -RISC (Рабочие станции HP );
  • YaBoot и Quik на PowerPC;
  • aBoot и MILO на Alpha...

Даже сейчас Grub — не единственный загрузчик, который вы можете увидеть. Хотя загрузка ядра напрямую с дискеты больше не очень полезна (, я не проверял, возможно ли это, предполагая, что вы можете собрать ядро, достаточно маленькое, чтобы поместиться на дискете ), оно может загружаться напрямую с EFI (, которая фактически является собственной небольшой операционной системой, предназначенной для загрузки других операционных систем, как и Grub ). Во многих небольших системах (встроенных системах, одноплатных -компьютерах... )вы найдете U -Boot . (А также слой EFI для U -Boot .)

30
27.01.2020, 19:41

Первый дистрибутив Linux, который я использовал еще в 90-х годах(Slackware 3.0IIRC ), использовал LILO в качестве загрузчика. И многие дистрибутивы годами использовали LILO, даже когда GRUBстановился загрузчиком «по умолчанию».

Более того, в ранние годы Linux было обычным делом загружать Linux из другой ОС (, то есть из DOS или Windows ), вместо того, чтобы полагаться на загрузчик/двойную загрузку. Например, был loadlin .

Не забывайте Syslinux , который представляет собой более простой загрузчик, часто используемый для самозагружаемых -дистрибутивов для установки/восстановления USB. Или Isolinux(из того же проекта ), который используется во многих «живых» дистрибутивах.

Имейте в виду, что сегодня GRUBможно использовать для загрузки многих операционных систем, в то время как LILOбыл более ограниченным и специально предназначен для Linux (, т.е. LInux LOader ), с некоторой поддержкой двойной загрузки для Окна.
GRUBочень удобен для двойной/мульти-загрузки из-за множества настраиваемых параметров, возможностей сценариев и т. д.
Если вы просто хотите, чтобы на вашем компьютере была только одна ОС, «любой» (, т. е. любой загрузчик, установленный по умолчанию для вашего дистрибутива Linux/BSD ), должно быть достаточно.

52
27.01.2020, 19:41

Теги

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