Pull to refresh

Проблемы с установкой начального загрузчика на флеш-накопитель

Reading time6 min
Views26K
В статье содержатся 5 вопросов и ответов по следующим темам:

1. Очистка mbr флешки в Windows
2. Конвертирование ISO-файла в гибридный ISO-файл (только Linux)
3. Создание загрузочной флешки с сохранением изменений (Linux, Windows, Mac OS X)
4. Создание мультизагрузочной флешки (Windows)
5. Восстановление таблицы разделов и загрузчика mbr (Hiren's BootCD).

Для применения всех приведенных в статье решений (кроме 2 — работает только в Linux) потребуются операционные системы Microsoft Windows и Linux (или Mac OS X), утилиты Windows USB DVD Download Tool и RMPrepUSB (Windows), dd (Linux, Mac OS X), isohybrid (Linux), Unetbootin (Windows, Linux, Mac OS X), md5sum (Linux, Mac OS X), пустая флешка объемом не менее 8 Гб, а также «спасательная» флешка Hiren's BootCD 15.2.

1. Вопрос. Когда я устроился на новую работу, первые дни были посвящены обучению. На обучении всем ученикам было выдано по жесткому диску, содержащему инструкции и программное обеспечение. В одной из инструкций был приведен пример использования утилиты Windows 7 USB/DVD Download tool. С ее помощью в этом примере на флеш-накопитель записывался специальный ISO-образ операционной системы Windows 7. На практике этот способ не работал. Что делать?

Ответ. Конечно, проводить диагностику и решать проблему. Она может быть в неисправном ISO-файле (проверить его поможет утилита md5sum), неисправной флешке (открывается ли она в файловом менеджере Windows?) и неправильном коде mbr. В последнем случае перед использованием WUDT полезно будет очистить mbr. Это можно сделать с помощью командной строки, используя следующие команды:

diskpart
list disk
select disk N
clean
create partition primary
select partition 1
active
format FS=FAT32 QUICK
assign
exit

Здесь N — номер флеш-накопителя в списке всех устройств, отображаемых с помощью команды list disk

2. Я захотел установить на домашний компьютер еще одну операционную систему — Mageia4.1. Для этого я скачал с офицального веб-сайта ISO-образ CD диска и записал его на флешку с помощью команды dd. Но при попытке загрузить с ее помощью компьютер выдается сообщение об ошибке: isolinux.bin missing or corrupt.

Ответ. Похоже, скаченный Вами ISO-образ не является гибридным, т.е. он предназначен только для записи на CD и не подходит для записи на флеш-накопитель. Решить эту проблему можно с помощью утилиты isohybrid, входящей в состав syslinux. Она позволяет сконвертировать указанный ISO-образ для CD/Dvd в гибридный ISO-образ с таким же именем.

3. В ночную смену бывает время, когда нет работы и нечего делать. Чтобы как-то себя занять, я решил взять с собой Linux-LiveUSB, чтобы с пользой использовать свободное время (что запрещено по регламенту). Записав с помощью команды

dd if=elementaryos-0.4-stable-amd64.20160909.iso of=/dev/sdb bs=4096, где /dev/sdb - имя флешки

на флешку гибридный ISO-образ ElementaryOS 0.4 'Loki', я загрузил эту операционную систему на компьютере. Далее я создал в каталоге Документы пустой файл, чтобы узнать, сохранится ли он после перезагрузки, как это было с загрузочной флешкой openSUSE 13.1 GNOME, созданной аналогичным образом, с которой я смог не только создать такой файл, но и установить необходимые программы, не исчезнувшие после перезагрузки компьютера. Но с Elementary OS 0.4 такой трюк не прошел. Можно ли сделать так, чтобы при использовании загрузочной флешки с Elementary OS 0.4 изменения сохранялись также, как и в случае использования openSUSE 13.1 GNOME? Почему в openSUSE это работает, а в Elementary OS — нет?

При первой загрузке флешки openSUSE создается новый раздел с именем hybrid, содержащий файловую систему, в которой сохраняются все изменения, сделанные при работе с LiveUSB, включая созданные файлы и установленные программы. Elementary OS 0.4 самостоятельно так делать не умеет, но ей можно в этом помочь.

Во-первых, можно создать такой раздел, используя для записи iso-образа Elementary OS 0.4 на флешку утилиту Unetbootin. Для этого в ней можно указать место, используемое для сохранения изменений после перезагрузки (только для ubuntu и основанных на ней дистрибутивов), например 4096 Мбайт (см. картинку).

image

Изображение 1. Окно Unetbootin

Второй способ — вручную создать на флешке второй раздел с именем «casper-rw» (например, с помощью GParted) и указать в параметрах загрузки ядра ключевое слово «persistent», как это сделано в следующем ответе.

4. Я научился записывать на флеш-накопитель гибридные ISO-образа дистрибутивов ElementaryOS 0.4, Mageia4.1 и openSUSE 13.1 GNOME с помощью команды dd, но этот способ не подходит для того, чтобы создать мультизагрузочную флешку. Как создать такую флешку?

Ответ. Это можно сделать, добавив новую операционную систему в загрузочное меню установленного на флешку загрузчика операционной системы. Такие загрузчики бывают разные, также как и способы их установки на флеш-накопитель. С помощью конфигурационного файла меню загрузчика можно сделать так, чтобы при выборе в меню операционной системы загрузчик передавал управление ее ядру и создавал временную файловую систему с помощью ее начального ram-диска, а ядро загружало операционную систему, использовуя при этом файл iso-образа операционной системы. Для этого можно скопировать на флешку файлы iso-образа, ядра и начального ram-диска этой операционной системы. Таким образом, количество загружаемых с помощью такой флешки операционных систем, которые умеет загружать установленный на ней загрузчик, ограничено только ее объемом.

Файлы ядра и начального ram-диска обычно можно получить, распаковав их из файла iso-образа операционной системы с помощью архиватора. В Elementary OS, также как и в Ubuntu, они называются casper/vmlinuz и casper/initrd.lz

Один из способов установки загрузчика операционной системы на флешку заключается в использовании утилиты RMPrepUSB. Эта утилита имеет графический интерфейс и работает в Windows. Она позволяет установить загрузчики grub4dos и syslinux, обнулить таблицу разделов, создать первичный раздел, отформатировать его и даже проверить работоспособность загрузочного флеш-накопителя в эмуляторе QEMU.

image

Изображение 2. Окно RMPrepUSB

Для того, чтобы загрузить Elementary OS 0.4 загрузчиком grub4dos, установленным с помощью RMPrepUSB, необходимо добавить в загрузочное меню пункт, при выборе которого начинается загрузка этой операционной системы. Для этого создаем конфигурационный файл меню загрузчика grub4dos, который называется menu.lst, и, предполагая, что iso-образ, файлы ядра и начального ram-диска находятся на флешке в каталоге elementaryos, добавляем в него следующие строки:

timeout 10
default 0

title Elementary OS 0.4 'Loki'
find --set-root /elementaryos/elementaryos-0.4-stable-amd64.20160909.iso
kernel /elementaryos/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper persistent iso-scan/filename=/elementaryos/elementaryos-0.4-stable-amd64.20160909.iso splash
initrd /elementaryos/initrd.lz

title Reboot
reboot

В openSUSE файлы ядра и начального ram-диска называются boot/i386/loader/linux и boot/i386/loader/initrd. Для добавления в загрузочное меню запуска openSUSE 13.1 достаточно добавить в конфигурационный файл меню перед строкой title Reboot следующие строки (предполагая, что iso-образ, файлы ядра и начального ram-диска находятся на флешке в каталоге opensuse):

title openSUSE-13.1-GNOME-Live-i686.iso
uuid () > nul
set UUID=%?%
set ISO=openSUSE-13.1-GNOME-Live-i686.iso
kernel /opensuse/linux isofrom=/dev/disk/by-uuid/%UUID%:/opensuse/%ISO% isofrom_device=/dev/disk/by-uuid/%UUID% isofrom_system=/opensuse/%ISO% loader=syslinux splash=silent quiet
initrd /opensuse/initrd

В такое загрузочное меню можно добавлять не только операционные системы, но и утилиты для проверки оперативной памяти компьютера, поверхности жесткого диска, сброса или изменения пароля Windows и т.п. Например, можно добавить в него вызов программы для проверки памяти MemTest86+, скопировав в корневой каталог флешки файл memtest.img и добавив в конфигурационный файл menu.lst перед title Reboot следующие строки:

title memtest86+ v5.01
find --set-root /memtest.img
map /memtest.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
map --floppies=1

Файл memtest.img можно скачать с веб-сайта memtest.org в откомпилированном загрузочном iso-файле, содержащимся в zip- или gz-архиве.

5. Я использовал утилиту parted для этого, чтобы очистить таблицу разделов в mbr флешки, но по ошибке очистил таблицу разделов своего жесткого диска. После перезагрузки система не загрузилась. К счастью у меня оказалось несколько загрузочных флешек, содержащих различные дистрибутивы Linux. Как восстановить систему?

Ответ. Этот ситуации можно было бы избежать, при вызове parted сразу указав устройство, с которым Вы будете работать, например так:

sudo parted /dev/sdb

Для восстановления таблицы разделов можно использовать утилиту TestDisk, которая входит в состав некоторых «спасательных» дистрибутивов Linux, таких как Parted Magic LiveCD или SystemRescueCD. Сейчас дистрибутив Parted Magic является платным, но можно использовать его бесплатную устаревшую версию, которая входит в состав Hiren's BootCD. В меню Hiren's BootCD она называется «Linux based rescue environment (Parted Magic 2012-10-10)». С помощью этих дистрибутивов можно восстановить не только таблицу разделов, но и загрузчик mbr, используя команду chroot.

Использование chroot для восстановления загрузчика Linux достаточно популярно и подробности об этом можно узнать на различных ресурсах в Интернете, включая видео на YouTube.

Используемые источники:

1. LiveUSB
2. Мультизагрузка
3. Колонка «Вопросы и ответы» в русском LINUX FORMAT #203 (12/2015), #205 (3/2016) и #207 (5/2016)
4. Установка Linux из iso-образа под Windows
5. SDB:Create a Live USB stick using Windows
6. 20 — Add MEMTEST86+ memory test program to your grub4dos menu.lst file
7. LiveCD/Persistence
Tags:
Hubs:
+10
Comments7

Articles