Как удалить GRUB?

вы также можете использовать GParted Live CD для исправления MBR

или удерживать нажатой клавишу Shift до появления меню grub и выбрать Windows для загрузки загрузки

18
задан 5 May 2012 в 22:20

7 ответов

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

Обычно (и это верно как для grub, grub2, так и для ntldr iirc) самый первый байт вашего диск будет инструкцией x86 jmp. Это происходит даже до метки диска, потому что, передавая выполнение устройству для его начальной загрузки, он просто устанавливает CPU для всасывания информации об устройстве в виде кода. Если это неверный код, он вызывает прерывание, и BIOS обрабатывает исключение и переходит к следующему загрузочному устройству.

Например, начало моего диска начинается с:

00000000  eb 63 90 d0 bc 00 7c fb  50 07 50 1f fc be 1b 7c  |.c....|.P.P....||
[d3 ] Первая часть - eb 63, которая является Jump to offset 0x63.

00000060  00 00 00 00 ff fa 90 90  f6 c2 80 74 05 f6 c2 70  |...........t...p|
00000070  74 02 b2 80 ea 79 7c 00  00 31 c0 8e d8 8e d0 bc  |t....y|..1......|

Выполнение продолжается отсюда.

Конец сектора выглядит следующим образом:

000001b0  cd 10 ac 3c 00 75 f4 c3  ed db 96 d6 00 00 80 01  |...<.u..........|
000001c0  01 00 83 fe ff ff 3f 00  00 00 c1 07 a6 0e 00 fe  |......?.........|
000001d0  ff ff 83 fe ff ff 00 60  00 11 00 00 38 29 00 fe  |.......`....8)..|
000001e0  ff ff 82 fe ff ff 00 08  a6 0e 00 58 5a 02 00 00  |...........XZ...|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|

Если ваш диск отформатирован как таблица разделов MBR, ему нужно всего две вещи, которые должны присутствовать, таблица разделов со смещением 0x1be и сигнатурой MBR, 55aa, которая встречается в самом конце сектора со смещением 0x1fe. 0x1be является десятичным числом 446.

Следующее (конечно) сделает устройство не загружаемым. Но это то, чего вы хотите. Если вы не хотите, чтобы ваше устройство не могло быть загружено, не делайте этого, mmm-kay? Я предполагаю, что ваше устройство /dev/sdz, просто потому, что у не так много людей есть /dev/sdz, и это снижает риск того, что какой-то идиот-новичок вслепую скопирует команды вставки.

Сначала скопируйте MBR на файл для резервной копии.

sudo dd if=/dev/sdz of=/some/where/safe/preferably/not/on/dev/sdz/backup.mbr bs=512 count=1

Затем сделайте копию этого файла:

cp backup.mbr backup.mbr.test

Далее, мы должны создать loopback-устройство (так, чтобы содержимое дон- t обрезается.) И примените изменения в нашем поддельном секторе 0 в качестве теста:

sudo losetup /dev/loop7 backup.mbr.test
sudo dd if=/dev/zero of=/dev/loop7 bs=446 count=1
sudo losetup -d /dev/loop7

hexdump файла и убедитесь, что вся таблица разделов не установлена:

Вы должны увидеть что-то вроде:

00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 80 01  |................|
000001c0  01 00 83 fe ff ff 3f 00  00 00 c1 07 a6 0e 00 fe  |......?.........|
000001d0  ff ff 83 fe ff ff 00 60  00 11 00 00 38 29 00 fe  |.......`....8)..|
000001e0  ff ff 82 fe ff ff 00 08  a6 0e 00 58 5a 02 00 00  |...........XZ...|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
00000200

Теперь, 0x1be - это то, где вы видите 80 на шестнадцатеричном выходе, это также может быть 00 и по-прежнему действительным. (Это флаг «bootable» в таблице разделов, вы можете оставить его в покое, потому что он полностью игнорируется большинством современных BIOS ...) Байт в 0x1bf, хотя почти никогда не будет 0x00 (это чаще всего , но он может принимать другие значения), вы можете сравнить это с вашим backup.mbr, чтобы убедиться, что ничего из 0x1be не изменено.

Как только вы удовлетворены тем, что вы применили изменение правильно, вы можете непосредственно скопируйте файл по первой части диска. Причина, по которой вы хотите сделать файл, а не /dev/zero снова, - это защита от опечаток. Если вы случайно опустите count=1, у вас будет плохое время, копирование файла, с другой стороны, никогда не пройдет мимо EOF.

sudo dd if=backup.mbr.test of=/dev/sdz

Затем hexdump ваш диск, чтобы убедиться, что изменения приняты так, как ожидалось.

hexdump -C /dev/sdz | head

Сравните до 0x200 с backup.mbr.test чтобы убедиться, что это то, что вы хотите.

