Comments 87
Ну скажем прямо — так грузятся далеко не все дистры.
Та же Slackware, например.
И Gentoo.
Поделитесь, пожалуйста, как организовано в генту.
Папки уровней запуска по другому называются и инструмент для управления уровнями удобный есть.
Те же яйца, только в профиль. )
Те же яйца, только в профиль. )
Спасибо. Кстати, на счет инструмента, то и в убунте есть ГУИ для этих целей.
А как этот GUI вызвать?
Можете взглянуть на rcconf, sysv-rc-conf и bum — все они позволяют манипулировать скриптами в /etc/rc?.d. Два первые можно запускать без графисечкой среды (требуется наличие ncurses), а bum — GTK-тулза, правда у меня с ней были проблемы при отображении UTF-8, а я с ней играться не имел желания.
Не совсем те же яйца, там еще есть управление зависимостями сервисов, то есть sshd, например, раньше сети не запустится. Это по-моему гораздо удобнее, чем распихивать скрипты по разным папкам с номерами.
Еще хочется сделать замечание по поводу MBR, первого сектора и пр. Все несколько усложнилось за последние годы. Сейчас уместней говорить о EFI.
«GUID Partition Table (GPT) является стандартным форматом размещения таблиц разделов на физическом жестком диске. Он является частью Extensible Firmware Interface (EFI) (Расширяемый Микропрограммный Интерфейс) — стандарта, предложенного Intel на смену отжившего BIOS, одного из последних реликтов первозданной IBM PC. EFI использует GPT там, где BIOS использует Главную загрузочную запись (MBR)....» (википедия)
«GUID Partition Table (GPT) является стандартным форматом размещения таблиц разделов на физическом жестком диске. Он является частью Extensible Firmware Interface (EFI) (Расширяемый Микропрограммный Интерфейс) — стандарта, предложенного Intel на смену отжившего BIOS, одного из последних реликтов первозданной IBM PC. EFI использует GPT там, где BIOS использует Главную загрузочную запись (MBR)....» (википедия)
Загрузка какого дитрибутива не проходит хотябы один из этих 6 уровней?
У слаквари нету rc.d скриптов. Точнее, они оставлены только для совместимости.
Все уровни могут использоваться как для загрузки, так и для выгрузки. Зависит от первой буковки — K=kill, S=start. Далее идёт приоритет, а далее, собственно, имя скрипта из /etc/init.d, который этим линком вызывается. (Может быть и не линк, а скрипт). В любом случае, действие определяет первый символ, а не уровень выполнения (runlevel).
$ ls -1 /etc/rc1.d
…
K05anacron
…
S13cpuspeed
…
Так что не сбивайте народ с «пути истинного». :)
PS. Не для всех дистрибутивов верно. Верно, если мне не изменяет память, для систем построенных на основе SystemV.
$ ls -1 /etc/rc1.d
…
K05anacron
…
S13cpuspeed
…
Так что не сбивайте народ с «пути истинного». :)
PS. Не для всех дистрибутивов верно. Верно, если мне не изменяет память, для систем построенных на основе SystemV.
> Некоторые уровни не для загрузки, а для «выгрузки»
Ваши слова? Вот на это я и ответил, что любой уровень может использоваться как для загрузки, так и для выгрузки. И именно это имел ввиду, говоря «не сбивайте народ с «пути истинного»
Ваши слова? Вот на это я и ответил, что любой уровень может использоваться как для загрузки, так и для выгрузки. И именно это имел ввиду, говоря «не сбивайте народ с «пути истинного»
Ядро можно скомпилировать без initrd.
Ну да, есть еще bsd-style init.
Кстати никогда не понимал ранлевелов.
Кстати никогда не понимал ранлевелов.
Ну скажем прямо — здесь описаны не все дистрибутивы, а обобщенная схема загрузки операционки.
Кроме того смысл скриптов rc.d ( как бы они не назывались ) — обеспечение различных схем инициализации системы ( читать: «загрузка разных модулей и подготовка различного окружения» ) в зависимости от ранлевела.
И не важно какая схема инициализации используется, все равно подход остается тем же — разное окружение для различных условий.
Кроме того смысл скриптов rc.d ( как бы они не назывались ) — обеспечение различных схем инициализации системы ( читать: «загрузка разных модулей и подготовка различного окружения» ) в зависимости от ранлевела.
И не важно какая схема инициализации используется, все равно подход остается тем же — разное окружение для различных условий.
Понимаю, что вопрос глупый, но, думаю, он не у одного меня.
А в Windows оно как? И MacOS? Любопытно просто.
А в Windows оно как? И MacOS? Любопытно просто.
Гугл — спаситель человечества.
Откуда Вы знаете, что далее, если дальше не читали?
И да, наверное таки стоит почитать. Ибо MBR — это кусок исполняемого кода, другими словами — это программа, а не просто указатель.
И да, наверное таки стоит почитать. Ибо MBR — это кусок исполняемого кода, другими словами — это программа, а не просто указатель.
Я почему-то предполагал, что в MBR хранится «указатель», кому передать управление дальше…Ну, значит, ошибались.
Никакой логики нет в этом тем более. Кто тогда этот указатель использует то? Компьютер не может работать сам по себе, не выполняя всё время какой-то код. И BIOS не читает MBR, он подгружает его на предопределённое место и передаёт туда управление. Это всегда так было и это отнюдь не секретная информация, не пойму чего тут спорить то…
А, на счет POST — это часть функционала BIOS'а. Никто ничего никому не передает :)
Пожалуй, таки упомину о нем.
Пожалуй, таки упомину о нем.
MBR как раз таки передает управление конкретному загрузчику, установщик которого (grub-install, syslinux, bootsect) туда этот самый MBR и записал.
Ну, можно было бы еще и про LILO написать, хоть он и старый, но все же.
BIOS (и не упомянутый тут (U)EFI) прежде всего занимается инициализацией устройств (в том числе загрузку собственных биосов PCI-устройств), про это ничего не написано. Хотя эта роль постепенно сокращается, так как всё больше железа инициализирует себя само и/или поддерживает горячее подключение и потому всё равно инициализируется ОС, но, например, инициализацию оперативной памяти он делает всегда.
для полноты картины надо бы добавить ещё то, что происходит в промежуток времени между нажатием кнопки включения питания и выдачей (блоком питания) сигнала Power_good. Ибо POST, насколько я понимаю, уже после начинается.
SysV init must die.
Использовал несколько встроенных систем основанных на подходе описаном автором статьи за ссылкой. Они значительно более удобны для разработки и отладки.
Использовал несколько встроенных систем основанных на подходе описаном автором статьи за ссылкой. Они значительно более удобны для разработки и отладки.
Ох уж этот хабр… Всегда найдеться тот, кто знает лучше всех, как грузиться ядро линукс…
>Возможно, некоторым из вас это не ново и особого интереса не было при чтении статью, поскольку она более ориентирована на начально-средний уровень знакомства з Линуксом.
> В таком случае могу лишь сказать, что «повторение — мать учения» (с).
Занимаюсь Linux около 19-и лет. Всё равно с большим интересом читаю подобные статьи.
> В таком случае могу лишь сказать, что «повторение — мать учения» (с).
Занимаюсь Linux около 19-и лет. Всё равно с большим интересом читаю подобные статьи.
> GRUB понимает, что такое файловая система (древние загрузчики Linux'а, например, LILO этого не понимают).
Предвижу shitstorm от фанатов LILO.
Предвижу shitstorm от фанатов LILO.
Самый популярный дистрибутив у новичков, Ubuntu, уже несколько лет вместо inittab использует upstart ( upstart.ubuntu.com/ ), поэтому все, что касается runlevel'ов там совсем не так.
Да шестой пункт в каждом дистре по своему.
Да ну? А Выполните-ка в терминале на убунте
UpStart-то есть, но и SysV используется и еще долго будет поддерживаться, хотя бы в целях совместимости.
ls -la /etc/rc0.d/
UpStart-то есть, но и SysV используется и еще долго будет поддерживаться, хотя бы в целях совместимости.
Для Debian/Ubuntu:
— каталога /etc/rc.d/ нет;
— каталоги /etc/rc?.d/ настоящие каталоги, а не ссылки;
— в этих каталогах хранятся ссылки на скрипты в каталоге /etc/init.d/
Вручную лучше в /etc/rc?.d/ ничего не править, а использовать команду update-rc.d, которая позволяет создавать ссылки, удалять их, запрещать (фактически переименовывать c S* на K*) и разрешать (c K* на S*) запуск.
— каталога /etc/rc.d/ нет;
— каталоги /etc/rc?.d/ настоящие каталоги, а не ссылки;
— в этих каталогах хранятся ссылки на скрипты в каталоге /etc/init.d/
Вручную лучше в /etc/rc?.d/ ничего не править, а использовать команду update-rc.d, которая позволяет создавать ссылки, удалять их, запрещать (фактически переименовывать c S* на K*) и разрешать (c K* на S*) запуск.
Пропущен initrd. А это ОЧЕНЬ важный этап.
Который, опять же, присутсвует не всегда.
И стейджи бутлодера не расписаны, кстати.
Почему важный? Если ядро собирается под конкретное железо, можно все нужные драйверы вкомпилировать в ядро, а initrd выкинуть. На встраиваемых системах так часто делают.
Кстати, не стоит забывать, что сейчас вместо init.d появился Upstart и systemd — оно позволяет значительно ускорить загрузку системы. А init.d наверно скоро уйдет в /dev/null
Linux — это ядро, оно имеет другие этапы загрузки, то что вы описали это процесс загрузки какого-то конкретного дистрибутива GNU/Linux, причем процесс на конкретной аппаратной платформе ( IBM PC? ), к примеру встраиваемые системы грузятся иначе. В любом случае, выбрав правильное название топика, можно было избежать споров в коментах.
Я добавлю небольшое уточнение. Всё что вы описали верно только для части дистров (об этом уже упомянули) и только в случае платформы x86 с BIOS на борту. Уточнение здесь для того, что во-первых, на декстопах иногда бывает EFI, а кроме того Linux популярен в мире embedded и там ещё куча разных платформ. Я какбе к тому, что надо было указать о чём речь, ибо у меня вот линукс в телефоне и грузицо он совсем не так (: Ну какбе вообще не так.
вам бы батенька покурить архитектуры отличные от x86/amd64. даже хотя бы x86/amd64 с [U]EFI. или таки исправьте заголовок.
Я, если честно, давно не мог понять одной вещи… Вы пишете:
>Ядро монтирует файловую систему в соответствии с настройкой «root=» в фале grub.conf
А как оно вообще туда лезет, если FS не смонтирована? Более того, как GRUB читает свой конфигурационный файл, если он даже не знает, какое ядро грузить? И где загрузчик находится физически?
>Ядро монтирует файловую систему в соответствии с настройкой «root=» в фале grub.conf
А как оно вообще туда лезет, если FS не смонтирована? Более того, как GRUB читает свой конфигурационный файл, если он даже не знает, какое ядро грузить? И где загрузчик находится физически?
>initrd — это Initial RAM Disk, он же временный диск в оперативной памяти
>initrd используется самим ядром в качестве временной корневой файловой системы, пока kernel не загрузится в реальную примонтированную файловую систему. Этот временный диск также содержит необходимые для загрузки драйверы, позволяющие получить доступ к разделам дисков и другому оборудованию
>initrd используется самим ядром в качестве временной корневой файловой системы, пока kernel не загрузится в реальную примонтированную файловую систему. Этот временный диск также содержит необходимые для загрузки драйверы, позволяющие получить доступ к разделам дисков и другому оборудованию
ЕМНИП (могу сильно ошибаться) grub-install устанавливает в mbr так же модуль для чтения той fs, на которой лежит ядро и конфиги grub. Если модуль поддержки fs в ядре статичный, то initrd может быть не нужен.
Вы написали, что «древний» LILO, не понимает что такое файловая система, а GRUB понимает. Какой плюс от этого GRUB'у?
Почему LILO потерял свою популярность?
Почему LILO потерял свою популярность?
А ведь я предупреждал автора. Автор решил не исправлять.
habrahabr.ru/blogs/linux/113350/#comment_3640538
habrahabr.ru/blogs/linux/113350/#comment_3640538
Не припомню ни одного дистрибутива который использует lilo по умолчанию, хотя везде оно есть, да.
> Какой плюс от этого GRUB'у?
lilo не умеет грузить iso-образы.
И еще, у lilo нет файловера, как в грубе.
> Какой плюс от этого GRUB'у?
lilo не умеет грузить iso-образы.
И еще, у lilo нет файловера, как в грубе.
А некоторые системы работают без биоса и граба, обходясь только u-boot.
Есть книжка «Ядро Linux в комментариях», тем кому интересно могут там прочитать более подробно о стадии загрузки и других механизмах. Правда, она достаточно старая и о переизданиях я не слышал.
Спасибо — и наполнение и оформление отличное. Приятно читать.
зы. — Что Вы все прицепились к GRUB vs Lilo? Есть же BURG — вот радость, вот она )
зы. — Что Вы все прицепились к GRUB vs Lilo? Есть же BURG — вот радость, вот она )
Sign up to leave a comment.
6 шагов загрузки Linux на пальцах