This is the longest post I’ve ever made on a StackExchange site, but this process requires a lot of explanation and attention to detail. It’s also somewhat specific to the hardware in question, which requires more explanation.
After a lot of headache, two accidental hard drive reformattings, and lots of frustration with HP’s buggy firmware implementation, I finally got Xubuntu and Windows 10 running nicely side-by-side. I’ve done this with Windows 10, but it should also work with Windows 8.1. Both of these newer operating systems use the new(ish) UEFI firmware system, instead of the traditional BIOS system, which is where most confusions with dual-booting seem to arise. I read lots of things from lots of places with instructions for dual-booting with a BIOS system, that talk about UEFI as if it’s just a different kind of BIOS, or an optional layer between BIOS and an OS. UEFI and BIOS are not the same thing; a UEFI is not a BIOS, and a BIOS is not a UEFI. They’re completely different. There are some things that need to be done differently when dual-booting with a UEFI system.
Firstly, do not use EasyBCD. I’ve seen a lot of outdated dual-booting tutorials that recommend EasyBCD, but it is designed to work with traditional BIOS firmware used by Windows 7 and Windows Vista, and it does not work well with newer UEFI firmware (Windows 8, 8.1, or 10). If you have already fiddled with EasyBCD, don’t worry- the worst it probably did is make a mess in your EFI boot entries by writing things to the MBR. We’ll clean that up in step 4. Speaking of MBR, avoid that like the plague. The Master Boot Record is what’s used in traditional BIOS firmware as a list of bootloaders stored in the boot partition (or, if written by Windows, in whichever partition is first) of your hard drive. It’s meant to list the operating systems on the hard drive, and tell the firmware which one gets booted first. This does not work well with HP’s UEFI firmware. It seems that if there’s any MBR modification done, HP’s UEFI firmware gets confused and runs back to the Windows Boot Manager, which will completely bypass GRUB.
What you’ll need:
- A live USB or installation CD with your preferred Ubuntu distribution.
- Installation media for your Windows OS. If you’re upgrading from Windows 8.1, you can do it without downloading the full 3+ GB .iso for Windows 10- there is a web installer that downloads it as it installs- but, for this method, you need the .iso extracted to a CD or USB drive. It’s also a good idea to have it on hand for the future, so you might as well create it now. Since this question is about dual-booting with a UEFI system, you’ll need the 64-bit OS.
- Make sure you have your Product Key, or you won’t be able to upgrade/install.
- Optional, but highly recommended: A drive large enough to back up your current Windows files.
- Enough space on your hard drive for both operating systems, a boot partition (only 200 MB), and a linux-swap partition (usually the same size as your physical RAM).
Step 1: Make a backup
Back up all of your Windows files and folders that you don’t want to lose. As long as you have enough free hard drive space for your new Ubuntu partition, this process should not interfere with Windows files. Should is a risky word, though.
Windows 8.1 has a «make a recovery disk» tool, but I found it useless and non-functional when it came to restoring the backup I made with it. The most straightforward way to preserve the files you don’t want to lose is to just open Windows Explorer, and copy them to a backup disk. It takes forever, but it’s worth it.
Step 2: Disable Fast Startup, and shut down your computer
You’ll need to be logged in as an administrator to do this.
It’s very important to disable Fast Startup before installing GRUB, because whether the Ubuntu installer can detect Windows’ presence depends on how Windows represents itself in the boot partition. With Fast Startup properly disabled, it should be detected. Detection will be covered in step 4.
Windows 8, 8.1, and 10 use this fancy new thing called Fast Startup, which tells your firmware to load a special bootloader that restores the system to its pre-shutdown state very quickly. Pretty cool, huh? Well, because it changes the EFI system’s next-boot option, this feature will have to be disabled while you’re installing GRUB. This can be done by doing the following:
- Open Control Panel
(Windows+X->Control Panel from the desktop in Windows 8+)(apparently Microsoft hates power users, so searching the Start Menu for «Control Panel» is now the fastest way to open it) - Navigate to Power Options
- Click «Choose what the power button does»
- Click «Change settings that are currently unavailable»
- Make sure the box that says «Turn on fast startup (Recommended)» at the bottom is not checked.
More detailed instructions can be found here. You can re-enable Fast Startup after installing GRUB, and it seems not to cause any problems with Ubuntu/GRUB booting. Just make sure it’s disabled during the installation.
After you’ve disabled Fast Startup, shut down your computer. Since Fast Startup is disabled, Windows will do a complete shutdown, and not change the next-boot option in the firmware’s EFI manager. (Layman’s terms: Windows won’t tell your HP system to boot its Fast Startup file when it’s next turned on, so it will use the EFI boot manager’s list, as it should. GRUB will place itself first on this list.)
Step 3: Set up the partitions with gparted
Before installing Ubuntu, you’ll want to use your live CD/USB to make a separate partition for it. That way, it *won’t overwrite Windows.
*Make sure you’ve got a backup. No guarantees- this depends on what Windows has decided to do in your boot partition, and it may also depend on which Ubuntu version/distribution you’re using- I haven’t used them all.
To make the partitions, you need to boot to your live CD/USB, and open gparted. There are plenty of tutorials on using gparted, and it’s pretty easy to figure out, so I’ll leave the specifics up to you and the Internet.
-
You will need 4 partitions:
-
A boot partition. If you already have Windows installed, you shouldn’t need to do anything- it should already be one of the first partitions in your drive. Sometimes Windows also makes another small partition at the beginning of the disk called Recovery. Just leave this alone.
- If you’re doing a new installation, and you want to start everything from scratch (this will wipe out all of your data), go ahead and delete all of the partitions on your drive, and then make this partition. It should be the first partition; its format should be FAT32; and it should be at least 200 MB in size. If gparted has an option to label it, just call it
boot. If there’s not label option, don’t worry about it. You must, however, set the «boot» and «esp» flags on this partition ; without them, the Ubuntu installer will just ignore it and use a legacy mode install, and Windows (10) will refuse to install altogether with the error «we couldn’t create a new partition or locate an existing one». Or not. It seems to depend on how Windows feels that day…
- If you’re doing a new installation, and you want to start everything from scratch (this will wipe out all of your data), go ahead and delete all of the partitions on your drive, and then make this partition. It should be the first partition; its format should be FAT32; and it should be at least 200 MB in size. If gparted has an option to label it, just call it
-
A Windows partition. Again, if you already have Windows installed, this partition should obviously be here, after the boot and Recovery partitions. This is where you want it, but you need to resize it to make room for your Ubuntu partition, and the linux-swap partition. Use gparted’s resize/move option to do this. Ubuntu needs at least 5 GB, and the linux-swap partition should be at least half the size of your physical RAM, so Resize the windows partition to make enough room for that. gparted will warn you about potential data loss- shrinking your partition should not destroy or corrupt any data, as long as you don’t shrink it down into the space being used.
- If installing both operating systems from scratch (again, this will wipe out all of your data), Microsoft says you’ll need at least 20 GB for the 64-bit OS, so this partition needs to be at least 20 GB. You’ll probably want more than that, though: I just used half of the space after the boot partition for Windows, and half of it for Ubuntu and linux-swap. If you’re going from scratch, this partition needs to be formatted as FAT32. When you install Windows, it will format it to NTFS. Do not do this with gparted; Windows’ implementation of NTFS is different than gparted’s implementation, and Windows may not be able to recognize the partition. In the Windows 10 installer, you should have the option to select which partition to place Windows 10 on. If it’s formatted as FAT32, Windows should be able to see it and install itself there. If you can label this partition, label it
Windows. That will make it easier for you during the Windows install. Speaking of the Windows installer- don’t begin that yet. If you’re doing new installations of both Ubuntu and Windows at the same time, instead of upgrading from 8 or 8.1 to 10, it’s much easier to install Ubuntu first.
- If installing both operating systems from scratch (again, this will wipe out all of your data), Microsoft says you’ll need at least 20 GB for the 64-bit OS, so this partition needs to be at least 20 GB. You’ll probably want more than that, though: I just used half of the space after the boot partition for Windows, and half of it for Ubuntu and linux-swap. If you’re going from scratch, this partition needs to be formatted as FAT32. When you install Windows, it will format it to NTFS. Do not do this with gparted; Windows’ implementation of NTFS is different than gparted’s implementation, and Windows may not be able to recognize the partition. In the Windows 10 installer, you should have the option to select which partition to place Windows 10 on. If it’s formatted as FAT32, Windows should be able to see it and install itself there. If you can label this partition, label it
- A Linux partition. Like the Windows partition, this can vary in size, but Ubuntu’s website recommends at least 5 GB. Again, you’ll probably want a lot more than that. If you’re upgrading instead of doing a fresh install of both operating systems, you should be able to create this partition in the new «unallocated» space shown in gparted. Make it as big as you like but remember to leave space for a linux-swap partition if you plan on using one. It should be formatted as ext4. ext2 or ext3 should work too, if you prefer those for some reason.
- If installing from scratch, make your Ubuntu partition just as described above. Make sure it’s formatted as ext4, ext3, or ext2. This will allow Ubuntu to use it, but keep the Windows 10 installer from recognizing it, which should cause it to default to the FAT32 partition you made in step 3, which it can read.
- Optional, but recommended: a linux-swap partition. At least half the size of your physical RAM is a good start, but I recommend reading the details. I’ve got 8 GB of RAM, and a 1TB hard drive, so I just made this partition the same size as my physical RAM.
-
Step 4: Install Ubuntu first
Whether you’re upgrading to Windows 10 from an existing Windows OS, or installing both Windows 10 and an Ubuntu distribution to a new or newly-repartitioned hard drive, it’s a lot easier to install Ubuntu first. Ubuntu uses GRUB 2 as its bootloader, which does things the way an EFI bootloader should. Windows 10 uses Windows Boot Manager, which does things… well, the way Windows does them… If you install Windows first, you likely won’t be able to boot to Ubuntu without holding down a special key during the boot process to stop the Windows Boot Manager from loading, because Windows Boot Manager doesn’t respect GRUB when it’s added to its list of bootloaders. So instead, install Ubuntu and GRUB first, then add an entry to GRUB for the Windows Boot Manager.
Step 4.1: Cleaning out old EFI entries (optional)
Please be careful here. Deleting the wrong thing can cause huge problems.
Before installing Ubuntu, we want to make sure that the ghosts of past OS installations aren’t going to come back to haunt us in the future. In a UEFI system, operating systems use EFI (extensible firmware interface) files to tell the firmware: «Hey, I exist. This is where you can find me.» When a new OS is installed, it adds an entry to the EFI Boot Manager’s list, which gives it a unique entry number, and tells the EFI Boot Manager where it’s EFI file(s) is/are (Windows registers several different EFI files- one for regular boot, one for a recovery boot, one for Fast Startup- possibly more depending on your firmware and your OS version). The EFI Boot Manager also keeps track of the boot-order: a list of entry numbers that specify what gets booted first. If you’ve been using EasyBCD; bcdedit; Windows’ Boot Repair or Recovery tools; boot-repair in a Linux OS; or even if you’ve updated Windows or reinstalled it, there’s a good chance that your EFI entry list now has some duplicates. At least, that was the case with mine. Having duplicates here can bog down your booting process, as the firmware sifts through the out-of-date or wrong-file entries until it finds a bootloader that works. It can also cause a boot-loop, where bootloader A points the firmware to bootloader B, which points it back to A, and then things start to take a very, very long time…
Anyway, to view your EFI entry list and see what needs to be cleaned, use the efibootmgr package with your live CD/USB. You’ll need to install it using sudo apt-get install efibootmgr in a terminal, then run it using sudo efibootmgr. By default, you’ll get a list of entries that looks something like this:
When I first used this tool after fiddling with EasyBCD and bcdedit trying to get things to boot in the right order, I had over a hundred entries here, most of them duplicates.
If your boot manager list isn’t too cluttered, or if you’re not comfortable deciding what can be deleted and what shouldn’t be deleted, just skip to step 4.2.
To clean out any entries you don’t need, use efibootmgr -b <hex_number> -B, where hex_number is replaced by the number listed with the boot entry. So, to remove the USB Drive (UEFI) entry (numbered Boot2001) in the picture above, I’d use sudo efibootmgr -b 2001 -B. You’ll notice that I left some duplicates (all of the 3000+ numbered entries). You can use efibootmgr with different options to view some other attributes of the entries, such as the file paths they point to. Those entries look like duplicates, but they all point to different files used by my HP laptop to update its BIOS. Please be careful what you remove. It can be very difficult or impossible to replace things here. You can also use efibootmgr to change the BootOrder, which it displays. See the man page for more information on this useful tool.
Step 4.2: Installing Ubuntu
After you’ve cleaned up the EFI Boot Manager entries, if you chose to do so, it’s finally time to install Ubuntu. With your live CD/USB loaded, select the install option from the bootloader menu, or launch it from the desktop after logging in. Choose your options on the first page of the installer. The second part will look something like this: (I’m using Xubuntu 14.04, so your installer may vary, but the options should be pretty similar.)
If your installer doesn’t detect your Windows installation (like mine), you’ll need to select the «Something else» option. From there, you’ll get a screen that looks similar to the gparted menu you used to set up your partitions. Simply select the partitions you made, and assign them to the correct mount point by selecting a partition and clicking «Change».
- If you’re installing both OSes from scratch, do the same thing. Do not use the automatic installation option. You need to make sure Ubuntu gets installed in the ext2/ext3/ext4 partition, not the FAT32 Windows partition.
Step 5: Update or install Windows second
You should have an installation disk for Windows 10. Before you start installing, make sure you have your product key nearby, or you won’t be able to install/upgrade. When you boot to the installation CD/USB, the installer is pretty simple. A bit too simple for my comfort- the only button was «Install Windows 10» or something like that, and Windows 8, 8.1, and 10, are infamous for their behind-the-scenes installs, where it simply says «We’re getting things ready», and provides no details about what it’s actually doing to your system. If you’ve followed these instructions so far, it should be OK to begin installation regularly.
-
If you’re upgrading from Windows 8 or Windows 8.1, you shouldn’t have to do anything special with the installation process. Get through the (very long) installation, and proceed to step 6.
-
If you’re doing a fresh install, the installer will ask you where you want to install Windows 10. Make sure you select the FAT32 partition you made in step 2, and not another partition, or that partition will be wiped and formatted. Because Ubuntu is already installed, Windows 10 should be respectful of the boot partition and not reformat it. Having the rubbish entries cleaned out of the EFI Boot Manager’s list will also free up space in the tiny 200 MB boot partition, lessening the chances that Windows will get confused and angry and clear the whole thing for itself.
Step 6: Update and (optionally) customize GRUB
After installing or upgrading to Windows 10, you’ll need to reboot to Ubuntu to update GRUB so it includes Windows Boot Manager on its list. Before you do this, disable Fast Startup again. This is done very similarly to how you did it in step 2. The control panel and settings UI are a bit different, but most of the options are still there.
After you’ve disabled Fast Startup again, reboot your computer.
If Windows boots by default, you will need to hold down the special key for your laptop to get to the system’s firmware menu. On my HP Touchsmart, that key is Esc. Other common keys are F12, Delete, F10… Your computer’s manual should be able to help you out here. From the firmware menu, boot into GRUB. There should be an option to «select a boot device» or something similar, and Ubuntu or GRUB should be listed there. If it’s not listed, look for an option to boot from an EFI file, and browse to /EFI/ubuntu/grubx64.efi or (if you have Secure Boot enabled), EFI/ubuntu/shimx64.efi instead. The actual paths of these files may vary depending on your options, and how your boot partition is set up, but the file names should be the same. Selecting one of these .efi files should boot to GRUB, where you can then boot to your Ubuntu distribution. Once you’ve logged in, open a terminal and type sudo update-grub. This will run the os-prober script that GRUB uses to compile grub.cfg, which tells grub’s EFI file which entries to include, what colors to use, etc. The os-prober script should identify Windows Boot Manager, and automatically add it to the list.
Optionally, you can install Grub Customizer to change the order of menu entries and change the behavior and the color and background of the GRUB menu. You can install this from a terminal using sudo apt-get install grub-customizer, and then run sudo grub-customizer.
When using GRUB on a UEFI system shared with a Windows OS, DO NOT install to MBR. Some tutorials list it as a crucial step to use Grub Customizer’s «Install to MBR» option under the File menu. You should not do this on most UEFI systems. The MBR (Master Boot Record) is designed for BIOS firmwares, and is still used by the Windows Boot Loader to some extent. Adding GRUB to the MBR, when it’s already in the EFI entry list, can cause lots of hairballs.
If you need to make sure that GRUB is the first entry in the boot-order list (i.e. if Windows is always booting, even though you did everything right), use efibootmgr (see step 4.1) to view/edit the EFI Manager’s boot order.
Notes
I haven’t mentioned Secure Boot at all, because it should normally not affect Ubuntu’s installation. Many dual-booting tutorials talk about disabling it, but that’s usually not necessary with a current 64-bit installer. However, each PC is different, and Secure Boot is fairly new (2012), so different firmwares may implement things differently. For example, the version of my HP firmware includes a «legacy boot» option, which disables Secure Boot and treats installed OSes as though it were BIOS firmware: some people recommend enabling this for installing for dual-boot. Installing Ubuntu in legacy boot mode on my system prevented GRUB from adding itself to the EFI entry list, so all it could do was add itself to the MBR, which Windows Boot Manager had full control of. Windows Boot Manager took a lot of tweaking to even display the list of entries, and after all that, it would only boot the Windows entries, making GRUB unusable without manually selecting its EFI file every time I powered on.
See here for more information on Ubuntu and Secure Boot and Legacy Boot, and information about the difference between UEFI and BIOS installations in general.
1. Введение
GRUB или Grand Unified Bootloader (Унифицированный системный загрузчик) является наиболее распространенным системным загрузчиком в среде Linux. Он занимает свое место по праву, ведь благодаря ему становится возможной загрузка практически всех актуальных операционных систем. Это все существующие дистрибутивы Linux, версии ОС Windows, версии DOS, версии BSD, версии Mac OS X, а также некоторые другие менее популярные операционные системы.
По сути, это небольшое технологическое чудо. Например, в течение некоторого времени на моем ноутбуке было установлено около 10 разных операционных систем, которые были доступны из меню системного загрузчика GRUB и отлично работали, не конфликтуя друг с другом.
GRUB является доказательством преимуществ простой архитектуры: программа является очень простой, но в то же время гибкой и функциональной. Но это абсолютно не значит, что она лишена недостатков: вы можете столкнуться с проблемами в процессе ее эксплуатации. В данном материале приводятся описания двух наиболее востребованных операций, а именно восстановления и удаления системного загрузчика в случае работы с системой, использующей классическую прошивку BIOS. Кроме того, даются некоторые советы по настройке системного загрузчика.
2. Восстановление системного загрузчика
Для начала рассмотрим ситуации, в которых может потребоваться восстановление системного загрузчика, после чего перейдем к описанию процесса его восстановления.
2.1. Когда приходится восстанавливать системный загрузчик
Если вы устанавливаете ОС Windows на компьютер с установленной системой Linux, вы наверняка лишитесь системного загрузчика GRUB, так как он будет заменен на системный загрузчик Windows. По этой причине следует устанавливать ОС Windows перед установкой Linux. Кроме того, установка системного загрузчика GRUB может завершиться неудачей в ходе установки любого дистрибутива Linux. К счастью, данная проблема может быть решена без переустановки системы. Однако, вам придется неукоснительно следовать приведенным ниже инструкциям.
GRUB состоит из двух программных компонентов. Первым программным компонентом является сам системный загрузчик, который размещается в основной загрузчоной записи (Master Boot Record или MBR). Эта запись расположена в рамках первого сектора жесткого диска. Вторым программным компонентом является реализация меню загрузки и используемые ею дополнительные файлы. Они располагаются за пределами основной загрузочной записи, а именно, в директории boot корневого раздела Linux.
В вашем компьютере установлено несколько жестких дисков? В таком случае вам придется помнить и о том, что системный загрузчик должен располагаться в основной загрузочной записи жесткого диска, выбранного для загрузки в меню Boot Sequence BIOS. При восстановлении GRUB вам придется указывать путь к директории с файлами системного загрузчика.
2.2. Процесс восстановления системного загрузчика в системах с BIOS
Данное описание процесса восстановления системного загрузчика подойдет для систем с классической прошивкой BIOS (это системы с предустановленными ОС Windows XP или Windows Vista). Оно также подойдет для систем с прошивками UEFI, работающих в режиме совместимости с BIOS (это системы с предустановленной ОС Windows 7). При этом оно не подойдет для систем с прошивками UEFI, не поддерживающих режимы совместимости с BIOS (это системы с предустановленными ОС Windows 8.x и Windows 10). Если в вашей системе используется новейшая прошивка UEFI, не совместимая с BIOS, вам придется обратиться к следующему разделу.
Предположим, что нам нужно восстановить системный загрузчик, затертый системным загрузчиком ОС Windows.
A. В первую очередь следует загрузить дистрибутив Linux с загрузочного оптического диска или флеш-накопителя с интерфейсом USB. Нужно выбирать вариант загрузки системы без установки.
Примечание: вам придется использовать загрузочный носитель той версии системы, которая установлена на вашем жестком диске. Например, в том случае, если на вашем жестком диске установлена система Ubuntu 16.04, вы должны использовать загрузочный диск Ubuntu 16.04.
B. Теперь следует выяснить имя файла устройства раздела с корневой директорией установленной системы. Для этого можно воспользоваться приложением Диски, доступным в Linux Mint, Ubuntu и Fedora Workstation.
Примечание: для раздела с корневой директорией системы с большой вероятностью будет использоваться файловая система EXT4. Для раздела EFI будет использоваться файловая система FAT32, причем этот раздел будет иметь флаг загрузочного раздела.
В моем случае файл устройства раздела с корневой директорией имеет имя sda5. Я буду использовать имя этого файла устройства в данном руководстве, вам же придется изменить его на имя вашего файла устройства.
C. Теперь нужно открыть окно терминала.
D. Далее нужно скопировать и вставить в окно терминала следующую команду (напоминаю, что вы должны заменить sda5 на имя файла устройства раздела с корневой директорией установленной системы):
sudo mount /dev/sda5 /mnt
После окончания ввода команды следует нажать клавишу Enter для ее исполнения. В результате раздел с корневой директорией установленной системы будет смонтирован в директорию /mnt системы, загруженной с установочного диска.
E. Теперь нужно выполнить следующую последовательность команд с помощью терминала (в последней команде должно использоваться имя файла устройства корневого раздела установленной системы без его номера):
sudo mount --bind /dev /mnt/devsudo mount --bind /dev/pts /mnt/dev/ptssudo mount --bind /proc /mnt/procsudo mount --bind /sys /mnt/syssudo chroot /mntsudo grub2-mkconfig -o /boot/grub/grub.cfgsudo grub2-install /dev/sda
После окончания ввода каждой из команд следует нажимать клавишу Enter для ее исполнения. Также лучше пользоваться функциями копирования/вставки для того, чтобы не ошибиться.
Примечание: в ходе исполнения двух последних команд может быть выведено предупреждение:
grub probe: error: failed to get canonical path of /cowInstallation finished. No error reported.
Оно никоим образом не повлияет на установку системного загрузчика.
F. Теперь нужно отмонтирвать смонтированные файловые системы. Для этого следует выполнить следующую последовательность команд:
exitsudo umount /mnt/syssudo umount /mnt/procsudo umount /mnt/dev/ptssudo umount /mnt/devsudo umount /mnt
После окончания ввода каждой из команд также следует нажимать клавишу Enter для ее исполнения.
G. Далее следует воспользоваться функцией перезагрузки системы и не забыть извлечь загрузочный накопитель. В последующем процессе загрузки вы должны увидеть меню загрузчика GRUB с пунктами для загрузки Linux и Windows. Если пункт для загрузки Windows не появился, следует загрузить Linux, открыть окно терминала и выполнить с помощью него следующую команду:
sudo grub2-mkconfig -o /boot/grub/grub.cfg
После окончания ввода команды следует нажать клавишу Enter. При запросе пароля вы должны будете ввести свой пароль. Символы вашего пароля не будут отображаться никоим образом, даже с помощью точек, и это нормально. После ввода пароля следует снова нажать клавишу Enter.
После перезагрузки пункт для загрузки Windows появится в меню загрузчика GRUB. При необходимости вы можете открыть меню системного загрузчика, зажав и удерживая клавишу Shift сразу же после исчезновения экрана загрузки BIOS.
2.3. Процесс восстановления системного загрузчика в системах с UEFI
Данное описание процесса восстановления системного загрузчика подойдет для систем с прошивкой UEFI (это системы с предустановленными ОС Windows 8.x или Windows 10). Например, после успешной установки одного из дистрибутивов Linux на такую систему в меню UEFI может не оказаться пункта для его загрузки. Кроме того, вы можете случайно привести раздел UEFI к оригинальному состоянию или обновить его содержимое, в результате чего загрузка Linux также станет невозможной. К счастью, данная проблема может быть решена без переустановки системы. Однако, вам придется неукоснительно следовать приведенным ниже инструкциям.
Примечание: данные инструкции подходят лишь для современных систем с прошивками UEFI, не работающих в режиме совместимости с BIOS. Обычно такие системы продаются с предустановленными ОС Windows 8.x или Windows 10. При этом они не подойдут для систем с классическими прошивками BIOS (это системы с предустановленными ОС Windows XP, Windows Vista и Windows 7). Если в вашей системе используется классическая прошивка BIOS, вам придется обратиться к предыдущему разделу.
На системы с прошивками UEFI традиционно устанавливаются 64-битные операционные системы, поэтому мы будем рассматривать случай «исчезновения» пункта для загрузки 64-битной Linux-системы из меню UEFI. Для решения аналогичной проблемы вам придется действовать следующим образом:
A. В первую очередь следует загрузить дистрибутив Linux с загрузочного оптического диска или флеш-накопителя с интерфейсом USB. Нужно выбирать вариант загрузки системы без установки.
Примечание: вам придется использовать загрузочный носитель той версии системы, которая установлена на вашем жестком диске. Например, в том случае, если на вашем жестком диске установлена система Ubuntu 16.04, вы должны использовать загрузочный диск Ubuntu 16.04.
B. Далее следует установить соединение с сетью Интернет. Оно необходимо для переустановки пакетов программного обеспечения.
C. Теперь нужно узнать имена файлов устройств двух разделов жесткого диска, а именно, раздела с корневой директорией системы (с системными файлами дистрибутива) и раздела EFI (содержащего загрузчики Linux и Windows). Для этого можно воспользоваться приложением Диски, доступным в Linux Mint, Ubuntu и Fedora Workstation.
Примечание: для раздела с корневой директорией системы с большой вероятностью будет использоваться файловая система EXT4. Для раздела EFI будет использоваться файловая система FAT32, причем этот раздел будет иметь флаг загрузочного раздела.
В моем случае файл устройства раздела с корневой директорией имеет имя sda5, а раздела EFI — имя sda2. Я буду использовать имена этих файлов устройств в данном руководстве, вам же придется изменить их на имена ваших файлов устройств.
D. Теперь нужно открыть окно терминала.
E. Далее нужно скопировать и вставить в окно терминала следующую команду (напоминаю, что вы должны заменить sda5 на имя файла устройства раздела с корневой директорией установленной системы):
sudo mount /dev/sda5 /mnt
После окончания ввода команды следует нажать клавишу Enter для ее исполнения. В результате раздел с корневой директорией установленной системы будет смонтирован в директорию /mnt системы, загруженной с установочного диска.
Пришло время сделать то же самое с разделом EFI. Вам придется скопировать и вставить в окно терминала следующую команду (напоминаю, что вы должны заменить sda2 на имя файла устройства раздела EFI установленной системы):
sudo mount /dev/sda2 /mnt/boot/efi
После окончания ввода команды также следует нажать клавишу Enter для ее исполнения. В результате раздел EFI установленной системы будет смонтирован в директорию /mnt/boot/efi системы, загруженной с установочного диска.
F. Теперь нужно выполнить следующую последовательность команд с помощью терминала:
sudo mount --bind /dev /mnt/devsudo mount --bind /dev/pts /mnt/dev/ptssudo mount --bind /proc /mnt/procsudo mount --bind /sys /mnt/syssudo modprobe efivarssudo chroot /mnt
После окончания ввода каждой из команд следует нажимать клавишу Enter для ее исполнения. Также лучше пользоваться функциями копирования/вставки для того, чтобы не ошибиться.
G. Пришло время переустановить пакеты программного обеспечения, в результате чего пункт для загрузки дистрибутива Linux должен снова появиться в меню UEFI. Вам придется выполнить команду, актуальную для вашего дистрибутива.
Linux Mint/Ubuntu:
sudo apt-get install --reinstall grub-efi-amd64
Fedora Workstation:
sudo dnf reinstall grub2-efi grub2-efi-modules shim
После окончания ввода команды следует нажать клавишу Enter для ее исполнения. Процесс переустановка пакетов программного обеспечения может занять достаточно много времени, поэтому вам придется набраться терпения.
H. После окончания процесса переустановки пакетов программного обеспечения следует корректно отмонтировать все разделы установленной системы. Для этого следует выполнить с помощью терминала следующую последовательность команд:
exitsudo umount /mnt/syssudo umount /mnt/procsudo umount /mnt/dev/ptssudo umount /mnt/devsudo umount /mnt/boot/efisudo umount /mnt
После окончания ввода каждой из команд также следует нажимать клавишу Enter для ее исполнения.
I. Далее следует воспользоваться функцией перезагрузки системы и не забыть извлечь загрузочный накопитель. В последующем процессе загрузки вы должны обнаружить пункт для загрузки установленной Linux-системы в меню UEFI. Если из этого меню исчез пункт для загрузки Windows, следует загрузить Linux, открыть окно терминала и выполнить с помощью него следующую команду:
Linux Mint/Ubuntu:
sudo grub2-mkconfig -o /boot/efi/EFI/ubuntu/grub.cfg
Fedora Workstation:
sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
После окончания ввода команды следует нажать клавишу Enter. При запросе пароля вы должны будете ввести свой пароль. Символы вашего пароля не будут отображаться никоим образом, даже с помощью точек, и это нормально. После ввода пароля следует снова нажать клавишу Enter.
Примечание: файл конфигурации GRUB в Linux Mint находится в директории ubuntu, так как дистрибутив Linux Mint основан на Ubuntu.
После перезагрузки пункт для загрузки Windows появится в меню UEFI.
3. Настройка GRUB
3.1. О сторонних приложениях
Перед тем, как говорить о настройке GRUB следует упомянуть о том, что не следует использовать такие инструменты, как grub-customizer для настройки GRUB. Ваш системный загрузчик является очень важным системным компонентом, который не должен настраиваться с помощью сомнительных инструментов, которые даже не находятся в официальных репозиториях популярных дистрибутивов. Если вам нужно настроить ваш системный загрузчик, вы можете воспользоваться приведенными ниже советами.
3.2. Перемещение Windows на первое место в меню системного загрузчика
В начале знакомства с Linux многим пользователям хочется, чтобы ОС Windows была выбрана и загружалась по умолчанию (рано или поздно это проходит!). Это не так сложно реализовать.
3.3. Использование изображения в качестве фона меню системного загрузчика
Меню системного загрузчика GRUB, с помощью которого вы можете выбрать операционную систему для загрузки, по умолчанию является функциональным, но не очень красивым. К счастью, это легко исправить, к примеру, использовав красивое изображение в качестве его фона.
3.4. Изменение времени показа меню системного загрузчика
Для произвольного изменения времени показа меню системного загрузчика GRUB достаточно отредактировать файл конфигурации /etc/default/grub, изменив значение переменной GRUB_TIMEOUT, после чего обновить конфигурацию самого загрузчика. Обратите внимание на то, что установка значения 0 не даст никакого эффекта: будет использоваться стандартное значение, равное 10 секундам. Если же вы все же хотите установить минимальное время показа меню, вы можете использовать значение 0.1. Для обновления конфигурации системного загрузчика в системе с классической прошивкой BIOS следует воспользоваться следующей командой:
sudo grub2-mkconfig -o /boot/grub/grub.cfg
Если у вас система с современной прошивкой UEFI, вы можете использовать одну из следующих команд:
Linux Mint/Ubuntu:
sudo grub2-mkconfig -o /boot/efi/EFI/ubuntu/grub.cfg
Fedora Workstation:
sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
После окончания ввода команды следует нажать клавишу Enter. При запросе пароля вы должны будете ввести свой пароль. Символы вашего пароля не будут отображаться никоим образом, даже с помощью точек, и это нормально. После ввода пароля следует снова нажать клавишу Enter.
3.5. Использование дополнительных параметров конфигурации ядра ОС
В некоторых случаях вам может понадобиться использовать некоторые дополнительные параметры конфигурации системного загрузчика. Наиболее полезные из них описаны ниже.
Несмотря на то, что перечисленные параметры записываются в файл конфигурации системного загрузчика GRUB, они передаются непосредственно ядру ОС, причем GRUB выступает лишь посредником в данном процессе. Данные параметры влияют на работу ядра ОС и его модулей и никак не изменяют поведение системного загрузчика GRUB. Вы можете добавлять параметры в файл конфигурации GRUB следующим образом:
A. В первую очередь следует открыть окно терминала и ввести в него следующую команду:
Linux Mint:
gksudo xed /etc/default/grub
Ubuntu/Fedora Workstation:
gksudo gedit /etc/default/grub
После окончания ввода команды следует нажать клавишу Enter. При запросе пароля вы должны будете ввести свой пароль. Символы вашего пароля не будут отображаться никоим образом, даже с помощью точек, и это нормально. После ввода пароля следует снова нажать клавишу Enter. В результате откроется окно текстового редактора с содержимым файла конфигурации GRUB.
B. В открывшемся файле конфигурации GRUB следует найти следующую строку:
GRUB_CMDLINE_LINUX=""
В кавычках должны перечисляться параметры, которые будут передаваться ядру ОС. Для разделения параметров должен использоваться символ пробела. Например, в случае необходимости передачи ядру ОС параметра nomodeset следует привести эту строку к следующему виду:
GRUB_CMDLINE_LINUX="nomodeset"
После окончания ввода параметров следует сохранить изменения в файле конфигурации и закрыть текстовый редактор.
C. Для обновления конфигурации системного загрузчика придется выполнить еще одну команду. В случае использования системы с классической прошивкой BIOS следует воспользоваться командой:
sudo grub2-mkconfig -o /boot/grub/grub.cfg
Если у вас система с современной прошивкой UEFI, вы можете использовать одну из следующих команд:
Linux Mint/Ubuntu:
sudo grub2-mkconfig -o /boot/efi/EFI/ubuntu/grub.cfg
Fedora Workstation:
sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
После окончания ввода команды следует нажать клавишу Enter для ее исполнения.
D. Наконец, следует перезагрузить компьютер.
3.5.1. Параметр nomodeset
В современных версиях ядра Linux реализован механизм установки параметров графических карт практически всех производителей. То есть, запись данных в регистры графических карт осуществляется на уровне ядра ОС, а не на уровне модуля графического сервера X.org после его запуска. Данный механизм позволяет использовать заставки с высоким разрешением при загрузке системы и избавиться от искажений при переходе от экрана загрузки к экрану входа в систему.
К сожалению при использовании некоторых видеокарт данный механизм работает ненадежно и может приводить к черному экрану после загрузки системы. Параметр nomodeset сообщает ядру ОС о том, что не нужно использовать механизм установки параметров графических карт до момента запуска графического сервера X.org. Однако, стоит учесть, что некоторые графические карты могут работать некорректно при передаче данного параметра, поэтому не стоит злоупотреблять им.
3.5.2. Параметры noacpi, noapic и nolapic
Вообще, данные параметры нужны только тогда, когда производитель материнской платы вашего компьютера нарушил стандарты при разработке прошивки BIOS или UEFI или тогда, когда ваш компьютер достаточно стар, ввиду чего эти стандарты не были реализованы в полной мере.
Стандарт ACPI (Advanced Configuration and Power Interface) описывает механизмы управления питанием. Старые системы могут не поддерживать его в полной мере, поэтому в некоторых случаях стоит сообщать ядру ОС об этом. Вы можете сделать это, передав параметр acpi=off или noacpi.
Стандарт APIC (Advanced Programmable Interrupt Controller) реализуется в более новых системах. Локальной версией данного стандарта является стандарт LAPIC. Данный стандарт описывает механизм генерации и обработки прерываний, то есть, сигналов, используемых аппаратным обеспечением компьютера. И снова, некоторые реализации APIC могут быть неполными в старых системах, поэтому стоит деактивировать их поддержку. Вы можете сделать это, передав параметры noapic и nolapic.
В некоторых случаях компьютер работает корректно и с активированной поддержкой APIC, но достаточно медленно из-за выбора неоптимального механизма обработки прерываний. Это, например, может быть выражено в виде постоянных проблем при воспроизведении аудио и видео. В подобных случаях также помогают перечисленные выше параметры.
3.5.3. Параметры quet splash
Параметр splash позволяет отображать заставку при загрузке системы. Вместе с ним обычно используется параметр quet, скрывающий выводимые в процессе загрузки системы сообщения. Вы можете без каких-либо последствий убрать эти параметры в том случае, если хотите осуществить диагностику процесса загрузки системы.
4. Удаление GRUB из основной загрузочной записи (возврат к Windows)
Удаление GRUB является печальным событием, ведь это такой отличный инструмент! Однако, если вы хотите знать все о системном загрузчике GRUB, вы также должны знать о том, как удалить его. Если говорить максимально кратко, то можно сказать, что под удалением GRUB чаще всего подразумевается замена системного загрузчика GRUB из состава дистрибутива Linux на системный загрузчик NTLoader из состава ОС Windows в основной загрузочной записи. Это может быть сделано различными способами.
4.1. Удаление GRUB с помощью Ultimate Boot CD
Вы можете заменить системный загрузчик GRUB на системный загрузчик NTLoader с помощью загрузочного диска Ultimate Boot CD (UBCD). Образ этого загрузочного диска доступен на данном веб-сайте.
После окончания загрузки файла образа диска вам придется записать этот файл на оптический диск (используйте функцию записи образа диска). Далее нужно загрузить компьютер с этого диска (для этого нужно выбрать привод для чтения оптических дисков в качестве загрузочного устройства в BIOS).
Ultimate Boot CD содержит несколько инструментов, предназначенных для восстановления системного загрузчика NTLoader в основной загрузочной записи диска. Рассмотрим методику использования одного из них.
Сначала вам нужно будет с помощью меню выбрать жесткий диск, после чего выбрать действие Boot Management и, наконец, выбрать инструмент Super Grub Disk. После этого вам нужно будет снова нажать клавишу Enter для запуска Super Grub Disk. Далее нужно просто выбрать пункт:
Win => MBR & !WIN! :(((((((((((((((((((((((((((((((((
и нажать клавишу Enter.
Примечание: использование огромного количества круглых скобок является не моей идеей, а идеей автора Super Grub Disk…
И это все, что нужно было сделать! Теперь вы можете перезагрузить свой компьютер. После перезагрузки будет загружена ОС Windows.
4.2. Удаление GRUB с помощью FreeDOS
Для удаления системного загрузчика может также использоваться флеш-накопитель с интерфейсом USB. Вам понадобятся три приложения: Unetbootin, FreeDOS и Testdisk для DOS.
A. Для начала нужно загрузить приложение Unetbootin и создать с помощью него загрузочный флеш-накопитель. При запросе названия операционной системы следует выбрать FreeDOS.
B. Теперь нужно загрузить версию утилиты Testdisk для DOS/Win9x (версия для Windows не подойдет!).
C. Далее нужно извлечь файлы testdisk.exe и CWSDPMI.exe из архива утилиты Testdisk на загрузочный флеш-накопитель (прямо в корневую директорию, не создавая каких-либо поддиректорий).
D. Теперь нужно загрузить компьютер с созданного флеш-накопителя. При появлении начального окна достаточно нажать на клавишу Enter.
E. На данном этапе должна начаться загрузка операционной системы FreeDOS. Вы должны выбрать вариант загрузки:
FreeDOS Safe Mode (don't load any drivers)
Для продолжения процесса загрузки следует нажать клавишу Enter.
F. После окончания процесса загрузки операционной системы нужно перейти в корневую директорию флеш-накопителя с помощью следующей команды:
C:
После окончания ввода команды следует нажать клавишу Enter для ее исполнения.
G. Теперь нужно запустить утилиту Testdisk с помощью следующей команды:
testdisk
После окончания ввода команды следует также нажать клавишу Enter для ее исполнения.
H. Утилита должна начать работу. Для начала следует выбрать режим без журналирования [No Log] и нажать клавишу Enter.
I. Далее следует выбрать нужный жесткий диск: обычно это второй диск в списке (первым диском является сам флеш-накопитель). После выбора диска нужно нажать на клавишу Enter.
J. Далее нужно выбрать вариант [Intel] и нажать клавишу Enter.
K. Наконец, нужно выбрать вариант [MBR Code] и нажать клавишу Enter. При запросе подтверждения следует ввести y (yes) и снова нажать клавишу Enter.
И это все, что нужно было сделать! Теперь вы можете перезагрузить свой компьютер. После перезагрузки будет загружена ОС Windows.
5. Хотите ознакомиться с дополнительными советами?
Хотите узнать о других настройках и приемах работы с Linux-системами? На данном веб-сайте размещено большое количество подобных материалов.
Ссылки по теме
- Arch boot process
- Boot debugging
- grub-gfx (Русский)
- Kernel parameters
GNU GRUB это Многосистемный загрузчик. Он является ответвлением от GRUB,(GRand Unified Bootloader), который был разработан Эриком Стефаном Болейном (Erich Stefan Boleyn).
Вкратце, загрузчик — это первая программа, которая загружается при старте компьютера. Она отвечает за загрузку и передачу управления ядру Linux. Ядро, в свою очередь, запускает остальную часть операционной системы.
В данный момент, GRUB де-факто является стандартным загрузчиком LINUX, и в скором времени будет заменён на GRUB2. Когда это случится, «GRUB» сменит свое текущее название на «GRUB Legacy».
Contents
- 1 Установка
- 2 Настройка
- 2.1 Определение корневой директории для GRUB
- 2.2 Двойная загрузка с Windows
- 2.3 Двойная загрузка с GNU/Linux
- 2.4 chainloader and configfile
- 3 Установка загрузчика
- 3.1 Установка в MBR
- 3.2 Установка в раздел
- 3.3 Альтернативный метод (grub-install)
- 4 Советы и трюки
- 4.1 Загрузка в графическом режиме
- 4.2 Видеорежим
- 4.2.1 vbetest
- 4.2.2 hwinfo
- 4.2.3 Видеорежимы, детектируемые GRUB
- 4.3 Метки разделов
- 4.4 Парольная защита
- 4.5 Перезагрузка в ОС по выбору
- 4.6 Взаимодействие LILO и GRUB
- 4.7 Загрузочная дискета GRUB
- 5 Решение проблем
- 5.1 GRUB Error 17
- 5.2 Случайная установка GRUB в раздел Windows
- 5.3 Редактирование параметров GRUB из меню загрузки
- 5.4 Ошибка device.map
- 5.5 Выбор ОС при перезагрузке KDE не работает
- 6 Внешние ресурсы
Установка
Пакет GRUB устанавливается по умолчанию в процессе установки Arch Linux. Если Вы первоначально не отметили для установки данный пакет, его можно установить с помощью:
После установки пакета дополнительно необходимо установить загрузчик GRUB в загрузочный сектор или на раздел диска, чтобы он смог выполнять загрузку операционной системы(систем). Этот процесс описан в главе Установка загрузчика.
Настройка
Файл настроек расположен в /boot/grub/menu.lst. Отредактируйте этот файл в соответствии с Вашими требованиями.
timeout #— время ожидания (в секундах) перед загрузкой операционной системы по умолчанию (default).default #— номер записи, соответствующий операционной системе, загружаемой по умолчанию по истечении времениtimeout.
Пример файла настроек (директория /boot расположена на отдельном разделе):
# Конфигурационный файл для GRUB - The GNU GRand Unified Bootloader
# /boot/grub/menu.lst
# ПРЕОБРАЗОВАНИЕ ИМЕН УСТРОЙСТВ
#
# Linux Grub
# -------------------------
# /dev/fd0 (fd0)
# /dev/sda (hd0)
# /dev/sdb2 (hd1,1)
# /dev/sda3 (hd0,2)
#
# ВИДЕОРЕЖИМ - РАЗРЕШЕНИЕ ФРЕЙМБУФЕРА (FRAMEBUFFER RESOLUTION)
# +-------------------------------------------------+
# | 640x480 800x600 1024x768 1280x1024
# ----+--------------------------------------------
# 256 | 0x301=769 0x303=771 0x305=773 0x307=775
# 32K | 0x310=784 0x313=787 0x316=790 0x319=793
# 64K | 0x311=785 0x314=788 0x317=791 0x31A=794
# 16M | 0x312=786 0x315=789 0x318=792 0x31B=795
# +-------------------------------------------------+
# для более детальной информации о настройках видеорежима:
# http://wiki.archlinux.org/index.php/GRUB#Framebuffer_Resolution
#
# Совет: Если Вам необходимо разрешение 1024x768, добавьте "vga=773" к строке kernel.
#
# Общие настройки:
timeout 5
default 0
color light-blue/black light-cyan/blue
# Неявная нумерация загрузочных секций начинается с 0
# (0) Arch Linux
title Arch Linux
root (hd0,0)
kernel /vmlinuz-linux root=/dev/sda3 ro
initrd /initramfs-linux.img
# (1) Windows
#title Windows
#rootnoverify (hd0,0)
#makeactive
#chainloader +1
Определение корневой директории для GRUB
GRUB должен обладать информацией о том, где в системе находятся его файлы. Это важно, поскольку таких мест может быть несколько (в случае с несколькими операционными системами). Файлы GRUB всегда располагаются в директории /boot, которая может находиться на отдельном разделе.
Примечание: GRUB присваивает имена устройствам хранения данных иначе, чем это делает ядро.
- Жесткие диски именуются как (hdX); также именуются и любые USB устройства хранения данных.
- Нумерация устройств и разделов начинается с нуля. Например, первый обнаруженный BIOS-ом жесткий диск будет иметь имя (hd0). Второе устройство будет иметь имя (hd1). Тот же принцип верен и для разделов. Например, второй раздел на первом жестком диске будет именоваться (hd0,1).
Если Вы не уверены где в Вашем случае находится /boot, используйте команду find во встроенной командной оболочке GRUB. Для того чтобы открыть командную оболочку, наберите:
Ниже приведен пример для систем без отдельного раздела под /boot, т.е. когда /boot является обычной директорией внутри корневой директории /:
grub> find /boot/grub/stage1
Следующий пример для систем с отдельным разделом /boot:
GRUB найдет нужный файл и выведет местоположение файла stage1, нарпимер:
Полученное значение должно быть указано в строке root в Вашем файле настроек. Для выхода из командной оболочки наберите quit.
Двойная загрузка с Windows
Добавьте следующие строки в конец Вашего /boot/grub/menu.lst (подразумевается, что Windows установлена на первый раздел первого диска):
title Windows
rootnoverify (hd0,0)
makeactive #если Вы используете Windows 7, закомментируйте эту строку
chainloader +1
Примечание: Windows, начиная с версии 2000, НЕ требует для нормальной загрузки, чтобы система располагалась на первом разделе диска (вопреки распространенному заблуждению). Если по какой-либо причине изменился номер раздела с уже установленной Windows (например, если Вы добавили раздел перед существующим разделом с Windows), Вам необходимо внести соответствующие изменения в файл boot.ini (см. эту статью для более детальной информации).
Если Windows расположена на другом жестком диске, необходимо использовать команду map. Тогда Windows будет считать, что она установлена на первый жесткий диск. Предположим, что Windows установлена на первый раздел второго диска:
title Windows
map (hd0) (hd1)
map (hd1) (hd0)
rootnoverify (hd1,0)
makeactive #если Вы используете Windows 7, закомментируйте эту строку
chainloader +1
Двойная загрузка с GNU/Linux
Вы можете указать настройки, подобные тем, которые определяет сам Arch Linux во время установки, например:
title Other Linux
root (hd0,2)
kernel /path/to/kernel root=/dev/sda3 ro
initrd /path/to/initrd
Однако могут потребоваться дополнительные параметры, или может не использоваться начальный RAM диск. Проверьте содержимое файла /boot/grub/menu.lst в других установленных дистрибутивах, чтобы выяснить корректные значения параметров загрузки, но лучшим решением будет использование команд chainloader and configfile
chainloader and configfile
Для облегчения процесса дальнейшего сопровождения системы, рекомендуется использовать команды chainloader и configfile для загрузки дистрибутивов, имеющих механизмы «автоматической» настройки параметров GRUB (например, Debian, Ubuntu, OpenSUSE). Таким образом, дистрибутивы будут самостоятельно управлять параметрами своей загрузки, в т.ч. и menu.lst.
-
Команда загрузки
chainloaderвыполнит вызов другого загрузчика, вместо того, чтобы загружать образ ядра. Эта функция удобна в случае, если в загрузочной записи раздела есть установленный загрузчик (например, GRUB). Таким образом, мы можем установить «главный» GRUB в главную загрузочную запись (MBR), и, дополнительно для каждого дистрибутива, установить GRUB в загрузочные записи разделов(PBR), на которых они установлены. -
Команда
configfileсообщает GRUB, что он должен загрузить определенный конфигурационный файл. Эта возможность используется для подгрузки файлаmenu.lst, который принадлежит другому дистрибутиву. При этом не требуется обязательное наличие отдельно установленного GRUB для этого дистрибутива. Однако главным недостатком такого подхода является возможная несовместимость установленного GRUB с «чужим»menu.lst, поскольку некоторые дистрибутивы вносят существенные модификации в свои версии GRUB.
Например, GRUB устанавливается в MBR, а другой загрузчик (это может быть GRUB или LILO) уже установлен в загрузочный сектор (hd0,2).
---------------------------------------------
| | | | % |
| M | | | B % |
| B | (hd0,0) | (hd0,1) | L % (hd0,2) |
| R | | | % |
| | | | % |
---------------------------------------------
| ^
| chainloading |
-----------------------------
В данном случае достаточно прописать в menu.lst:
title Other Linux
root (hd0,2)
chainloader +1
Если загрузчиком в (hd0,2) является GRUB, можно использовать команду configfile:
title Other Linux
root (hd0,2)
configfile /boot/grub/menu.lst
Команда chainloader также может быть использована для запуска загрузчика расположенного в MBR на другом диске.
title Other drive
rootnoverify (hd1)
chainloader +1
Установка загрузчика
GRUB может быть установлен с отдельного носителя (например, с LiveCD), или путем установки из-под запущенного Arch Linux. Переустановка загрузчика GRUB требуется довольно редко, в ней нет необходимости, когда:
- Изменился конфигурационный файл.
- Обновлен пакет GRUB.
Установка/переустановка загрузчика необходима когда:
- Загрузчик ещё не установлен.
- Другая операционная система при установке затерла существующий загрузчик.
- Загрузчик не стартует по неизвестным причинам.
Несколько замечаний, прежде чем мы продолжим:
- Убедитесь, что Ваш файл настройки
/boot/grub/menu.lstне содержит ошибок. Обратитесь к Определение корневой директории для GRUB для того, чтобы убедиться, что имена устройств заданы корректно. - Для того чтобы большинство версий BIOS корректно распознало наличие загрузчика, GRUB должен быть установлен в MBR (первый сектор жесткого диска), или в первом разделе первого устройства хранения данных. Для того чтобы позволить различным дистрибутивам управлять настройкой своих опций загрузки, можно использовать несколько экземпляров GRUB, см. chainloader and configfile .
- Для некоторых случаев потребуется установка загрузчика GRUB из-под
chrootокружения, например для установки загрузчика на RAID-тома, или в случае, когда загрузчик вышел из строя, и Вы не можете загрузить Вашу операционную систему. Для этого вам необходимо выполнить Change root из-под LiveCD, или другой инсталляции Linux. - Файлы
*stage*должны находиться в/boot/grub, что может не соответствовать действительности, если загрузчик не был установлен в процессе установки системы. Данное затруднение может быть разрешено путем копирования необходимых файлов:cp -a /usr/lib/grub/i386-pc/* /boot/grub.
Сначала откройте командную оболочку GRUB:
Используйте команду root с параметром, полученным в результате команды find (см.Определение корневой директории для GRUB ), чтобы указать GRUB, какой из разделов содержит stage1 (и, соответственно, там же находится и /boot):
Tip: Командная оболочка GRUB поддерживает автодополнение по клавише Tab. Если Вы наберете ‘root (hd’ и нажмете Tab дважды, Вы увидите список доступных устройств, аналогично можно получить список доступных разделов. Автодополнение также работает и в загрузочном меню GRUB. Например, если Вы допустили ошибку в конфигурационном файле, вы можете позже в загрузочном меню отредактировать запись, используя автодополнение по клавише Tab, чтобы получить подсказку, какое имя устройства/раздела нужно указать вместо ошибочного. См. Редактирование параметров GRUB из меню загрузки.
Установка в MBR
Следующий пример устанавливает загрузчик GRUB в MBR первого жесткого диска:
Установка в раздел
Следущий пример устанавливает загрзчик GRUB в первый раздел первого жесткого диска:
После выполнения команды setup, введите команду quit, для того, чтобы выйти из командной оболочки. Если Вы используете chroot, выйдите из chroot окружения и отмонтируйте разделы (см. exit your chroot and unmount partitions). Теперь выполните перезагрузку системы.
Альтернативный метод (grub-install)
Tip: Этот метод менее надежный, более предпочтительной является установка загрузчика из командной оболочки GRUB.
Используйте команду grub-install с именем целевого устройства для установки загрузчика. Например, для установки загрузчика в MBR первого диска:
grub-install сообщит, удачно ли прошел процесс установки. Если вонзникли проблемы, воспользуйтесь методом установки из командной оболочки GRUB.
Советы и трюки
Замечания по дополнительным параметрам.
Загрузка в графическом режиме
Для разного рода «украшений» можно использовать grub-gfx. GRUB2 также предлагает расширенные графические возможности, такие как фоновые изображения и растровые шрифты.
Видеорежим
Вы можете использовать один из видеорежимов, описанных в примере menu.lst, однако, если Вы решили задействовать широкоэкранный LCD монитор с использованием его родного разрешения, то нижеперечисленные советы помогут Вам достичь желаемого.
В статье Wikipedia, представлен расширенный список разрешений фреймбуфера (тех, которые не входят в стандарт VBE). Но при использовании разрешения 1440×900 (vga=867) возникают проблемы. Это связано с тем, что производители видеокарт не ограничены стандартом VBE 3, и они могут выбирать номера кодов для видеорежимов, как им заблагорассудится. Именно поэтому эти коды различаются для разных видеокарт (иногда даже и у одного и того же производителя).
Таким образом, вместо использования готовой таблицы, будет лучше воспользоваться методами, описанными ниже, для получения корректного кода видеорежима.
vbetest
- Установите пакет lrmi, который содержит утилиту vbetest (пользователи системы x86_64 должны использовать #hwinfo вместо vbetest)
- Запустите vbetest от имени суперпользователя
- Запомните значение в [ ], соответствующее выбранному Вами видеорежиму
- Нажмите
qдля выхода из vbetest- Вы можете проверить выбранный вами видеорежим, достаточно запустить от имени суперпользователя команду
vbetest -m <ваш_код>. Вы должны увидеть таблицу такого плана
- Вы можете проверить выбранный вами видеорежим, достаточно запустить от имени суперпользователя команду
- Прибавьте 512 к значению, которое Вы получили на предыдущем шаге, и пропишите его в параметр
vgaдля соответствующей записиmenu.lst - Перезагрузите машину и любуйтесь полученным результатом
Например, vbetest выдает на компьютере:
[356] 1440x900 (256 color palette)
[357] 1440x900 (8:8:8)
Значит искомое значение — это 357. Затем, 357 + 512 = 869, значит необходимо указать vga=869. Добавляем полученное значение к строке kernel в файле menu.lst, как показано ниже:
kernel /vmlinuz-linux root=/dev/sda1 ro **vga=869**
Примечание:
- (8:8:8) Глубина цвета 24-bit (то же и для 32bit)
- (5:6:5) Глубина цвета 16-bit
- (5:5:5) Глубина цвета 15-bit
hwinfo
- Установите пакет hwinfo из [AUR].
- Запустите команду
hwinfo --framebufferс правами пользователя root. - Выберите код, соответствующий желаемому разрешению.
- Используйте полученный 6-ти значный код с префиксом 0x для параметра
vga=в соотв. записи kernel вmenu.lst. Если Вы предпочитаете не использовать префикс 0x, тогда необходимо перевести значения кода из шестнадцатеричной системы в десятичную.
Пример вывода команды hwinfo:
Mode 0x0364: 1440x900 (+1440), 8 bits
Mode 0x0365: 1440x900 (+5760), 24 bits
Соответственно срока в menu.lst должна иметь вид:
kernel /vmlinuz-linux root=/dev/sda1 ro **vga=0x0365**
Примечание: vbetest выдает значения кодов в формате VESA, чтобы преобразовать их в соответствующие коды видеорежимов ядра — необходимо прибавить значение 512. Команда hwinfo, напротив, выдает коды видеорежимов ядра, и не требует дополнительных манипуляций с полученным значением (не считая необязательного перевода в десятичную систему).
Видеорежимы, детектируемые GRUB
Существует достаточно простой метод определения кода видеорежима с использованием соотв. возможностей самого GRUB.
В строке kernel укажите, что ядро должно предложить пользователю самостоятельно выбрать код видеорежима во время загрузки.
kernel /vmlinuz-linux root=/dev/sda1 ro **vga=ask**
Теперь перезапустите систему. GRUB предложит на выбор список доступных основных видеорежимов, также доступна опция сканирования, для детектирования дополнительных видеорежимов.
Вы можете выбрать любое значение (нужно запомнить это значение, оно понадобится на следующем шаге) и продолжить процесс загрузки.
Выбранное Вами значение кода видеорежима является шестнадцатеричным, чтобы использовать его как опцию в строке kernel, переведите данное значение в десятичную систему.
Теперь замените значение параметра vga ask на десятичное значение кода видеорежима. Например, строка kernel для режима [369] 1680x1050x32 будет выглядеть:
kernel /vmlinuz-linux root=/dev/sda1 ro **vga=873**
Метки разделов
Если Вы периодически меняете (или планируете менять) расположение разделов на диске, или меняете местами сами устройства жестких дисков (вообще, любые действия, которые приводят к тому, что у одного и того же устройства может меняться имя в системе), тогда для Вас имеет смысл адресовать загрузочные устройства не по именам вида (hdX,Y) а по меткам. Для установки метки раздела формата ext2, ext3, ext4 используется команда:
e2label </dev/drive|partition> label
Задайте для устройства метку длиной не более 16 символов, и не содержащую пробелов, в противном случае GRUB не сможет корректно распознать подобную метку. Затем пропишите в menu.lst строку вида:
kernel /boot/vmlinuz-linux root=/dev/disk/by-label/Arch_Linux ro
Парольная защита
Вы можете установить пароль в конфигурационном файле GRUB для тех операционных систем, которые необходимо защитить от несанкционированной загрузки. Пароль загрузчика GRUB удобно использовать, когда аналогичная возможность BIOS либо не доступна, либо не предоставляет необходимой функциональности.
Сначала выберите пароль (постарайтесь его не забыть в дальнейшем), затем зашифруйте его:
# grub-md5-crypt
Password:
Retype password:
$1$ZOGor$GABXUQ/hnzns/d5JYqqjw
Затем добавьте строку с зашифрованным паролем в конфигурационный файл GRUB (строка с паролем должна находиться в начальной части файла, чтобы GRUB корректно её обработал):
# general configuration
timeout 5
default 0
color light-blue/black light-cyan/blue
password --md5 $1$ZOGor$GABXUQ/hnzns/d5JYqqjw
Затем, для каждой операционной системы, которую Вы желаете защитить, добавьте команду lock:
# (0) Arch Linux
title Arch Linux
lock
root (hd0,1)
kernel /boot/vmlinuz-linux root=/dev/disk/by-label/Arch_Linux ro
initrd /boot/initramfs-linux.img
Важно: Если в BIOS отсутствует возможность загрузки с других устройств (таких как CD-привод), и паролем защищены все операционные системы, то будет достаточно проблематично возобновить загрузку в случае, если Вы забыли свой пароль.
Перезагрузка в ОС по выбору
Если Вам часто приходится перегружаться в другую ОС (например, Windows), иногда бывает утомительным следить за процессом перезагрузки, чтобы не пропустить момент выбора нужной ОС, и случайно, не загрузиться опять в систему по умолчанию. Для решения данной проблемы существует возможность назначения временной «ОС по умолчанию».
Предположим у нас есть файл menu.lst с подобными настройками:
# general configuration:
timeout 10
default 0
color light-blue/black light-cyan/blue
# (0) Arch
title Arch Linux
root (hd0,1)
kernel /boot/vmlinuz-linux root=/dev/disk/by-label/ARCH ro
initrd /boot/initramfs-linux.img
# (1) Windows
title Windows XP
rootnoverify (hd0,0)
makeactive
chainloader +1
Текущей ОС по умолчанию является Arch (0). Измените значение default 0 на default saved — теперь при загрузке, номер ОС по умолчанию будет взят из файла default в папке GRUB. Запись в файл default выполняет команда savedefault, поэтому добавьте savedefault 0 в конец объявления параметров Windows. Таким образом, мы добьемся того, что когда загружается Windows — системой по умолчанию снова становится Arch (даже если до этого системой по умолчанию была Windows).
Теперь, всё, что нам нужно — это найти простой способ установки значения ОС по умолчанию. Такую возможность предоставляет команда grub-set-default. Например, чтобы из Arch перегрузиться сразу в Windows, наберите команду:
sudo grub-set-default 1 && sudo shutdown -r now
Возможно Вы захотите разрешить пользователям выключение системы без необходимости ввода пароля root. Такую же процедуру необходимо выполнить и для команды grub-set-default.
Взаимодействие LILO и GRUB
Если в ваше системе установлен пакет LILO, удалите его.
При выполнении некоторых задач (например при компилировании ядра с командой make all) пакет LILO может значиться в зависимостях, и может быть автоматически установлен в систему, при этом загрузчик GRUB будет затерт.
Примечание: Команда pacman -R lilo удалит пакет из системы, но не удалит загрузчик LILO из MBR. Загрузчик LILO, находящийся в MBR может быть перезаписан только в процессе установки другого загрузчика (например, GRUB).
Загрузочная дискета GRUB
Для начала отформатируйте дискету:
fdformat /dev/fd0
mke2fs /dev/fd0
Затем подмонтируйте её:
mount -t ext2 /dev/fd0 /mnt/fl
Установите GRUB на дискету:
grub-install --root-directory=/mnt/fl '(fd0)'
Скопируйте Ваш menu.lst на дискету:
cp /boot/grub/menu.lst /mnt/fl/boot/grub/menu.lst
И, в завершение, отмонтируйте дискету:
Теперь, в случае возникновения проблем с загрузкой, Вы можете загрузить Вашу систему используя загрузочную дискету GRUB.
Дополнительная информация: Super GRUB Disk
Решение проблем
GRUB Error 17
В случае неразберихи с таблицей разделов, всё что Вы можете наблюдать при попытке загрузки системы — это лаконичное сообщение «GRUB error 17». Существует несколько причин, которые могут привести к искажению таблицы разделов. Чаще всего подобные проблемы связаны с изменением порядка разделов, в результате работы пользователя с программой GParted. Например, Вы удалили раздел /dev/sda6, затем изменили размер раздела /dev/sda7, и, наконец, создали заново раздел, который, как ожидалось, снова должен стать /dev/sda6. Однако этот новый раздел получит, например, имя /dev/sda9.
Исправить таблицу разделов достаточно легко. Для этого загрузитесь с Live-CD, войдите в систему как root и запустите команду:
Затем войдите в режим e[x]tra/expert. Далее [f]ix the partition order, и сохраните таблицу [w]rite. Затем выйдите из программы fdisk. Проверить состояние таблицы разделов после исправления можно с помощью команды fdisk -l. Теперь осталось исправить параметры GRUB, см. предыдущую секцию Установка загрузчика.
Обычно, всё что Вам нужно — это указать корректное расположение директории /boot и перезаписать загрузчик, находящийся в MBR. Например:
grub> root (hd0,6)
grub> setup (hd0)
grub> quit
Более детальная информация о «GRUB Error 17» доступна по ссылке
Случайная установка GRUB в раздел Windows
Если Вы случайно установили GRUB на раздел с Windows, GRUB запишет определенные данные в загрузочный сектор раздела, затерев при этом ссылку на загрузчик Windows.
Для восстановления загрузочной записи Вам понадобится загрузочный диск с консолью восстановления (Windows Recovery Console) для вашей версии Windows. Поскольку многие поставщики не предоставляют загрузочные диски для восстановления (а создают скрытые разделы для восстановления системы), Microsoft предоставляет возможность скачать эти инструменты. Если Вы использете XP, перейдите по этой ссылке, чтобы получить возможность использовать дискету в качестве диска восстановления (Recovery CD). Загрузитесь с диска Recovery CD (или войдите в режим Recovery c установочного диска), и запустите команду fixboot, чтобы восстановить загрузочный сектор. После этого вам снова придется устанавливать GRUB, —только теперь установите его в MBR, а не в раздел с Windows—.
Более детальная информация: ссылка.
Редактирование параметров GRUB из меню загрузки
Выбрав один из пунктов в меню загрузки, Вы можете отредактировать его нажав клавишу e. Использйте автодополнение по клавише Tab, чтобы получить подсказку по доступным именам устройств/разделов, используте клавишу Esc для выхода. После того, как Вы отредактировали запись, можете попытаться загрузить её, нажав клавишу b. Внесенные Вами изменения не будут сохранены.
Ошибка device.map
Если во время устаноки, или во время загрузки появляются ошибки с упоминанием файла /boot/grub/device.map, необходимо выполнить команду:
# grub-install --recheck /dev/sda
для того, чтобы GRUB пересоздал таблицу устройств, даже если она уже существует. Это может потребоваться после изменения разделов, или добавления/удаления жесткик дисков.
Выбор ОС при перезагрузке KDE не работает
Если в окне перезагрузки KDE Вы открыли подменю со списком операционных систем, выбрали нужную ОС, перегрузили компьютер, и по прежнему загрузились в ОС по умолчанию, вместо выбранной, тогда проверьте наличие строки
В Вашем /boot/grub/menu.lst.
Внешние ресурсы
-
GNU GRUB
-
GRUB Grotto
-
Linux Kernel Documentation :: kernel-perameters.txt
-
List of kernel parameters with further explanation and grouped by similar options
-
Изучите также примеры конфигурации GRUB