Наконец, если что-то по какой-либо причине может повернуть по какой-либо причине, вы можете просто скопировать резервную копию MBR на диск с помощью:

sudo dd if=backup.mbr of=/dev/sdz

Hope это помогает.

23
ответ дан 25 May 2018 в 11:55
  • 1
    Я даю вам плюс один для предвидения и предотвращения серьезной ошибки noob. – psitae 19 March 2018 в 15:10
  • 2
    Спасибо за кучу, я сделал все возможное, чтобы предотвратить как можно больше ошибок noob: сделать резервную копию, не записывая непосредственно на блок-устройство, в случае, если count забыт, а не напрямую использует общее имя блока устройства, указав, что файл резервной копии должен быть сделан с измененного устройства, пример того, как выглядит успешная очистка, как отменить, если вы испортите. Я полагаю, что если вы достаточно осведомлены, чтобы знать, что я получаю, вы можете прорезать детские шаги и просто сделать все это в одной команде. Но я не собираюсь давать вам эту команду, если вы все еще учитесь. ;) – OmnipotentEntity 20 March 2018 в 21:46

ПРЕДУПРЕЖДЕНИЕ: EXTREMELY DANGEROUS

Вы можете использовать команду dd из самой Linux (она удаляет таблицу разделов):

 # dd if=/dev/null of=/dev/sdX bs=512 count=1

Просто удалите MBR без таблицы разделов (см. комментарий ниже):

# dd if=/dev/null of=/dev/sdX bs=446 count=1

Замените /dev/hdX своим фактическим именем устройства, например /dev/hda. Используйте команду fdisk -l, чтобы узнать имя устройства:

# fdisk -l

Источник

http://www.cyberciti.biz/faq/linux-how-to-uninstall-grub /
2
ответ дан 25 May 2018 в 11:55
  • 1
    Эти байтовые счета выглядят неудобно произвольными. Знаете ли вы, что они одинаковы для GRUB2? – ændrük 4 May 2012 в 07:08
  • 2
    Счет байт состоит в том, что таблица разделов находится между 446 и 512. Конечно, это ставит вопрос о том, почему вы хотите удалить grub MBR ... это не мешает чему-либо просто сидеть там неиспользованно. Если вы хотите использовать другой загрузчик, просто установите его, и он заменит grub. – psusi 4 May 2012 в 07:39
  • 3
    Ничего себе, этот тип ответа должен иметь «ПРЕДУПРЕЖДЕНИЕ: ЧРЕЗВЫЧАЙНО ОПАСНО». написанных большими красными буквами. Я уверен, что OP способен это сделать, но я бы не хотел, чтобы кто-то из пользователей-новичков скопировал первую команду в терминал, даже не зная, что такое «таблица разделов»; является – Sergey 4 May 2012 в 07:47
  • 4
    Не делайте этого . Первая команда уничтожит таблицу разделов (как указано в OP), но вторая команда вызовет неопределенное поведение, если MBR не настроен должным образом. – Breakthrough 5 May 2012 в 21:36
  • 5
    Умм .. Я не знаю, почему вы, парни, изматываете, команды, которые наклеивают тахионы, ничего не делают. Вы можете проверить с помощью 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, никакое неопределенное поведение не возможно, если первый байт сектора 0 равен 0x00. Я не знаю, почему ты так думаешь. – OmnipotentEntity 26 July 2012 в 22:47

Мой опыт работы с

sudo install-mbr -i n -p D -t 0 /dev/sda

заключается в том, что он успешно удалил grub2 из /dev/sda (где установлена ​​моя Windows 7), поэтому первая часть вопроса «Как удалить grub от / dev / sda? " был дан ответ.

Тем не менее, вторая часть вопроса, которая называется «Как восстановить MBR / dev / sda?»? не получил ответа, поскольку команда install-mbr не смогла восстановить MBR. В результате Windows больше не загружается, и диспетчер загрузки Windows сообщает об ошибке в поврежденном MBR и просит пользователя восстановить с компакт-диска восстановления Windows.

1
ответ дан 25 May 2018 в 11:55

После прочтения статьи в Википедии по этому вопросу я хотел бы предложить несколько дополнительных решений:

Изменить порядок загрузки в BIOS :) Самый лучший и самый безопасный: используйте fdisk для удаления " bootable "из любых разделов на этом диске. Большинство MBR ищут «загрузочный» раздел для загрузки по цепочке, поэтому я ожидал бы, что GRUB просто ничего не сделает, если таких разделов нет. Не тестировали. Если это не поможет, попробуйте установить бесплатный клон стандартного MBR-кода: установите пакет mbr и используйте команду install-mbr следующим образом:
sudo apt-get install mbr
sudo install-mbr -i n -p D -t 0 /dev/sda

