US/Red_Hat_Enterprise_Linux/3/html/Reference_Guide/s1-grub-whatis.html
GRUB загружает себя в память на следующих этапах:
Stage 1 или первичный загрузчик считывается в память BIOS'ом из MBR[1]. из MBR[1]. Первичный загрузчик занимает менее 512 байт дискового пространства в MBR и способен загружать либо Stage 1.5 или Stage 2 загрузчика.
Загрузчик Stage 1.5 считывается в память загрузчиком Stage 1. при необходимости. Некоторые аппаратные средства требуют промежуточного шага, чтобы чтобы перейти к загрузчику стадии 2. Иногда это происходит, когда раздел /boot/ находится выше 1024 цилиндра жесткого диска или при использовании режима LBA. использовании режима LBA. Загрузчик Stage 1.5 находится либо в разделе /boot/ разделе, либо на небольшой части MBR и /boot/ раздел.
Загрузчик Stage 2 или вторичный загрузчик считывается в память. На сайте вторичный загрузчик отображает меню и командную среду GRUB. Этот интерфейс позволяет выбрать ядро или операционную систему для загрузки, передавать аргументы ядру или просматривать системные параметры.
Кажется довольно очевидным, что этап 2 - это собственно двоичный файл grub. На самом деле, в документации говорится, что grub 2 загружается по имени.
Я бы попробовал сделать:
dd if=/dev/zero of=/boot/stage2
Дополнительные данные:
Проверка /boot/grub:
копия загрузчика stage1:
stage1
Файлы для stage1_5:
e2fs_stage1_5
fat_stage1_5
jfs_stage1_5
minix_stage1_5
reiserfs_stage1_5
xfs_stage1_5
Файл для stage2:
stage2
Ссылка на образ grub:
Такое поведение является артефактом библиотеки времени выполнения C и требованием языка программирования C. Другие языки программирования исторически были построены поверх библиотеки времени выполнения C и получили от нее такое поведение. Это справедливо, например, для программ на C++. Глава и стих языковых стандартов C и C++ довольно часто цитируются в Stack Overflow (q.v. ).
В частности, программы, написанные на Python, имеют такое же поведение, и о них довольно часто спрашивают, иногда обвиняя в поведении среду выполнения языка программирования -.
Инструменты для изменения поведения программ, использующих семантику языка по умолчанию (без изменения и перекомпиляции программ )представлены в двух формах :зависимой от языка -(и иногда библиотеки времени выполнения --специальные )инструменты, которые встраиваются в среду выполнения и изменяют буферизацию, а также инструменты, которые выполняют стандартный ввод-вывод в файлы, которые библиотеки среды выполнения определяют как интерактивные устройства. Инструменты последнего класса не зависят от языка -и включают Bernstein ptybandage
.
Несколько примеров вопроса о буферизации: