Жесткий диск, который я использую только для хранения данных, все еще имеет GRUB из прошлых установок Ubuntu.
Как я могу удалить GRUB из него, не нанося вред остальным данным диска?
Фон
Я иногда перемещаю диск данных между компьютерами с различными конфигурациями порядка загрузки, поэтому я хотел бы, чтобы он не загружался , чтобы не включать его в настройки BIOS каждого компьютера.
Когда я включаю компьютер, когда подключен только диск с данными, появляется следующее:
error: no such device: fdf38dd4-9e9d-479d-b830-2a6989958503.
grub rescue>
Из старых резервных копий я могу подтвердить, /etc/fstab
что это был UUID корневого раздела, который я недавно переформатировал и которого больше не существует . Вот таблица разделов диска с данными и основная загрузочная запись .
Обратите внимание, что меня не интересуют обходные пути, которые не отвечают на мой основной вопрос. Я могу придумать несколько способов обойти эту проблему, но меня беспокоит принцип, что я не знаю, как решить эту проблему напрямую. Каждая процедура установки должна иметь процедуру удаления аналога.
sfdisk -d /dev/sdb > sdb.out
.Ответы:
Вы можете сделать устройство не загружаемым, просто сделав первые несколько байтов диска 0x00.
Как правило (и это верно как для grub, grub2, так и для ntldr iirc), самый первый байт вашего диска будет инструкцией x86 jmp. Это происходит даже до метки диска, поскольку при передаче выполнения устройству для его начальной загрузки оно просто устанавливает ЦП на всасывание информации об устройстве в виде кода. Если он имеет неверный код, он вызывает прерывание, и BIOS обрабатывает исключение и переходит к следующему загрузочному устройству.
Например, начало моего диска начинается с:
Первая часть -
eb 63
это переход со смещением 0x63 от текущего IP (то есть до 0x65).Казнь продолжается отсюда.
Конец сектора выглядит так:
Если ваш диск отформатирован как таблица разделов MBR, то для этого нужны только две вещи: таблица разделов со смещением
0x1be
и подпись MBR,55aa
которая находится в самом конце сектора со смещением0x1fe
.0x1be
десятичное число 446.Следующее (конечно) сделает устройство не загружаемым. Но это то, что вы хотите. Если вы не хотите, чтобы ваше устройство не загружалось, не делайте этого, ммм-кей? Я предполагаю, что ваше устройство есть
/dev/sdz
, просто потому что не так много людей имеют/dev/sdz
, и это снижает риск того, что некоторые идиоты-новички слепо копируют команды вставки.Сначала скопируйте MBR в файл для резервного копирования.
Затем сделайте копию этого файла:
Затем мы должны создать устройство с обратной связью (чтобы содержимое не усекалось) и применить изменения к нашему фиктивному сектору 0 в качестве теста:
hexdump
файл и убедитесь, что вся таблица разделов не повреждена:Вы должны увидеть что-то вроде:
Теперь,
0x1be
где вы видите80
на шестнадцатеричном выводе, это также может быть00
и остается действительным. (Это флаг «загрузочный» в таблице разделов, вы можете оставить его в покое, потому что он полностью игнорируется большинством современных BIOS ...) Байт,0x1bf
хотя и почти никогда не будет0x00
(чаще всего,0x01
но он может принимать другие значения) можете сравнить это с вашим,backup.mbr
чтобы убедиться, что ничего прошлого0x1be
не изменилось.Как только вы убедитесь, что применили изменения правильно, вы можете напрямую скопировать файл на первую часть диска. Причина, по которой вы хотите сделать файл, а не
/dev/zero
снова, заключается в безопасности от опечаток. Если вы случайно пропуститеcount=1
это, у вас будет плохое время, копирование файла с другой стороны никогда не будет проходить мимо EOF. Так что безопаснее.Затем
hexdump
ваш диск, чтобы убедиться, что изменения приняли, как ожидалось.Сравните с
0x200
против,backup.mbr.test
чтобы убедиться, что это то, что вы хотите.Наконец, если что-то облажается по какой-либо причине, вы можете просто скопировать резервную копию MBR обратно на диск через:
Надеюсь это поможет.
источник
count
он забыт, а не прямое использование общего имени блочного устройства, указав, что файл резервной копии должен быть создан Выключенное устройство, пример того, как выглядит успешная очистка, как отменить, если вы облажались. Я полагаю, что если вы достаточно осведомлены, чтобы понять, что я получаю, вы сможете пройти через шаги ребенка и просто сделать все это в одной команде. Но я не собираюсь давать вам эту команду, если вы все еще учитесь. ;)ВНИМАНИЕ: ЧРЕЗВЫЧАЙНО ОПАСНО
Вы можете использовать команду dd из самого Linux (она удаляет таблицу разделов):
Просто удалите MBR без таблицы разделов (см. Комментарий ниже):
Замените
/dev/hdX
на ваше фактическое имя устройства, например/dev/hda
. Используйтеfdisk -l
команду, чтобы узнать имя устройства:Источник
источник
touch testfile
,dd if=/dev/urandom of=testfile bs=512 count=1
,sudo losetup /dev/loop7 testfile
,sudo dd if=/dev/null of=/dev/loop7 bs=446 count=1
,sudo hexdump -Cv /dev/loop7
. Как видите,/dev/null
это не источник 0, а источник EOF.dd
не может и не будет копировать что-либо от/dev/null
вас нужно использовать/dev/zero
. Второе @Breakthrough, неопределенное поведение невозможно, если первый байт сектора 00x00
. Я не знаю, почему ты так думаешь.Мой опыт работы с
является то, что он успешно деинсталлировал grub2 из
/dev/sda
(где установлена моя Windows 7), поэтому первая часть вопроса "Как мне удалить grub из / dev / sda?" был дан ответ.Тем не менее, 2-я часть вопроса: «Как восстановить MBR / dev / sda?» не было получено ответа, так как
install-mbr
команда не смогла восстановить MBR. В результате Windows больше не загружается, и диспетчер загрузки Windows сообщает об ошибке о поврежденной MBR и просит пользователя восстановить с компакт-диска восстановления Windows.источник
Прочитав статью на эту тему в Википедии, я хотел бы предложить несколько дополнительных решений:
Изменить порядок загрузки в BIOS :)
Лучший и самый безопасный: используйте
fdisk
для удаления флага «загрузочный» из любых разделов на этом диске. Большинство MBR ищут «загрузочный» раздел для загрузки по цепочке, поэтому я ожидаю, что GRUB просто ничего не сделает, если таких разделов нет. Хотя не проверял.Если вышесказанное не помогает, попробуйте установить бесплатный клон стандартного кода MBR:
Установите
mbr
пакет и используйтеinstall-mbr
команду следующим образом:Кредиты: КАК: Восстановить Windows MBR, используя Ubuntu LIVE CD
После прочтения статьи в Википедии у меня сложилось впечатление, что единственная вещь, которая идентифицирует MBR, - это ее подпись, которая находится в самом конце сектора (байты 510 и 511). Первые 446 байтов MBR должны содержать машинные инструкции. Предполагается, что BIOS передает управление загрузчику независимо от фактического содержимого первых 446 байтов, при условии наличия подписи MBR:
Поэтому я понимаю, что MBR всегда должен содержать загрузчик, и обнуление первых 446 его байтов не помешает BIOS попытаться загрузиться с диска - но это может привести к зависанию компьютера при попытке выполнить недопустимый код.
ОБНОВЛЕНИЕ: Кроме того, в этой статье предлагается, чтобы диск выглядел «не загружаемым» для BIOS, вы должны отредактировать сигнатуру MBR в и в секторе (используя любой редактор дисков). Я не уверен, повлияет ли это на то, что ОС увидит таблицу разделов на диске ... но, по крайней мере, вы всегда можете изменить эти байты обратно ...
источник
Еще одно более простое решение.
В моем случае у меня был Debian Linux, но я хотел использовать Mandriva, будет работать и для других
Выключите компьютер, затем удалите диск, который загружается, который вы не хотите загружать (который имеет grub)
Просто вставьте загрузочный USB-диск из Mandriva ISO или другой вариант, который вы хотите установить. Существуют инструменты для создания загрузочных USB-флешек из ISO-файлов с помощью Google (или вы можете использовать сгоревший установщик с CD-ROM).
Теперь большинство установщиков linux предоставляют вам выбор, что делать, пробовать и играть / использовать для ознакомления или переносить linux или запустить установку для его установки. На данный момент мы просто ждем (переместите курсор вниз, чтобы экран ожидал, но не нажимайте ввод или щелчок мышью).
Напомним, что в этот момент ваш USB / или / CDRom запущен и работает. теперь пришло время подключить обратно жесткий диск, который мы временно удалили, подождите минуту (некоторые биографии требуют небольшого ожидания, подождите более чем достаточно)
Продолжайте процесс установки, так как большинство инсталляторов содержат инструменты для создания разделов, которые вы можете делать как угодно ну это простое решение, я избавился от старой установки Linux просто как новичок
источник
Старый вопрос, но, как это случилось со мной вчера, я решил это так: я выключил компьютер, физически отключил инкриминированный жесткий диск, снова запустил компьютер, затем
Сделав это, я выключил компьютер, снова подключил жесткий диск, и мой старый раздел Windows 7, который больше не существует 2 года назад, не появился - наконец.
Я понимаю, что это практичное решение, но оно работает. Однажды я полностью уничтожу этот жесткий диск, и все оставшиеся следы GRUB исчезнут.
источник