Кредиты: Статья в Википедии

Из чтения статьи в Википедии у меня сложилось впечатление, что единственной вещью, которая идентифицирует MBR, является ее подпись, которая находится в самом конце сектора (байты 510 и 511). Первые 446 байт MBR должны содержать машинные инструкции. Предполагается, что BIOS должен передать управление загрузчику независимо от фактического содержимого первых 446 байт, если присутствует подпись MBR:

На компьютерах IBM, совместимых с ПК, загрузочная прошивка, содержащаяся в BIOS ROM загружает и выполняет основную загрузочную запись. [14] ... Таким образом, ожидается, что начало MBR будет содержать инструкции машинного языка реального режима. [14] BIOS считывает MBR с запоминающего устройства в физическую память, а затем направляет микропроцессор в начало загрузочного кода. Из-за ограниченного размера раздела кода MBR он обычно содержит только небольшую программу, которая копирует дополнительный код (например, загрузчик) из запоминающего устройства в память. Затем управление передается этому коду, который отвечает за загрузку реальной операционной системы. ... Последовательность загрузки в BIOS загрузит первый действительный MBR, который он находит в физической памяти компьютера по адресу 0x7C00. Последняя инструкция, выполненная в коде BIOS, будет «прыгать» на этот адрес, чтобы выполнить непосредственное выполнение в начале копии MBR. Первичная валидация большинства BIOS - это подпись 0xAA55 в конце, хотя разработчик BIOS может выбрать другие проверки, такие как проверка того, что MBR содержит допустимую таблицу разделов без записей, относящихся к секторам за пределами сообщаемой емкости диска.

Итак, я понимаю, что MBR всегда должен содержать загрузчик, и обнуление первых 446 байтов этого не остановит BIOS от попытки загрузки с диска - но это, скорее всего, заставит компьютер зависать при попытке выполнить недопустимый код.

always Кроме того, в этой статье предполагается, что для того, чтобы диск выглядел «не загружаемым» для BIOS, вы должны фактически отредактировать подпись MBR на и сектора (используя любой редактор диска). Я не уверен, что это повлияет на ОС, увидев таблицу разделов на диске, хотя ... но по крайней мере вы всегда можете изменить эти байты обратно ...

1
ответ дан 25 May 2018 в 11:55

Еще одно простое решение.

В моем случае я имел Debian linux, но хотел использовать Mandriva, тоже будет работать и для других

Выключите свой компьютер, а затем удалите диск, который ботинки, которые вы не хотите загружать (у которых есть grub)

Просто загрузите загрузочный USB-диск из изолятора mandriva или другого варианта, который вам нравится устанавливать, есть инструменты для создания загрузочных USB-накопителей из iso-файлов, используя google (или вы могли бы сжечь установщика с CD-ROM)

Теперь большинство установщиков Linux дают вам выбор, что делать, пытаться играть / использовать для оценки или портативного Linux или запускать установку для его установки. На этом этапе мы просто подождем (двигаемся вверх по курсу, поэтому экран будет ждать, но не нажимайте клавишу ввода или щелкните мышью).

Напомните, что на данный момент ваш USB / или CDRom запущен и работает , теперь настало время подключить жесткий диск, который мы временно удалили, подождите минуту (некоторые из них требуют небольшого ожидания в минуту, то этого достаточно)

Продолжайте процесс настройки, поскольку большинство установщиков содержат инструменты разделов, которые вы можете сделать все что пожелаете. ну его простое решение, я избавился от старой установки linux просто как новичок

0
ответ дан 25 May 2018 в 11:55

Старый вопрос, но как это случилось со мной вчера, я решил это так: я выключил компьютер, физически отключил встроенный жесткий диск, снова запустил компьютер, затем

~ $ sudo update-grub

Done это, я выключил компьютер, подключил жесткий диск и мой старый раздел Windows 7, больше не существовавший с 2 ​​лет назад, не появился - наконец.

Я понимаю, что это решение до земли, но оно работает. Однажды я полностью уничтожу этот жесткий диск, и любой оставшийся след GRUB исчезнет.

0
ответ дан 25 May 2018 в 11:55

Старый вопрос, но как это случилось со мной вчера, я решил это так: я выключил компьютер, физически отключил встроенный жесткий диск, снова запустил компьютер, затем

~ $ sudo update-grub

Done это, я выключил компьютер, подключил жесткий диск и мой старый раздел Windows 7, больше не существовавший с 2 ​​лет назад, не появился - наконец.

Я понимаю, что это решение «на землю», но оно работает. Однажды я полностью уничтожу этот жесткий диск, и любой оставшийся след GRUB исчезнет.

0
ответ дан 25 July 2018 в 19:10

Другие вопросы по тегам:

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