
В последнее время я экспериментировал с Debian, так как мне это показалось наиболее логичным шагом после начала моего пути к Linux с Ubuntu (мне совсем не нравится Unity, а установка GNOME вместе с ним меня смущает, поскольку я не могу полностью удалить Unity, не испортив большую часть оставшихся функций рабочего стола). Одна вещь, которая всегда смущала меня во время установки, — это возможность установки GRUB.
Мне кажется, что в этом нет необходимости, и нужно просто загрузить ядро напрямую, как это делают Ubuntu и Windows, а не заставлять меня выбирать что-то одно, а мой выбор всегда один и тот же — вариант по умолчанию.
Во время установки текст, объясняющий эту опцию, говорит что-то вроде: «Нам нужно сделать Debian загрузочным» — что является основной причиной моих колебаний относительно выбора «нет». Я определенно хочу, чтобы он загружался! Я мог бы потратить время и посмотреть, что произойдет, если я выберу «нет», но я думаю, что было бы разумно сначала спросить всех вас.
Безопасно ли выбирать "нет" для установки GRUB? Будет ли Debian загружаться, если он не установлен? Если безопасно выбирать "нет", есть ли какие-либо недостатки у этого варианта?
решение1
Эммм... Как бы это сказать. Debian — это дистрибутив Linux, работающий на компьютере, но чтобы привести его в состояние, в котором он может начать работать, требуется загрузчик. Дистрибутив в основном использует GRUB или любой другой загрузчик, пока не будет готов к запуску. Вы можете использовать syslinux в качестве альтернативы GRUB.
решение2
Чтобы расширить принятый ответ…
Когда запускается ПК x86, его ЦП работает в 16-битном реальном режиме и запускает код, хранящийся в BIOS. После того, как BIOS выполняет POST и начальную конфигурацию, он считывает первые 512 байт с начала загрузочного диска и переносит выполнение туда — это начальный код загрузчика, который должен сделать все остальное.
Теперь рассмотримчто такое отдых. В простейшем случае загрузчик должен иметь возможность найти и загрузить образ ядра и перенести выполнение туда. Старый стандартный загрузчик Linux, lilo
, хранил непрерывную карту всех секторов, на которых хранилось ядро. Но с тех пор картина сильно изменилась: стало использоваться больше файловых систем, стало обычным хранить ядро на устройстве RAID или на логическом диске LVM или в стеке всего этого. Компьютеры стали иметь больше подключаемых дисков, что означает произвольный порядок их инициализации и, следовательно, проблемы с именованием. Теперь подумайте, что в наши дни для создания общей системы на основе Linux требуются некоторые ранние доступныепользовательское пространствоинструменты, которые хранятся на так называемом «initrd» (начальный RAM-диск) или «initramfs» (начальная файловая система RAM), поэтому на самом деле загрузчик загружает не только ядро Linux, но и соответствующую ему initramfs.
Итак, задача загрузчика:
- Сам Bootstrap — эти 512 байт могут, по сути, найти и загрузить только что-то более сложное.
- Обнаружить и инициализировать все слои, необходимые для доступа к загрузочной файловой системе (файловой системе, содержащей ядро и его initramfs).
- Загрузите все это, а затем передайте управление ядру.
Теперь подумайте о том, что большинство людей считают полезным иметь возможность как-то визуализировать и контролировать этот процесс, поэтому есть требование к загрузчику, чтобы он мог представить своего рода меню и возможность настраивать то, что будет загружено и как. Возможность загрузки альтернативного ядра также может быть бонусом (например, новое ядро, установленное из репозитория обновлений безопасности Debian, никогда не удаляет существующее ядро — вместо этого оно сохраняется в стороне и доступно для загрузки, если в новом будет обнаружена регрессия).
Итак, как можно видеть, если только мы не имеем дело с какой-то встроенной системой с очень жесткими требованиями к памяти/пространству хранения, и в которой никто не контролирует, как загружается ядро, неразумно помещать эту функциональность прямо в ядро, тем более, что загрузчик по своей сути является сильно зависимым от аппаратной платформы программным обеспечением. Вот почему существует загрузчик и почему в общей системе необходимость его использования в основном неизбежна.