Как поменять загрузчик grub на windows

I've got an HP Pavilion Touchsmart notebook that came with Windows 8. I've upgraded to 8.1, and now I want to dual-boot an Ubuntu distribution with Windows 10. When dual-booting with Windows 8.1, the

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:

  1. 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)
  2. Navigate to Power Options
  3. Click «Choose what the power button does»
  4. Click «Change settings that are currently unavailable»
  5. 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:

    1. 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…
    2. 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.
    3. 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.
    4. 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:

Picture of EFI Boot Manager entry list from the output of efibootmgr

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.)

Screenshot of Xubuntu 14.04 install options

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.

В этой статье я отвечу на вопросы по загрузчику для linux os — Grub. Вы узнаете, как установить загрузчик по умолчанию, чем редактировать Груб, как вернуть загрузочный раздел, исправить загрузочную запись и мн. др.

Вот полный перечень вопросов, которые я попытаюсь раскрыть в данном материале:

  1. как настроить очередность загрузки в grub
  2. как перезаписать загрузчик на windows
  3. как восстановить загрузочное меню
  4. где скачать и как установить мультизагрузчик операционных систем grub?
  5. добавление пункта загрузки Груб в windows
  6. ubuntu windows очередность загрузки — как в grub сделать windows по умолчанию
  7. как сделать резервную копию (backup) для grub list
  8. в каком разделе диска лежит загрузчик Linux и Windows
  9. как вернуть загрузочный экран убунту
  10. как установить загрузчик windows вместо grub
  11. замена сектора загрузки grub
  12. редактировать grub через терминал в ubuntu
  13. программы для редактирования загрузчиков

Обычно при загрузке компьютера загружается только одна операционная система. Пока она одна, проблем нет. Если же систем несколько, при загрузке выводится загрузочное меню, не всегда оптимально удобное для загрузки. Мелочь, правда? Но на деле все не так, когда перезагрузка компьютера осуществляется по доброму десятку раз на день.

Загрузчик — это программное обеспечение, которое устанавливается на первый сектор загрузочного диска (MBR — master boot record). Для каждой операционной системы он свой, и не иначе. И у каждого из них имеются свои особенности и «отношение» к другим загрузчикам и операционным системам. Например, при установке Windows XP (или Windows Vista) поверх Ubuntu загрузчик последней ОС безо всякого предупреждения затирается, и загрузка Ubuntu становится невозможной. Проблема? Проблема. Ведь, по сути, операционная система продолжает существовать, а загрузить ее — невозможно.

Никто не собирается вас пугать. Мы поставили несколько проблем и попробуем найти возможные пути их решения. Два варианта: бесплатный и платный. В первом случае всю настройку мы будем производить вручную, во втором — установим загрузочную программу Acronis OS Selector или бесплатные редакторы загрузчика.

Одна, две, три… Сколько?

Функциональности одной операционной системы вполне хватает для решения несложных повседневных задач. Нужно больше возможностей — устанавливаем дополнительное программное обеспечение.

При установке двух ОС достигается определенный компромисс между платным и бесплатным программным обеспечением. То, что для платформы Windows предлагается за деньги, Linux отдает в ваше распоряжение, как правило, бесплатно (open source ПО). Правда, многие профессиональные пакеты разработаны только для одной среды, преимущественно для Windows. Примеры с Adobe, Nero Express, OpenOffice, к сожалению, пока единичны, чтобы говорить об обратном. Есть программное обеспечение, аналогов которого нет и пока еще не может быть в той или иной ОС.

У каждой системы есть как свои замечательные достоинства, так и недостатки. Например, по нашему мнению, Windows — более «развлекательная» среда, Linux — рабочая система, задуманная для решения ресурсоемких задач, работы с данными и т. д. Оптимизировать Windows для работы так, как Linux, невозможно. Впрочем, судя по дистрибутивам Ubuntu, Fedora и другим «дружелюбным» ОС семейства, с большей «мультимедийностью» Windows можно согласиться только отчасти.

Три операционных системы — это, в большинстве случаев, излишество. Правда, и тут есть свои нюансы. Иногда возникают сложные ситуации, когда без наличия трех ОС на одном компьютере никак нельзя обойтись. Для этого не обязательно обладать прозвищем «компьютерный гений». И вряд ли это то, чем можно кого-либо удивить… Например, что делать, если по роду службы вы постоянно меняете среду (Ubuntu/Vista/XP) для проведения каких-либо обзоров или тестов? Каждый раз «сносить» одну и на ее место устанавливать другую ОС? Да, есть и такой «проходной» вариант. Для этого нужно на один диск (к примеру — C: ) поставить Windows XP, а на другой (D:) — Vista или Ubuntu. Каждый раз, когда необходимо сменить ОС, вы ставите на D: нужную ОС. Вопрос только во времени.

Проще всего остановиться на двух, а, еще лучше, на одной операционной системе. Но мы пойдем другим путем.

Примечание. Существуют портированные версии операционной системы Mac OS X, которые достаточно успешно устанавливаются на PC платформу. В этом материале мы не рассматриваем OS X по следующим причинам:

  1. это не оригинальная, а незаконно модифицированная версия ОС
  2. аудитория читателей, использующих эти дистрибутивы, крайне мала. Достаточно представить себе количество пользователей продукции Apple.

Очередность действий

Если нужен суперфункциональный компьютер с работоспособным загрузчиком, вам заранее нужно побеспокоиться о правильной последовательности установки каждой из ОС. Ведь если поставить ту же Vist’у последней, то загрузчик Ubuntu, GRUB, будет стерт с MBR. XP просто не устанавливается поверх Vista, посему она не может быть оставлена напоследок. Исходя из сказанного, все действия производятся на компьютере в следующем порядке:

1) Windows XP. Устанавливается на диск с загрузочным сектором. Все загрузчики в последующем будут автоматически устанавливаться на раздел с этой меткой. Как узнать, на каком диске она находится? В этом помогут специализированные программы для работы с дисковой подсистемой — Norton Partition Manager, Acronis Disc Director, Acronis Partition Expert и многие другие.

Диск, отмеченный как «Active», обязательно имеет загрузочный сектор.

2) Windows Vista. Устанавливаем ее на диск, отличный от того, где расположена XP. После инсталляции Vista в загрузочном меню должны присутствовать два пункта: собственно, Vista и «Earlier operating systems» («Предыдущая операционная система»), под которой подразумевается XP. То есть, если XP была установлена до Vista, она успешно будет определена и добавлена в список.

3) Ubuntu (это правило применимо к любой ОС семейства Linux). Поскольку данная операционная система ставится последней, то загрузчик, устанавливаемый ею, станет основным. На последнем этапе установки Ubuntu не меняйте настройки (кнопка «Advanced»), чтобы GRUB, как и положено, установился на диск с загрузочной меткой.

Нужно сказать, GRUB весьма «толерантен» по отношению к своим «конкурентам»: он корректно определяет имеющиеся на компьютере системы и вносит их в собственный список. При наличии XP и Vista GRUB не удаляет загрузчик Windows. И при выборе пункта меню, который идет после надписи «Other operating systems» («Windows Vista/Longhorn loader»), появится второй экран, где можно выбрать одну из ОС Windows.

Впоследствии созданный GRUB’ом список можно подкорректировать, поменяв названия, удалив лишние пункты загрузки или сменив их очередность. Благо, документация к GRUB присутствует в достаточном объеме. Общими словами, это отлично конфигурируемый, документированный, user-friendly (дружелюбный по отношению к пользователю) загрузчик.

Где скачать и как установить Груб

Исходники GRUB можно скачать с сервера ftp://alpha.gnu.org/pub/gnu/grub. 
Далее распакуйте скачанный дистрибутив, используя команду “tar -xvzf filename.tar.gz”. Если взять в расчет название файла grub-
0.5.96.1.tar.gz, перечень операций будет выглядеть следующим образом: 

# tar -xvzf grub-0.5.96.1.tar.gz 

Итак, мы распаковали содержимое в директорию под названием “grub-0.5.96.1”. Выполняем следующие шаги:

[[email protected] ~/grub-0.5.96.1 ]# ./configure 

Можно изменить определенные опции в процессе компиляции: 

[[email protected] ~/grub-0.5.96.1 ]# ./configure --help 

При этом отобразятся все доступные опции. Можно использовать префикс –enable или -
disable
, что обеспечивает поддержку определенных устройств загрузчиком.  

Чтобы начать компилирование, введите

[[email protected] ~/grub-0.5.96.1 ]# make 

Установка происходит после ввода следующей команды: 

[[email protected] ~/grub-0.5.96.1 ]# make install 

Немного о редактировании GRUB’а

В Linux традиционно используется загрузчик LILO (LInux Loader) или GRUB. Если несколько лет назад о LILO еще что-то говорили (и присутствовал он в немалом количестве), то теперь лидерство принадлежит GRUB.

Статья о том, как редактировать Grub

На самом деле, эта «монополия» идет только в плюс, потому что изначально GRUB более функционален. Все его возможности доступны из командной строки или посредством редактирования конфигурационного файла. Кроме того, очень важно, что данный загрузчик можно напрямую редактировать прямо в командном режиме. Чем же это хорошо? Скажем, произошла плачевная ситуация, когда из-за ваших действий загрузчик сломался. Предварительно прочитав соответствующую документацию, вы вручную можете отладить GRUB прямо из меню. Метод «научного тыка» здесь, увы, не пройдет, как и во всем Linux’е.

Сразу же после установки GRUB прописывает в меню несколько дополнительных пунктов, как то: резервная загрузка, тест памяти. Всего около трех- четырех пунктов малой степени важности. Если по умолчанию загружается именно та ОС, которая нужна, и вас не смущает разнообразие в меню, можно все оставить «как есть». По умолчанию первой в загрузке выставлена Ubuntu.

В Mandriva или OpenSUSE данное меню можно отредактировать еще при установке. В нашем случае придется пойти более «хитрым» путем — изменить несколько строк в конфигурационном файле menu.list. Расположен он по адресу /boot/grub.

Открываем терминал (Программы -> Служебные -> Терминал и вводим команду ($ — обозначение начала команды, которое в терминал не вводится):

$ sudo cp /boot/grub/menu.lst /boot/grub/menu.lst.old

Этим самым мы сохраним резервную копию файла. В Ubuntu это делать просто необходимо, дабы в случае серьезной ошибки была возможность возвратиться к предыдущим настройкам. Здесь, однако, вам следует взять на заметку следующее: восстановить загрузчик без доступа в сеанс ОС — задача непростая. Во избежание подобных ситуаций, с конфигурационным файлом загрузчика обращайтесь особенно внимательно. Если вы не уверены в своих способностях, рисковать не стоит. Пусть Ubuntu поработает как можно дольше…

$ sudo gedit /boot/grub/menu.lst

Когда вы введете данную команду, в текстовом редакторе Gedit отобразится содержание menu.lst. Мы рассмотрим несколько важнейших настроек этого конфигурационного файла. Он подробно откомментирован, поэтому в том, о чем не будет сказано, вы разберетесь самостоятельно. Все комментарии следуют за решеткой #, они никак не влияют на ход загрузки и их можно удалить.

Параметры:

  • timeout 10 — время отображения меню. По истечению 10 секунд загружается операционная система по умолчанию. Вместо «10» назначьте любую цифру
  • hiddenmenu — если раскомментировать эту строку, меню GRUB отображаться не будет, загрузится ОС по умолчанию

А вот далее идут настройки, непосредственно связанные с выводом строк меню в GRUB. Их можно свободно редактировать, удалять. Разумеется, зная предназначение того или иного пункта. Изменять что-либо, кроме первой строки, противопоказано! Это же относится и к Windows. Блок, начинающийся с «title Windows XP», должен остаться в целости и сохранности.

Как поменять очередность загрузки Windows и Linux

Если нужно поменять очередность загрузки с Ubuntu на Windows, просто поменяйте блоки, начинающиеся с «title», местами. После редактирования menu.lst сохраните документ (напоминаем, сделать это можно только в режиме администратора) и перезагрузите систему.

О настройке загрузчиков XP и Vista

Самый «слабый» загрузчик, который может только затереть имеющийся загрузчик Ubuntu. Поскольку установить XP поверх Vista официально мы не можем, то, фактически, не можем поменять загрузчик Vista на XP. Минус этих двух bootloader’ов — отсутствие всякой документации, плюс же — легкий доступ к настройкам.

Если до Ubuntu вы установили Windows Vista, то при выборе в GRUB пункта «Windows…» появляется второе меню. Вы можете временно или на постоянной основе отключить один из пунктов подменю — тогда оно исчезнет. Для этого нужно зайти в свойства «Моего компьютера», открыть вкладку «Дополнительно», раздел «Загрузка и восстановление» кнопка «Параметры» и изменить меню. Здесь удалите ту (и только ту!) строку, в которой расположен лишний пункт меню.

Описанный порядок настройки относится к Windows XP, но для Vista он практически одинаков.

Программы для работы с загрузчиками

К счастью, ко всем рутинным методам, описанным нами сегодня, можно не прибегать. Имеется несколько программ, которые заметно упрощают обращение с загрузчиком, делая его интуитивно понятным. В случае с Acronis OS Selector разработчику программы придется заплатить, поскольку демонстрационная версия не позволяет воспользоваться возможностями полной. EasyBCD и VistaBootPRO — бесплатные программы.

Программа: Acronis OS Selector
Условия распространения: shareware

Программа для низкоуровневого управления загрузкой. Приводим выдержку с официального сайта:

С помощью Acronis OS Selector вы можете:

  • установить несколько различных операционных систем на одном компьютере; 
  • загружать их с любого раздела любого жесткого диска; 
  • производить загрузку любых установленных операционных систем прямо из Windows;  
  • устанавливать несколько операционных систем на одном разделе; 
  • скрыть любую из операционных систем на вашем компьютере от посторонних или установить пароль на их загрузку; 
  • дублировать существующие операционные системы путем копирования и создавать для каждой из них необходимую загрузочную конфигурацию.

Программа поддерживает большой список операционных систем. В него попали всевозможные дистрибутивы Windows и Linux. К сожалению, программа уже не распространяется по-отдельности, как это было ранее, но входит в состав Acronis Disk Director Suite, достаточно объемного (40 Мб) пакета. Программа платная, и в ограниченной версии нельзя применить изменения. Можно скачать отдельно старую версию по прямой ссылке, но это демо-версия, опять же, не предназначена для прямого использования.

После инсталляции OS Selector попросит перезагрузиться. Во время загрузки программа, с вашего разрешения, установится на загрузочный сектор, как обычный загрузчик. Если откажетесь — продолжится загрузка системы и программа просто перестанет о себе напоминать — ни после, ни до загрузки ОС.

В чем еще плюс данной программы, кроме простоты? Удобнее всего, что в загрузочном меню сразу появляется список всех установленных ОС. Загрузчик один — и он устанавливается программой Acronis OS Selector. Названия корректно определены, и при желании их легко можно поменять. Кроме того, не нужно в меню два раза нажимать клавишу Enter. Также в состав входит несколько дополнительных сервисных утилит, что будет чрезвычайно полезным для восстановления какой-либо из ОС.

EasyBCD

Условия распространения: freeware

Интересно, что вместо GRUB загрузчиком по умолчанию можно сделать таковой из Windows Vista. Установив EasyBCD, прежде всего нужно зайти в раздел «Manage Bootloader» и затем выбрать опцию «Reinstall the Vista Bootloader». GRUB будет затерт. Сейчас можно настроить загрузчик Vista для добавления Ubuntu в меню загрузки.

Помимо работы с Linux, EasyBCD, распознает загрузчики BSD и Mac OS X. Работает в среде Windows.

VistaBootPRO

Условия распространения: freeware

О VistaBootPRO мы не так давно писали в обзоре программ. Работает она в среде Windows и предназначена сугубо для редактирования загрузчиков Windows. Причем можно заменить один загрузчик другим, деинсталлировав лишний. В программе легко убрать лишние пункты меню. Нельзя забывать о резервной копии, которую можно и нужно сделать в одном из разделов настроек!

Как восстановить загрузочное меню?

Если после произведенных вами действий произошла ошибка, после которой загрузка меню становится невозможной, не отчаивайтесь. Как и любое программное обеспечение, его можно переустановить. Правда, это не так просто, как описывается на словах. Ведь, по логике, если нельзя загрузить ОС, нельзя восстановить загрузчик? В таких случаях, как всегда, выручает загрузочный диск. Из трех ОС нам нужно восстановить либо Vista, либо Ubuntu, XP отпадает по описанным выше причинам.

Для Ubuntu. Проще всего восстановить загрузчик GRUB для Ubuntu. Благо, Ubuntu и представляет собой live-дистрибутив, который можно использовать для всякого рода восстановления. Загрузив ОС (версия не имеет значения), требуется открыть терминал и ввести там следующие команды:

// запуск менеджера загрузки $ sudo grub

// выдача информации о разделе с загрузчиком $ find /grub/stage1

В результате появится информация о расположении загрузчика

(hdX,Y)

Подставьте полученные значения, поменяв X и Y на выданные цифры:

$ root (hdX,Y) $ setup (hdX)

Для Windows Vista. Подробно о восстановлении загрузчика Vista вы узнаете в онлайн-справке Windows.

Итак, для восстановления понадобится загрузочный диск с Windows Vista (с которого вы устанавливали ОС). Ход действий следующий.

  1. Загрузитесь с установочного диска Windows Vista.
  2. Выберите язык установки и ввода. Рекомендуется выбрать язык ввода США.
  3. Выберите пункт «Восстановление системы».
  4. Выберите операционную систему для восстановления и нажмите «Далее».
  5. Выберите пункт «Командная строка». В строке введите команду

E:bootBootsect.exe /NT60 All

Основная загрузочная запись Windows Vista восстановлена.

Предупреждение. Никакой ответственности за ваши действия автор не несет. Производя действия над загрузчиком, подумайте, справитесь ли вы с возложенной задачей успешно и сможете ли предотвратить возможную поломку. Статья адресована только достаточно опытным пользователям.

Время прочтения
9 мин

Просмотры 118K

Наверняка почти у каждого пользователя ОС Linux и ОС Windows, а я имею в виду именно тех, у кого, в силу ряда причин, установлены обе системы, время от времени возникал вопрос: «А нельзя ли, черт возьми, придумать способ, с помощью которого можно было бы устанавливать эти системы в произвольном порядке? Без порчи настроек загрузчика?» Ведь если ставим сначала Windows а потом Linux всё хорошо — линуксовый загрузчик (например GRUB) обычно подхватывает bootmgr. Если ставить в обратном порядке то увы. Даже с использованием GPT + EFI. В случае с EFI нет опасности перезаписи MBR, зато таки есть один нюанс, который лично мне не нравится — установщик Windows в режиме EFI хоть и не перезаписывает сектора диска своим кодом, но зато переопределяет NVRAM, подсовывая туда путь к своему загрузчику. Так что функционал GBUB всё равно приходится восстанавливать. В настройках штатного установщика нет опций для кастомизации процесса установки загрузчика. А что если… не использовать стандартный установщик?! Ну, или почти не использовать…

И такой способ есть. И основан он на технологии установки Windows, которую мы имеем в её дистрибутивах начиная с «семерки». Способ работает для случая Windows версий 7/8/8.1/10, как в случае с MBR + BIOS системы, так в случае с EFI + GPT. Установить систему можно как в раздел HDD, так и на VHD. При этом функционал установщика нужен нам в общем-то для запуска программы настройки BCD-хранилища конфигурации загрузчика. Вместо установочного диска можно использовать загрузочный носитель на основе WinPE. Если бы утилитам bcdedit.exe и BootICE была *nix альтернатива, весь процесс развертывания системы можно было бы вообще выполнить в среде Linux.

Предположим у вас имеется компьютер, с установленным на HDD загрузчиком GRUB2 и свободным разделом, отформатированном в NTFS. Устанавливать будем Windows 7 Ultimate SP1. Для этого потребуются:

  1. Установочный диск с виндой
  2. Чистая флешка объемом >= 4 Gb
  3. Архиватор 7-zip соответствующей разрядности
  4. Утилита BootICE, желательна, но совершенно не обязательна, можно обойтись и bcdedit.exe, входящим в дистрибутив винды

1. Создаем загрузочную флешку

Дело в том, что семерка не хочет устанавливаться в EFI-режиме с DVD. Вот не хочет и всё. К тому же, на установочном носителе нам понадобятся дополнительные утилиты, которые туда надо поместить, а в случае с флешкой это несколько проще, чем в случае с DVD.

Монтируем установочный образ с виндой, допустим он лежит у нас в /home/$USER/install с именем win7-setup.iso

$ mkdir ~/iso
$ sudo mount -t udf ~/install/win7-setup.iso ~/iso

Вставляем флешку в USB-порт. Допустим, она получила имя устройства /dev/sdb. Выполним её разметку в формате MBR

$ sudo fdisk /dev/sdb

Создем на флешке один единственный раздел. После чего форматируем её в FAT
$ sudo mkfs.vfat /dev/sdb1

Копируем содержимое дистрибутива винды на флешку
$ mkdir /tmp/flash
$ sudo mount /dev/sdb1 /tmp/flash -o uid=1000,gid=100,fmask=113,dmask=002
$ cp -rv ~/iso/* /tmp/flash/

Скопируем конфиги EFI-загрузчика на уровень выше

$ cp -rv ~/tmp/flash/efi/microsoft/* ~/tmp/flash/efi/

Теперь нам нужен EFI-загрузчик винды. Его придется выцарапать из дистрибутива. Это легко сделать с помощью архиватора 7-zip, который имеется в репозитории extra/p7zip. Все содержимое дистрибутива винды сжато в образ wim-формата находится на установочном DVD в файле source/install.wim. Обычно этот образ имеет следующую структуру

В каталогах с именами в виде цифр 1-4 находятся разные редакции винды. Чтобы выбрать нужную надо посмотреть внутрь файла с именем [1].xml. Распакуем его в /tmp

$ cd /tmp
$ 7z e ~/iso/sources/install.wim [1].xml

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

где нода EDITIONID указывает на редакцию. Параметр INDEX — как раз номер каталога, в котором валяется нужная редакция. Итак, мне нужна Ultimate, а это индекс 4. Соответсвенно выковыриваем загрузчик оттуда

$ 7z e ~/iso/sources/install.wim 4/Windows/Boot/EFI/bootmgfw.efi

Оки, теперь перенесем полученный файл на флешку

$ mv bootmgfwm.efi /tmp/flash/efi/boot/bootx64.efi

Порядок, теперь у нас в наличии загрузочная флешка для установки винды. Теперь добавим на неё необходимые для установки утилиты — виндозную версию архиватора 7-zip и утилиту BootICE. Архиватор качаем с официального сайта и распаковываем на флешку в каталог utils

$ mkdir -p /tmp/flash/utils/7-Zip/
$ cd /tmp/flash/utils/7-Zip/
$ 7z x ~/downloads/7z1602-x64.exe

Туда же помещаем и bootice

$ cp ~/install/BOOTICEx64.exe /tmp/flash/utils

Уф, всё, отмонтируем флешку
$ cd ~
$ sudo umount /tmp/flash/

Перезагружаемся. Если у вас система с EFI и съемные диски стоят в приоритете загрузки, то компьютер загрузится в установку винды автоматом. Если же появилось таки меню GRUB, ничего страшного, жмем «С» и в консоли набиваем команду exit. Вас вывалит в меню EFI, где выбираем загрузку с флешки. Если же ваша система с BIOS, то тут чуть сложнее, ибо мы не стали заморачиваться с настройкой MBR на флешке. Тогда в консоли GRUB даем команду ls — появится список всех дисков и разделов. Находим нашу флешку, она отобразится в виде (hdX, msdosY), где X, Y — номер диска и раздела соответственно. Теперь вбиваем в консоли команды

grub> set root=hdX,Y
grub> ntldr /bootmgr
grub> boot

Начнется загрузка установщика винды. Он то загрузится, но нам он и не нужен — мы всё будем делать руками. Чтобы стало понятно, что к чему, придется рассмотреть некоторую теорию

2. О развертывании Windows из WIM-образа и капризном нраве Sysprep

Начиная с семерки установка Windows заключается в следующих этапах

  1. Разметка диска в соответствии с архитектурой системы инициализации оборудования. Если BIOS — установщик размечает диск в MBR. При наличии активной EFI — разметка будет GPT.
  2. Распаковка образа install.wim в выбранный для установки раздел
  3. Установка загрузчика и перезагрузка
  4. Инициализация оборудования. Ребут
  5. Локализация, ввод ключа, окончание настройки системы

Это стандартный путь. У нас же диск уже размечен. И нам не нужна автоматическая установка загрузчика — мы поставим его вручную. Разметка диска должна удовлетворять следующим требованиям

  • Если система с EFI на диске должен присутствовать FAT-раздел с типом 0xEF. Если у нас уже установлен линукс с EFI-загрузчиком, то таковой раздел уже имеется
  • Если система с BIOS, то раздел, в котором располагается загрузчик, а это наш NTFS-раздел должен быть активным. Это очень важно! Почему, будет объяснено ниже.

Таким образом, перед распаковкой системы мы должны убедится в том, что перечисленные требования выполнены. После того, как мы распакуем все файл системы и установим загрузчик, система перезагрузиться. После перезагрузки запустится утилита Sysprep, среди прочего настраивающая оборудования и проверяющая конфигурацию системы. Так вот, если в режиме EFI Sysprep не найдет загрузчик и его конфигурацию в EFI-разделе по пути EFI/microsof/boot, а в системе с BIOS каталог Boot и bootmgr будут лежать в неактивном разделе, то Sysprep завершится с ошибкой sysprep generalize error, а в лог, расположенный по адресу WindowsPanthersysperr.log выплюнет что-то похожее на

2015-03-11 16:55:42, Error [0x0e00b3] TOOL Sysprep_Specialize_Bcd: There was an error opening the system store. Status=[0xC0000098]
2015-03-11 16:55:42, Error [0x0f0082] SYSPRP LaunchDll:Failure occurred while executing 'c:WindowsSystem32spbcd.dll,Sysprep_Specialize_Bcd', returned error code 1006
2015-03-11 16:55:42, Error [0x060435] IBS Callback_Specialize: An error occurred while either deciding if we need to specialize or while specializing; dwRet = 0x3ee

и никакие танцы с бубном нам уже не помогут. Винда требует, чтобы загручик лежал в загрузочном разделе и точка. В случае с BIOS просто делаем активным раздел NTFS в котором лежит винда и туда же кладем и загрузчик. Грузится будем всё равно с помощью GRUB, а ему все равно, какой раздел будет активным. В случае с EFI загрузчик придется положить рядом с GRUB в EFI-разделе.

3. Распаковка системы

Итак, определимся, куда мы хотим ставить винду. Можно поставить в NTFS-раздел, а можно и в VHD-диск. Это уж как вам хочется. Я буду показывать процесс на примере с виртуальной машиной EFI, имеющей следующую разметку

The protective MBR's 0xEE partition is oversized! Auto-repairing.

Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): p
Disk /dev/loop1: 104857600 sectors, 50.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 0D217C93-6699-435A-9BBB-61DFAA6F30B7
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 104857566
Partitions will be aligned on 2048-sector boundaries
Total free space is 4029 sectors (2.0 MiB)

Number Start (sector) End (sector) Size Code Name
1 2048 206847 100.0 MiB EF00 EFI system partition
2 206848 104855551 49.9 GiB 0700 Basic data partition

На этом диске нет линукса, установлен только GRUB в раздел с EFI. Если мы ставим систему непосредственно в NTFS-раздел, то загружаемся с флешки, дожидаемся запуска программы установки и жмем Shift + F10, чтобы вызвать консоль. Запускаем утилиту diskpart и смотрим список подключенных томов

X:sources> diskpart
DISKPART> list vol

Видим, что флешка (объемом 8 Гб) подключена как диск C:, а раздел для установки вовсе не смонтирован. Непорядок. Делаем так

DISKPART> sel vol 3
DISKPART> remove
DISKPART> assign letter=E
DISKPART> sel vol 1
DISKPART> assign letter=C
DISKPART> list vol
DISKPART> sel vol 2
DISKPART> assign letter=F

Вот теперь порядок, диск на который будем ставить винду стал диском C:, флешка — диском E:, а EFI-раздел — диском F:

Если же мы хотим поставить систему на VHD, то делаем так

DISKPART> sel vol 3
DISKPART> remove
DISKPART> assign letter=E
DISKPART> sel vol 1
DISKPART> assign letter=G
DISKPART> exit

Для порядка создаем каталог с образами
X:sources> md G:vhd
X:sources> diskpart

Создаем виртуальный диск, создаем на нем разметку GPT и раздел NTFS и монтируем его к C:

DISKPART> create vdisk file="G:vhdwin7.vhd" maximum=25600 type=fixed
DISKPART> attach vdisk
DISKPART> clean
DISKPART> convert gpt
DISKPART> create part primary
DISKPART> format fs=ntfs quick
DISKPART> assign letter=C

EFI-раздел монтируем к F:

DISKPART> sel vol 2
DISKPART> assign letter=F

Получаем такую картину

Очень важно! Убеждаемся в том, что EFI-раздел отформатирован именно в FAT, а не в FAT32. Иначе Sysprep не простит нам этой ошибки. Если на компе уже есть линукс, то настройки будут верны.

Теперь распаковываем дистрибутив на диск C:

X:sources> E:
E:> utils7-Zip7zFM.exe

Откроется GUI архиватора 7-zip. В нем открываем каталог E:sources, находим там файл install.wim

Правой кнопкой на этом файле вызываем контектстное меню и переходим по 7-zip -> Открыть архив. Появится содержимое образа.

Лезем в папку 4 — там лежит Ultimate

Выделяем всё Ctrl + A и жмем кнопку «Извлечь». Появится окно, где нам предложат указать путь распаковки

Указываем корень диска C: и жмем ОК.

Ну и теперь, как говорится: «Откиньтесь на спинку кресла и…»

4. Установка и настройка загрузчика

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

В случае с EFI, переходим на раздел EFI, смонтированный к F: и создаем необходимые пути и копируем файлы загрузчика

E:> F:
F:> mkdir EFImicrosoftboot
F:> xcopy C:WindowsBootEFI* F:EFImicrosoftboot /s /e
F:> mkdir EFImicrosoftbootFonts
F:> xcopy C:WindowsBootFonts* F:EFImicrosoftbootFonts /s /e
F:> copy C:WindowsSystem32configBCD-Template F:EFImicrosoftbootBCD

Отлично, загрузчик скопирован. Теперь настроим его

F:> E:utilsBOOTICEx64.exe

Открываем файл F:EFIMicrosoftBootBCD. В случае установки на раздел, его параметры задаются так

Если же мы устанавливали систему на VHD, то настройки будут такими

Важно! Имя вторичного загрузчика для EFI-системы winload.efi, для BIOS-системы — winload.exe.

В случае, если мы устанавливаем BIOS-систему установка загрузчика будет выглядеть так

F:> mkdir C:Boot
F:> xcopy C:WindowsBootPCAT* C:Boot /s /e
F:> mkdir C:BootFonts
F:> xcopy C:WindowsBootFonts* C:BootFonts /s /e
F:> copy C:Bootbootmgr C:bootmgr
F:> copy C:WindowsSystem32configBCD-Template C:BootBCD

Важно! Раздел, смонтированный к C: (там где размещен загрузчик) обязан быть активным! Убедитесь в этом перед перезагрузкой!

Настройку выполняем так же точно, используя BootICE.

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

5. Скрестим пальцы да вознесем молитвы тебе, о Великий и Ужасный Sysprep…!

GRUB у нас еще не настроен пункта для винды в меню нет. Как только появится меню GRUB жмем «C». В консоли набираем

grub> set root=hdX,Y
grub> chainloader /EFI/Microsoft/Boot/bootmgfw.efi
grub> boot

X, Y — соответственно диск и раздел, где лежит загрузчик. Это в случае EFI. В случае с BIOS делаем так

grub> set root=hdX,Y
grub> ntldr /bootmgr
grub> boot

X, Y — диск и раздел с NTFS. Там где распакована винда и лежит её загрузчик.

В режиме EFI вместо логотипа винды я увидел черный экран, так как не нашел в дистрибутиве билиотеки bootres.dll, которую надо поместить в папку EFIMictosoftBootResourses. В случае с BIOS всё в порядке — знакомая эмблема «семерки». А потом в обоих случаях увидим это

Это работает Sysprep. На 57% моргнет экран — настраивается видяха. И если мы все сделали верно, то надпись «Применение параметров системы» повисит довольно долго, потом система сообщит, что установка будет продолжена после перезагрузки. Если мы где-то напортачили с установкой загрузчика — неправильный EFI раздел или неактивный NTFS, то тогда будет ошибка :( Но мы молодцы и у нас все получится, и после очередной перезагрузки мы увидим это

а потом, наконец вот это

Дальше все как при обычной, штатной установке.

6. Настраиваем GRUB

Обратили внимание на то, что каждый раз мы грузим систему из консоли GRUB руками. Это очень хорошо — значит ни MBR ни NVRAM не перезаписаны коварным майкрософтом. Настало время грузится в арч и добавить в меню GRUB новый пункт

menuentry 'Windows 7 Ultimate SP1 (EFI)' {

set root=hdX,Y
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

в случае EFI. Или

menuentry 'Windows 7 Ultimate SP1' {

set root=hdX,Y
ntldr /bootmgr
}

в случае BIOS. Применяем настройки GRUB и перезагружаемся и видем систему в пункте меню загрузки

после выбора которого получаем загруженную Windows

Заключение

Упреждая гнев профессиональных win-админов, скажу сразу — я знаю о DISM. Именно информация об этой системе и привела меня к описанному решению. Цель была одна — выяснить сколько нужно возможностей собственно Windows для установки Windows.

Оказалось вот что — для установки Windows её среда необходима только для одного — настройки BCD-хранилища. Всё. Остальное можно сделать из среды любой другой операционной системы.

Если написать аналог bcdedit.exe под Linux, то установить Windows можно будет с линуксового Live-носителя.

Все чаще и чаще на форумах возникают вопросы:

Как удалить Ubuntu и восстановить загрузчик для Windows?
Как заменить grub на загрузчик Windows?
Установка Ubuntu рядом с Windows 8?
Ubuntu рядом с Win 8, загрузчик Windows не видит Ubuntu.

В связи с этим, решил написать заметку, о восстановлении загрузчика grub, о том, как нужно правильно удалять linux, восстанавливать загрузчик Windows и MBR.

1 способ. У нас есть live-cd/usb с дистрибутивом Linux.

1. Записываем live-cd, live-usb практически любого дистрибутива linux, будь то ubuntu, mint или еще что-то там.

2. Загружаемся с live-cd/usb, открываем терминал (Ctrl+T) и смотрим таблицу разделов диска:
$ sudo fdisk -l

Помимо fdisk, еще существует много различных утилит для просмотра и редактирования таблицы разделов: gparted, cfdisk например.

По таблице видно, что linux установлен на разделе /dev/sda1, напротив него стоит звездочка, это признак того, что раздел загрузочный.

3. Теперь этот раздел нужно смонтировать:
$ sudo mount /dev/sda1 /mnt

4. Раздел смонтирован, следовательно мы имеем доступ к нему. 

Сейчас нам нужно восстановить MBR. 

Для этого нужно установить grub на жесткий диск (НО НЕ НА РАЗДЕЛ ЖЕСТКОГО ДИСКА!), так как мы восстанавливаем MBR:
$ sudo grub-install —root-directory=/mnt /dev/sda
где /mnt — это рутовый каталог, который мы смонтировали, /dev/sda — имя жесткого диска.
После этого MBR восстановлен, grub установлен.


Ситуация:

у вас на машине стоит три системы например: Windows 7 Ultimate, Windows XP Professional и Linux Mint 14.
Windows вам надоела, вы ее снесли и по каким-либо причинам, в списке grub’а остались разделы Windows. 

Если случилась такая ситуация, то необходимо сгенерировать новый конфигурационный файл загрузчика. Он заново просканирует систему, определит установленные операционные системы на компьютере и сгенерирует конфиг с новыми параметрами меню загрузчика.

1. В консоли пишем:
$ sudo update-grub —output=/mnt/boot/grub/grub.cfg
где update-grub — обновляет конфиг загрузчика, параметр —output указывает на файл конфигурации grub’а.

2. После проделанных операций, можно перезагрузиться и загрузиться с жесткого диска (естественно заходим в BIOS).
Ну и все собственно.
Вот например как выглядит мое меню grub’а, установлен только Debian:


Второй способ, в этом случаем используем окружение chroot.

1. Опять же, загружаемся с live-cd/usb, смотрим разделы:
$ sudo fdisk -l

2. Монтируем раздел, на котором установлен linux и еще некоторые важные для работы разделы:
$ sudo mount /dev/sda1 /mnt
$ sudo mount —bind /dev /mnt/dev
$ sudo mount —bind /proc /mnt/proc
$ sudo mount —bind /sys /mnt/sys

!!! Если раздел /boot на отдельном разделе диска, то его тоже нужно примонтировать, например:
$ sudo mount —bind /boot /mnt/boot

3. Скопируем дефолтный файл grub’а (этот шаг можно пропустить):
$ sudo cp /etc/resolv.conf /mnt/etc/resolv.conf

4. Теперь нужно перейти в среду chroot:
$ sudo chroot /mnt

5. Устанавливаем grub:
# grub-install /dev/sda

Если возникла ошибка, поможет команда:
# grub-install —recheck /dev/sda

6. Выходим из chroot, отмонтируем разделы и перезагружаемся:
# exit
$ sudo umount /mnt /dev
$ sudo umount /mnt/proc
$ sudo umount /mnt
$ sudo umount /mnt/boot #если требуется
$ sudo reboot


Ситуация:

у вас нет второго компьютера чтобы записать live-cd/usb, соотвественно нужно как-то выкручивать (у самого была такая ситуация после экспериментальной установки windows 8).

Передо мной лишь черный экран и :
grub>

Это восстановление наиболее сложное (Rescue Mode), но если делать по инструкции, все должно пройти нормально.
В rescue mode доступно всего четыре команды:
ls
set
unset
insmod

1. Нам нужно посмотреть, какие разделы видит наш grub:
> ls
появится что-то типа:
(hd0) (hd0,msdos2) (hd0,msdos1) (hd1) (hd1,msdos2) (hd1,msdos1)

2. Кое-как криво Rescue Grub нам вывел разделы диска, якобы с файловой системой msdos.
Но это не важно.
Счет дисков у grub начинается с нуля, а разделов — с единицы.
По нашему выводу можно определить, что на первом диске у нас два раздела и на втором тоже два.
Экспериментальным путем угадывания будем определять, где же находится наш установленный linux.

3. Допустим раздел (hd0,1) — это именно то что нам нужно (приставку msdos можно опустить).
Пишем:
> set prefix=(hd0,1) /boot/grub
> set root=(hd0,1)

Таким образом мы получаем доступ к диску.

4. Пишем команду:
> ls /boot/grub
если будет какой-то вывод файлов, то все получилось, если же ничего нет, то мы промахнулись разделом, нужно смотреть другие, например (hd1,0).

5. Теперь пишем:
> insmod ext2
> insmod normal
> normal

6. После этого загружается grub, определяет операционные системы и практически восстановление завершено.

7. Загружаем linux, в терминале пишем:
$ sudo grub install /dev/sda

Все. grub прописывается в MBR и дальнейших проблем возникать не должно.


Ситуация:

нам надоело закапывать красные глаза из-за linux и мы решили вернуться на Windows. 

Windows предварительно у нас установлена, мы с нее загружаемся, и с помощью Acronis Disk Director или еще какой-нибудь программы сносим разделы Linux. 

С огромной радостью перезагружаемся, да не тут-то было, linux мы удалили, а grub — нет (ведь он установлен на сам диск, а не на его раздел). Что делать?

1. Записываем установочный диск/флешку (например с Windows XP).

2. Загружаемся с диска/флешки:
Если увидели это:

не надо нажимать F2, это не то, это автоматическое восстановление, а нам нужно ручное.

3. Немного подождав появляется такое:

Нажимаем R, попадаем консоль восстановления.

4. Нам предлагают выбрать копию Windows, которую нужно восстановить:

5. Вводим пароль админа:

6. Вот собственно консоль восстановления:

7. Вводим команду:
fixmbr
соглашаемся со всем что он от нас хочет, эта команда восстанавливает MBR.

8. Пишем:
fixboot
эта команда, записывает новый загрузочный сектор.

9. Выходим из консоли восстановления:
exit

10. Перезагружаемся.


Ситуация.

если же под рукой не XP, а Windows 7, то делаем то же самое, но вводить не 

fixmbr 

и 

fixboot

а 

bootrec /fixmbr 

и 

bootrec /fixboot 

Ссылки:

  • Использование средства Bootrec.exe в среде восстановления Windows для устранения неполадок при запуске Windows
  • Восстановление grub в rescue mode
  • Тут можно почитать подробнее о rescue mode
  • Восстановление grub2
  • Настройка внешнего вида загрузчика grub
  • Туториал по grub’у
  • Восстановление grub
Рубрика:

Администрирование / 
Инструменты

  | Дополнительные материалы

Facebook

Twitter

Мой мир

Вконтакте

Одноклассники

Google+

Игорь Орещенков ИГОРЬ ОРЕЩЕНКОВ, инженер-программист, iharsw@tut.by

Загрузочный носитель
на основе GRUB2 for Windows

В статье рассматривается подготовка мультизагрузочного носителя для BIOS/EFI компьютеров на основе загрузчика GRUB2 в среде операционной системы Windows. Он может быть пригоден для первичной инициализации компьютера или восстановления работоспособности операционной системы компьютера

Технические требования к загрузочному носителю

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

С учетом высказанных предпосылок в качестве загрузочного носителя удобно выбрать SD-карту. Оптические диски практически вышли из широкого обращения, а USB-флешки с аппаратной защитой от записи не везде можно встретить в продаже, и цена на них не всегда оправдана. В то же время любая SD-карта имеет переключатель защиты от записи, что в комплекте с кардридером превращает ее в недорогой, но функциональный носитель (см. рис. 1).

Рисунок 1. Из SD-карты и кардридера можно собрать функциональный носитель с аппаратной защитой от записи

Рисунок 1. Из SD-карты и кардридера можно собрать функциональный носитель с аппаратной защитой от записи

Чтобы носитель можно было использовать как на компьютерах с загрузчиком BIOS, так и на платформах со схемой загрузки EFI, создадим на носителе три раздела MBR:

  • Раздел FAT32 – для загрузчика GRUB2, ISO-образов специализированных дистрибутивов для восстановления работоспособности системы и Windows-утилит.
  • Раздел с ISO-образом дистрибутива Mageia-6.1-Live-DVD-Xfce-i586-DVD.iso, который, будучи не требовательным к ресурсам компьютера, предоставляет полноценный рабочий стол с офисным пакетом и веб-браузером.
  • Раздел с инсталляционным ISO-образом дистрибутива Mageia-6-i586-DVD.iso, который содержит в себе набор программного обеспечения, достаточный для организации как автоматизированного рабочего места офисного работника, так и для построения сервера организации.

Разметка носителя

Для хранения перечисленных выше данных будет достаточно накопителя емкостью 8 Гб. Его разметку можно выполнить под Windows с помощью штатной утилиты diskpart. Сначала нужно с помощью команды list disk вывести таблицу подключенных к компьютеру накопителей, чтобы определить, над каким выполнять операции.

C:> diskpart
DISKPART> list disk

По значению в колонке «Размер», которое должно равняться 7580 Мбайт, определяем номер носителя для дальнейшей работы. Допустим, что в колонке «Диск ###» интересующему носителю соответствует номер 9. Очистим его содержимое.

DISKPART> select disk 9
Выбран диск 9
DISKPART> detail disk

В соответствии с принципом осмотрительности администраторов баз данных «Семь раз SELECT – один UPDATE» убедимся в правильности нашего выбора нужного сменного носителя.

В выводе команды detail disk должна содержаться следующая надпись:

USB Mass Storage Device USB Device, Тип: USB

и информация о единственном пока что разделе:

FAT32 Сменный 7576 Мб Исправен

Если сомнений больше не осталось, выполняем очистку носителя:

DISKPART> clean

После успешного выполнения команды должно появиться сообщение:

DiskPart: очистка диска выполнена успешно

Если же появилось сообщение об ошибке, например:

Программа DiskPart обнаружила ошибку: Не удается найти указанный файл

то команду нужно повторить.

Снова выводим таблицу со списком носителей:

DISKPART> list disk

Для инициализированного носителя «Диск 9» будет выведено:

Размер: 7580 Мб, Свободно 7579 Мб

Свободное пространство нужно разметить на три раздела:

  • Один раздел – для ISO-образа Mageia-6-i586-DVD.iso размером 3,921,674,240 байт или 3740 Мб (если дважды разделить количество байтов на 1024).
  • Второй раздел – для ISO-образа Mageia-6.1-LiveDVD-Xfce-i586-DVD.iso размером 2,028,994,560 байт или 1935 Мб.
  • Третий раздел, который займет оставшееся свободным пространство, будет предназначен для загрузчика, Windows-утилит и вспомогательных загрузочных образов. Его размер составит 7579 – (3740 + 1935) = 1904 Мб.

Разделы лучше располагать на носителе в порядке, обратном перечисленному, – сначала загрузочный раздел, а после него – с ISO-образами дисков. Поэтому создадим сначала раздел размером 1904 Мб. Поскольку загрузочный носитель планируется максимально универсальным, попытаемся сделать этот раздел загрузочным по спецификации EFI:

DISKPART> create partition efi size=1904

Эта команда завершится с ошибкой и сообщением о том, что EFI-разделы поддерживаются только для GPT-дисков. К сожалению, один накопитель может быть размечен либо по схеме MBR, которую поддерживают загрузчики BIOS, либо по схеме GPT, которую поддерживают загрузчики EFI, и совместить эти схемы в пределах одного накопителя согласно разделу 5 спецификации UEFI 2.7 [8] никак не возможно.

Тем не менее практика показывает, что в большинстве случаев реальные реализации загрузчиков EFI без особых проблем распознают в качестве загрузочных разделы FAT32 с шестнадцатеричным кодом файловой системы EF, размещенные на дисках MBR. Воспользуемся этим фактом и создадим первичный MBR-раздел, после чего отформатируем его с присвоением метки BOOTDISK:

DISKPART> create partition primary size=1904
DISKPART> format FS=FAT32 LABEL="BOOTDISK" QUICK
DISKPART> set id=EF

Если между командами create partition и format по каким-то причинам пришлось завершить утилиту diskpart, то восстановить контекст после ее запуска можно командами:

DISKPART> select disk 9
DISKPART> select partition 1

При выполнении же команд в непрерывной последовательности вновь созданный раздел становится текущим автоматически, поэтому выполнять команду select partition для переключения фокуса нет необходимости.

Теперь можно создать остальные разделы. В качестве идентификатора файловой системы им нужно назначить шестнадцатеричное значение 17 (ISO 9660).

DISKPART> create partition primary size=1935
DISKPART> set id=17
DISKPART> create partition primary size=3740
DISKPART> set id=17

Каждая команда create partition должна завершаться сообщением:

Diskpart: указанный раздел успешно создан

а команда set сообщением:

Программа Diskpart успешно задала идентификатор раздела

Результат работы можно просмотреть с помощью команды list partition. А с помощью команды list disk можно убедиться, что на носителе не осталось неиспользованного пространства:

Свободно 0 байт

После этого можно завершить работу с программой diskpart:

DISKPART> exit

Запись ISO-образов в разделы накопителя

К сожалению, в операционной системе Windows нет средства, позволяющего с такой же легкостью, как утилита dd в мире UNIX, записывать файлы на устройства и обратно. Вероятно, по этой причине появился Windows-клон этой программы, которым мы воспользуемся для записи ISO-образов на разделы загрузочного накопителя.

Может возникнуть вопрос: «Зачем записывать образы ISO-дисков как «сырые данные» логических разделов и почему не записать их в виде файлов на обычный раздел, например FAT32?»

Дело в том, что образы Mageia [6] не поддерживают «петлевой» запуск из файла, как это уже давно умеют делать другие дистрибутивы, например Ubuntu и Fedora. Но поскольку они все же являются «гибридными» (то есть позволяют записывать себя как на DVD-матрицу, так и на USB-флешку), то есть шанс заставить их работать с раздела создаваемого носителя.

Для дальнейшей работы потребуется загрузить дистрибутивный архив dd-0.6beta3.zip [1] и извлечь из него программу dd.exe. Предполагается, что файлы с ISO-образами уже лежат в текущей папке.

Выясним способ адресации разделов создаваемого загрузочного носителя программой dd:

C:> dd.exe --list
NT Block Device Objects
...
Ошибка! Недопустимый объект гиперссылки.
  link to Ошибка! Недопустимый объект гиперссылки.
  Removable media other than floppy. Block size = 512
  size is 7948206080 bytes
Ошибка! Недопустимый объект гиперссылки.
  link to Ошибка! Недопустимый объект гиперссылки.
  Removable media other than floppy. Block size = 512
  size is 1996488704 bytes
Ошибка! Недопустимый объект гиперссылки.
  link to Ошибка! Недопустимый объект гиперссылки.
  Removable media other than floppy. Block size = 512
  size is 2028994560 bytes
Ошибка! Недопустимый объект гиперссылки.
  link to Ошибка! Недопустимый объект гиперссылки.
  Removable media other than floppy. Block size = 512
  size is 3921674240 bytes

В секции NT Block Device Objects нужно отыскать группу строк, сопровождаемых текстом Removable media other than floppy («Сменный носитель, отличный от гибкого диска»). Сведения о размерах найденных разделов подтверждают предположение о том, что записи «Ошибка! Недопустимый объект гиперссылки.» относятся к недавно созданным разделам на накопителе «Ошибка! Недопустимый объект гиперссылки.».

Теперь можно выполнять команды записи ISO-образов:

C:> dd.exe if=Mageia-6-i586-DVD.iso of=Ошибка! Недопустимый объект гиперссылки. bs=1M --progress
C:> dd.exe if=Mageia-6.1-LiveDVD-Xfce-i586-DVD.iso of=Ошибка! Недопустимый объект гиперссылки. bs=1M --progress

С помощью параметра if= программе передается имя записываемого файла ISO-образа, через параметр of= указывается раздел накопителя, в который будет произведена запись, параметр bs= задает размер единовременно копируемого блока, а параметр —progress позволяет интерактивно наблюдать в консоли количество записанных данных (из-за большого размера файлов процесс занимает продолжительное время, которое зависит от класса SD-карты и версии интерфейса кардридера).

Успешная запись должна завершиться следующими сообщениями:

3,740M 3740+0 records in 3740+0 records out
1935M 1935+0 records in 1935+0 records out

для первого и второго образа соответственно, которые говорят о равенстве количества прочитанных и записанных данных.

Установка и проверка загрузчика

Для установки на носитель загрузчика GRUB2 нужно загрузить дистрибутивный пакет grub-2.02-for-windows.zip [2], извлечь из него папку grub-2.02-for-windows и сделать ее текущей. Для продолжения работы нужно выяснить, под какой буквой подключен в операционной системе раздел FAT32 настраиваемого носителя. Это можно сделать в программе diskpart с помощью команды list volume. Строка таблицы с нужным разделом будет содержать:

Тип: Сменный, Размер: 1904 Мб, Состояние: Непригоден

Допустим, что искомому разделу соответствует буква «R». Установка загрузчика может быть произведена командой:

C:> grub-install.exe --boot-directory=R: --target=i386-PC //./PHYSICALDRIVE9

Параметр —boot-directory задает путь, где будет создана папка grub с файлами загрузчика, параметр —target указывает тип загрузки (в рассматриваемом случае это BIOS), а последний параметр задает накопитель, загрузочный сектор которого будет модифицирован. Об успешной установке должны сообщить надписи:

Installing for i386-pc platform. Installation finished. No error reported

Поскольку было принято решение о создании универсального загрузочного носителя, можно установить загрузчики для 32- и 64-битных EFI:

C:> grub-install.exe --boot-directory=R: --efi-directory=R: --removable --target=i386-efi
C:> grub-install.exe --boot-directory=R: --efi-directory=R: --removable --target=x86_64-efi

Параметр —efi-directory указывает, где будет создана папка EFI с модулями, необходимыми для загрузки в режиме EFI, а параметр —removable информирует инсталлятор о том, что установка производится на сменный носитель.

На этом установка загрузчика завершена. Можно проверить созданный носитель на реальных компьютерах или с помощью специализированного эмулятора QemuBootTester. Последний позволяет выбрать носитель, с которого будет произведена загрузка виртуальной машины, и полный спектр режимов загрузки: BIOSEFI-IA32 и EFI-x64 (см. рис. 2).

Рисунок 2. Эмулятор QemuBootTester позволяет выбрать загрузочный носитель (1) и режим загрузки (2). Для тестирования загрузчика достаточно 128 Мб (3) виртуальной памяти, а виртуальный жесткий диск можно отключить. Запуск осуществляется кнопкой Run QEMU (4)

Рисунок 2. Эмулятор QemuBootTester позволяет выбрать загрузочный носитель (1) и режим загрузки (2). Для тестирования загрузчика достаточно 128 Мб (3) виртуальной памяти, а виртуальный жесткий диск можно отключить. Запуск осуществляется кнопкой Run QEMU (4)

Отметим, что при подключении носителя к компьютеру под управлением Windows система отображает диалоговые окна с предложением отформатировать нераспознанные разделы, на которые записаны образы дистрибутивов Linux. Естественно, делать этого не нужно.

При выборе носителя в качестве загрузочного управление системой возьмет на себя GRUB2. Его работа должна управляться с конфигурационным файлом, который пока что отсутствует. Поэтому на экране отобразится приглашение командного режима (см. рис. 3). В нем можно сразу опробовать команды:

  • grub> help – отображение списка команд;
  • grub> help команда – отображение подсказки по использованию команды.

Рисунок 3. В командном режиме загрузчика GRUB2 можно проанализировать конфигурацию компьютера и выполнить загрузку операционной системы в аварийном режиме

Рисунок 3. В командном режиме загрузчика GRUB2 можно проанализировать конфигурацию компьютера и выполнить загрузку операционной системы в аварийном режиме

Зачастую выводится больше информации, чем может уместиться на экране. Чтобы вывод на экран приостанавливался перед прокруткой и выдачей очередной порции сведений, нужно включить режим постраничного вывода:

grub> set pager=1

Очистить экран можно командой clear. Для завершения работы GRUB2 предусмотрены команды:

  • grub> reboot – перезагрузка;
  • grub> halt – выключение компьютера.

В компьютерах на основе Phoenix BIOS может возникнуть трудность, связанная с выбором загрузочного носителя. В предлагаемых вариантах присутствуют USB-FDDUSB-ZIP, USB-CDROM – и не ясно, какой является правильным. На самом деле – ни один из перечисленных.

Нужно через пункт меню Advanced BIOS Features → Boot Seq&Floppy Setup установить в качестве первичного устройства загрузки First Boot Device значение Hard Disk (вероятно, оно и так установлено), а в пункте меню Advanced BIOS Features → Hard Disk Boot Priority на первое место переместить значение USB-HDD0: USB Mass Storage Device. Если такой вариант для выбора отсутствует, нужно убедиться, что загрузочный носитель подключен, после чего выполнить «теплую» перезагрузку по <Ctrl> + <Alt> + <Del> и повторить процедуру.

Настройка загрузчика

Как уже было отмечено, в своей работе загрузчик GRUB2 руководствуется командами, записанными в конфигурационном файле /grub/grub.cfg на загрузочном носителе.

Язык конфигурирования очень напоминает язык командного интерпретатора bash, однако для включения поддержки некоторых конструкций нужно явным образом подключить соответствующие модули. Например, для проверки условий требуется модуль test, а для использования регулярных выражений – модуль regexp. Скомпилированные модули в файлах с расширением .mod на этапе установки GRUB2 уже были записаны в подкаталоги i386-pci386-efi и x86_64-efi, соответствующие режимам загрузки.

Загрузчик GRUB2 можно русифицировать. Для этого необходимо:

  • записать из дистрибутива файл с русифицированными сообщениями grub-2.02-for-windowslocalerugrub.mo на загрузочный носитель под именем grublocaleru.gmo;
  • записать из дистрибутива файл со шрифтом UNICODE grub-2.02-for-windowsunicode.pf2 на загрузочный носитель в подкаталог grubfonts;
  • подключить модули поддержки локализации, установки графических режимов и графической консоли для отображения символов кириллицы:
    grub> insmod gettext
    grub> insmod all_video
    grub> insmod gfxterm
  • загрузить шрифт UNICODE, установить русский язык, задать графический режим и активировать графическую консоль:
    grub> loadfont "unicode"
    grub> set lang=ru
    grub> set gfxmode=auto
    grub> terminal_output gfxterm

После выполнения приведенных настроек GRUB2 «заговорит» по-русски. Помимо этого открывается возможность использования файлов с заранее подготовленными подсказками на русском языке, которые можно записать на носитель в кодировке UTF-8, а в нужный момент вывести на экран с помощью команды cat:

grub> cat --dos /grub/help.txt

Ключ —dos предписывает трактовать двухбайтовые последовательности DA как символы перевода строки.

При запуске GRUB2 инициализирует некоторые переменные среды окружения, полный список которых можно вывести на экран командой set.

Так, переменная $prefix содержит путь к папке с файлами GRUB2, а переменная $grub_platform содержит идентификатор способа загрузки:

  • efi – если загрузка выполнена в режиме EFI-IA32 или EFI-x64;
  • pc – если загрузка выполнена в режиме BIOS.

Этот факт можно использовать для условной загрузки блоков конфигурации из файлов /grub/efi.cfg или /grub/pc.cfg для учета специфики режима или подключения пунктов меню:

insmod test
set pcfg="$prefix/$grub_platform.cfg"
if [ -e $pcfg ]; then
	source $pcfg
fi

Система меню и загрузка операционных систем

В конфигурационном файле grub.cfg можно описать меню с вариантами выбора, которые будут отображаться после загрузки вместо режима командной строки:

submenu "НазваниеРазделаМеню" {
	menuentry "НазваниеПунктаМеню" {
		... последовательность команд ...
	}
}

При этом сохраняется возможность выхода в командную строку с помощью клавиши <c>.

Для работы с файлами, находящимися на ISO-образах, удобно использовать файловый менеджер 7ZipFM [3] с подключенным в его настройках (через пункт меню «Сервис → Настройки → Редактор») текстовым редактором AkelPad [4] (см. рис. 4).

Рисунок 4. Файловый менеджер из пакета 7Zip позволяет исследовать содержимое ISO-образов и извлекать из них необходимые файлы, а текстовый редактор AkelPad дает возможность «на месте» просматривать содержимое текстовых файлов

Рисунок 4. Файловый менеджер из пакета 7Zip позволяет исследовать содержимое ISO-образов и извлекать из них необходимые файлы, а текстовый редактор AkelPad дает возможность «на месте» просматривать содержимое текстовых файлов

Если требуется выполнять загрузку с ISO-образа дистрибутива Linux, который поддерживает «петлевой» запуск, то пункты меню для этих целей можно извлечь из самого конфигурационного файла загрузчика нашего дистрибутива Linux.

Например, в случае Ubuntu это будет ubuntu-18.10-desktop-amd64.isobootgrubloopback.cfg (еще потребуется указать путь к файлу с ISO-образом на загрузочном носителе в переменной окружения $iso_path).

Для дистрибутива Fedora можно воспользоваться блоком меню из файла Fedora-Workstation-Live-x86_64-29-1.2.isoEFIBOOTgrub.cfg в качестве основы, но к параметрам ядра нужно дописать указание пути к файлу образа в виде «iso-scan/filename=…».

Множество примеров пунктов меню для «петлевого» запуска различных дистрибутивов Linux можно найти в файле grub-2.02docsautoiso.cfg дистрибутивного пакета grub-2.02.tar.gz.

Описанным способом были сформированы пункты меню для запуска модулей дистрибутива System Resque CD [7], ISO-образ которого размещен в файле /ISO/systemrescuecd-x86-5.3.2.iso загрузочного носителя.

Стоит отметить метод подключения корневой файловой системы модуля NTPASSWD, предназначенного для сброса пароля администратора Windows. Она состоит из двух блоков: основного initrd.cgz и вспомогательного scsi.cgz с драйверами устройств SCSI. Их совместное использование реализовано командой:

initrd16 (loop0)/ntpasswd/initrd.cgz (loop0)/ntpasswd/scsi.cgz

Дистрибутивы Mageia не поддерживают «петлевую» загрузку, из-за чего их ISO-образы были записаны в разделы загрузочного носителя.

К сожалению, попытка выполнить запуск путем установки фокуса на содержащий дистрибутив раздел и передачи управления загрузчику командой chainloader +1 не увенчалась успехом. Это не удивительно, потому что загрузчик рассчитан на размещение в MBR, а не в загрузочный сектор раздела.

На помощь пришла команда GRUB2 syslinux_configfile, обнаруженная в эталонном конфигурационном файле grub-2.02docsosdetect.cfg, который входит в состав дистрибутивного пакета grub-2.02.tar.gz. Она позволяет подключить к текущему меню GRUB2 блок, записанный в формате загрузчика isolinux. Так это выглядит для дистрибутивов Mageia:

menuentry "Mageia 6.1 Live DVD" {
	search --set=root --fs-uuid 2018-10-01-18-55-31-00
	syslinux_configfile -i /isolinux/isolinux.cfg
}
menuentry "Mageia 6 Installation DVD" {
	search --set=root --fs-uuid 2017-07-15-07-08-52-00
	syslinux_configfile -i /isolinux/isolinux.cfg
}

Команды search в приведенных примерах осуществляют поиск на доступных носителях разделов с указанными в параметрах —fs-uuid уникальными идентификаторами и делают их текущими.

Узнать значения идентификаторов разделов можно с помощью команды ls -l, введенной в командном режиме GRUB2:

grub> ls -l
...
Раздел hd0,msdos3: Тип файловой системы iso9660 – Метка "Mageia-6-i586" – Время последнего изменения 2017-07-15 07:08:52 Суббота, 
	UUID 2017-07-15-07-08-52-00 – Раздел начинается с 3932160КиБ – Общий размер 3829760КиБ
Раздел hd0,msdos2: Тип файловой системы iso9660 – Метка "Mageia-6.1-Xfce-LiveDVD" – Время последнего изменения 2018-10-01 18:55:31 Понедельник, 
	UUID 2018-10-01-18-55-31-00 – Раздел начинается с 1950720КиБ – Общий размер 1981440КиБ
...

Команды syslinux_configfile подключают блоки меню из файлов isolinux.cfg на найденных разделах. Эстетический недостаток этого способа состоит в том, что вместо описаний пунктов меню на экране будут отображаться их метки. Но зато сохраняется функциональность.

Образ LiveDVD работает без замечаний – так, как будто был использован обычный загрузочный носитель. А для образа инсталляционного диска придется указать местонахождение установочных файлов. Для этого:

  • в окне с сообщением I can’t access a Mageia Installation disc in your CDROM drive нажать кнопку No;
  • в окне запроса носителя с установочными файлами (Please select the disk containing the copy of the Mageia Distribution install source) выбрать устройство USB Mass Storage Device;
  • в окне запроса раздела (Please select the partition containing the copy of the Mageia Distribution install source) выбрать третий раздел размером 3740 Мбайт;
  • в окне ввода пути к установочным файлам поле Please select directory оставить пустым – просто нажать <Enter>.

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

Заключение

В результате выполнения приведенных в статье рекомендаций в среде операционной системы Windows с использованием штатных средств и минимального набора стороннего программного обеспечения может быть создан универсальный мультизагрузочный носитель на базе GRUB2, пригодный для первичной инициализации компьютера или восстановления работоспособности операционной системы компьютера.

В статье рассмотрен способ подключения блоков загрузочного меню из конфигурационных файлов загрузчиков SysLinux/IsoLinux с помощью команды syslinux_configfile.

На сайте журнала http://samag.ru приведен рабочий вариант конфигурационного файла GRUB2 для загрузочного носителя BIOS/EFI с возможностью запуска модулей SystemResqueCD, получения рабочей среды на базе GNU/Linux Mageia 6 и установки этой операционной системы, который содержит.

  • grub.cfg – основной конфигурационный файл GRUB2;
  • pc.cfg – блок меню, специфичный для загрузки в режиме BIOS;
  • efi.cfg – блок меню, специфичный для загрузки в режиме EFI;
  • help.txt – файл с подсказкой о процедуре загрузки Windows;
  • helpefi.txt – файл с описанием особенностей использования SystemRescueCD в режиме EFI.

При изучении возможностей GRUB2, помимо интернет-источников [5], целесообразно использовать справочную информацию, имеющуюся в папке grub-2.02docs дистрибутивного пакета grub-2.02.tar.gz:

  • grub.info – документация на английском языке, которая может быть просмотрена в любом текстовом редакторе;
  • grub.cfg – конфигурационный файл, содержащий основные примеры загрузки операционных систем;
  • autoiso.cfg – конфигурационный файл, содержащий примеры загрузки операционных систем в «петлевом» режиме из файлов ISO-образов;
  • osdetect.cfg – конфигурационный файл, содержащий сценарии поиска загрузочных разделов для множества операционных систем с последующей их загрузкой.

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

  1. Утилита DD для Windows – http://www.chrysocome.net/dd.
  2. Загрузчик GRUB2 – ftp://ftp.gnu.org/gnu/grub/.
  3. Архиватор и файловый менеджер 7Zip – https://www.7-zip.org.
  4. Текстовый редактор AkelPad – http://akelpad.sourceforge.net/.
  5. Cтатьи о загрузочных носителях – https://www.bootdev.ru.
  6. Mageia GNU/Linux – http://www.mageia.org/ru/.
  7. System Rescue CD – http://www.system-rescue-cd.org.
  8. Спецификация UEFI 2.7 – http://www.uefi.org/sites/default/files/resources/UEFI%20Spec%202_7_A%20Sept%206.pdf.

Ключевые слова: Linux, rescue.

Facebook

Twitter

Мой мир

Вконтакте

Одноклассники

Google+

Ссылки по теме

  • 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

  1. Установите пакет lrmi, который содержит утилиту vbetest (пользователи системы x86_64 должны использовать #hwinfo вместо vbetest)
  2. Запустите vbetest от имени суперпользователя
  3. Запомните значение в [ ], соответствующее выбранному Вами видеорежиму
  4. Нажмите q для выхода из vbetest
    1. Вы можете проверить выбранный вами видеорежим, достаточно запустить от имени суперпользователя команду vbetest -m <ваш_код>. Вы должны увидеть таблицу такого плана
  5. Прибавьте 512 к значению, которое Вы получили на предыдущем шаге, и пропишите его в параметр vga для соответствующей записи menu.lst
  6. Перезагрузите машину и любуйтесь полученным результатом

Например, 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

  1. Установите пакет hwinfo из [AUR].
  2. Запустите команду hwinfo --framebuffer с правами пользователя root.
  3. Выберите код, соответствующий желаемому разрешению.
  4. Используйте полученный 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

Понравилась статья? Поделить с друзьями:

Вот еще несколько интересных статей:

  • Как поменять иконку кнопки пуск в windows 10
  • Как поменять загрузку на другой диск windows 10
  • Как поменять иконку жесткого диска в windows 10
  • Как поменять иконку дискорда в windows 10
  • Как поменять иконку всех папок в windows 7

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии