2

Я использую систему Linux Mint на прежнем жестком диске с Windows (Vista). После года или около того, что я никогда не загружал Windows и не получал проблем с пространством на системном разделе Linux, я решил стереть раздел Windows (теперь основной раздел /dev/sda1 ниже) и переместить систему Linux на него. Я следую этому руководству, и, кажется, все работает нормально, пока я не перезагружусь после перемещения и перенастройки grub2, основной загрузочной записи и всего, когда система продолжает загружаться со старого раздела. Нет способа заставить его загрузиться с sda1 .

Моя таблица разделов:

образ

Мне удалось отредактировать grub.cfg, /etc /fstab в новом месте, обновить MBR, но система не загружается на том разделе, который я хочу. Что бы я ни делал, я всегда загружаюсь со старого.

Я должен признать, что не все выглядело идеально, как в руководстве. В grub.cfg были неожиданные вещи. Вот выдержка из grub.cfg, где мне пришлось импровизировать. Это оригинальная версия:

if [ "$linux_gfx_mode" != "text" ]; then load_video; fi
menuentry 'Linux Mint 17.1 Cinnamon 64-bit, 3.13.0-37-generic (/dev/sda5)' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    gfxmode $linux_gfx_mode
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos5'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  6b3cf8c6-8c6e-4c24-8f01-90276ef061c1
    else
      search --no-floppy --fs-uuid --set=root 6b3cf8c6-8c6e-4c24-8f01-90276ef061c1
    fi
    linux   /boot/vmlinuz-3.13.0-37-generic root=UUID=6b3cf8c6-8c6e-4c24-8f01-90276ef061c1 ro   quiet splash $vt_handoff
    initrd  /boot/initrd.img-3.13.0-37-generic
}

Здесь я заменил UUID на новый раздел по мере необходимости, но не совсем понял, как изменить root=hd0,msdos5 . Так что не изменилось. Руководство говорит:

Используя gedit, найдите и замените каждый "(hdX, Y)" соответствующим образом

X и Y должны быть заменены на основе /dev /sdZY или /dev /hdZY вашего нового раздела, если Z равен 'a', то X должен быть равен '0', если Z равен 'b', то X должен быть равен '1', и поэтому на.

Я могу себе представить, что это потому, что grub был настроен для включения загрузки в Windows. Была такая запись в меню, которую я полностью удалил в новом grub.cfg:

menuentry 'Windows 7 (loader) (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-chain-BE8602CA860282DF' {
    insmod part_msdos
    insmod ntfs
    set root='hd0,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  BE8602CA860282DF
    else
      search --no-floppy --fs-uuid --set=root BE8602CA860282DF
    fi
    parttool ${root} hidden-
    chainloader +1
}

Я чувствую, что эти записи hd0,msdos должны отличаться, но я не могу понять, что вводить.

В любом случае, система продолжает загружаться со старого раздела, мне все еще не хватает места на системном диске, и я был бы очень признателен, если бы нашел решение! Спасибо!

2 ответа2

0

Конечно, как только вы захотите загрузиться с sda1, вы должны изменить все ваши экземпляры msdos5 на msdos1 на 5-м шаге руководства, на которое вы ссылались. Теперь вы должны выполнить остальные шаги, чтобы закончить.

0

Правда, вы можете урезать:

set root='hd0,msdos5'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  6b3cf8c6-8c6e-4c24-8f01-90276ef061c1
else
  search --no-floppy --fs-uuid --set=root 6b3cf8c6-8c6e-4c24-8f01-90276ef061c1
fi

до:

search --fs-uuid --set=root 6b3cf8c6-8c6e-4c24-8f01-90276ef061c1

или даже альтернативно:

search -u -s 6b3cf8c6-8c6e-4c24-8f01-90276ef061c1

Конечно, вы можете просто изменить все hd0,msdos5 на hd0,msdos1 . sda5 до sda1 ; msdos5 до msdos1 , не правда ли? FWIW, msdos здесь означает "таблица разделов MSDOS", которая часто считается более подходящим названием "таблица разделов MBR". hd0 и ahci0 не всегда оказываются sda в загруженной системе.

Но перед тем, как переделать grub.cfg, вам нужно убедиться, что загрузочный код grub на MBR (и пробел после MBR) будет искать grub.cfg на нужном разделе. (Вы утверждали, что updated the MBR , но мне интересно, что именно вы сделали.)

mount /dev/sda1 /mnt
grub-install --boot-directory /mnt/boot /dev/sda

И отредактируйте grub.cfg и fstab на нем:

$EDITOR /mnt/boot/grub/grub.cfg
$EDITOR /mnt/etc/fstab

Кстати, если вы редактируете grub.cfg, это означает, что вы больше не должны использовать такие утилиты, как update-grub или grub-mkconfig , если вы не обновите свой файл /etc /default /grub соответствующим образом позже.

Однако я не уверен, что вам удастся mount /dev/sda1 /mnt , поскольку, согласно вашему скриншоту gparted, sda1 и sda5 были каким-то образом смонтированы в /. Так что я даже не знаю, какой /boot/grub/grub.cfg действительно был изменен, когда вы его редактировали. И я не знаю, может ли это быть так просто, как umount / исправить этот беспорядок. Я скажу, что вам лучше все исправить с помощью живой среды.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .