Как сделать загрузочную флешку reactos
Запускаем ReactOS с BTRFS раздела
Меня зовут Виктор, и в этом году я единственный студент в программе Google Summer of Code на проекте ReactOS. Сегодня я расскажу немного о том, что я делаю в рамках стажировки.
ReactOS поддерживает кучу всяких разных файловых систем для чтения и записи (fat32, ext2, ReiserFS, BTRFS), однако загружаться до сих пор умеет только с раздела, отформатированного в fat32. Этой весной я решил что пора начать исправлять эту ситуацию, и подал заявку на GSoC. И вот, спустя несколько месяцев я пишу этот пост 🙂
Почему BTRFS? Ответ прост — драйвер файловой системы WinBtrfs на текущий момент самый стабильный и полнофункциональный из всех, что включены в код РеактОС. На данном этапе, мы хотим пофиксить именно баги ядра, которые мешают использовать другие ФС для загрузки, так что баги драйвера ФС нам тут совсем ни к чему.
Но начать мне пришлось не с ядра ОС, а с установщика. Благо для установщика было уже почти всё готово: нужно было только включить загрузку драйвера WinBtrfs в нашем установщике (usetup), и добавить пару строчек кода, для поддержки форматирования в нужной файловой системе. После чего мне удалось (почти) без проблем скопировать файлы ReactOS на раздел, отформатированный в BTRFS.
С установщиком расправились быстро, а вот следующая задача гораздо интереснее. Загрузчик ReactOS — FreeLdr поддерживает практически только две файловые системы — fat32 и iso (есть код для ext2 и ntfs, но его уже лет 5 никто не пробовал запускать). Поскольку FreeLdr повторяет принцип работы загрузчика ntldr от MS, он состоит из двух частей — загрузочного сектора в начале раздела, куда передает управление MBR диска, и основной части, которая переводит процессор в защищенный режим, загружает ядро ntoskrnl.exe в память, и делает ещё кучу всего.
(так выглядит процесс загрузки ReactOS)
Таким образом, для поддержки новой файловой системы, нужно написать загрузочную запись раздела (VBR), задача которой найти в корневой директории диска исполняемый файл основной части загрузчика (у нас он называется freeldr.sys), загрузить его в память и передать туда управление. Но это ещё не всё, в самом freeldr.sys нужен практически полноценный read-only драйвер файловой системы, для того чтобы считывать конфигурационные файлы, ядро, кусты реестра и т.д.
Вначале нужно было разобраться с самой файловой системой BTRFS. До этого самыми сложными вещами, что я ковырял были fat32 и ext2, так что на изучение “комбайна” BTRFS мне потребовалось немало времени. Документация на wiki.kernel.org помогает разобраться, но для полного понимания её было недостаточно — приходилось ходить в исходники grub, u-boot и других загрузчиков. Очень полезной для изучения строения файловой системы оказалась утилита на python, которую я написал для вывода структур файловой системы в консоль. С помощью нее я и написал первый прототип загрузочного сектора, который вытаскивает загрузчик из бинарного файла с образом диска с файловой системой BTRFS.
(на картинке видны элементы корневой директории)
Теперь пришло время настоящего загрузочного сектора. Осложняется его написание тем, что тут мы работаем в реальном режиме процессора со всеми вытекающими последствиями (
1мб памяти, сегментная адресация и работа с диском через прерывания BIOS). Раздолье для любителей олдскула типа меня 🙂
В структурах BTRFS почти все поля имеют 64-битный размер, что весьма “раздуло” код, поскольку пришлось активно использовать 32-битные x86 инструкции. Частенько приходится использовать конструкции типа:
Самой трудоёмкой оказалось написание процедуры обхода b-дерева, на её отладку ушло больше всего времени. И после нескольких бессонных ночей, мне таки удалось получить заветное сообщение об ошибке из второго этапа загрузки:
freeldr.sys получилось успешно загрузить в память, и даже не понадобилось использовать магию вроде Unreal Mode. 640кб хватит всем!
Код загрузочного сектора можно посмотреть в моём репозитории на github (его ещё ожидает рефакторинг), а всю работу по BTRFS в этой ветке.
Теперь очередь за второй частью загрузчика — нужно научить его считывать файл конфигурации с новой файловой системы. Следите за новостями!
Как создать загрузочную флешку с Linux
Записав дистрибутив на внешний носитель, вы сможете установить новую ОС или опробовать её работу в Live-режиме.
Чтобы запустить Linux на своём компьютере безо всяких виртуальных машин, вам понадобится загрузочная флешка. Для этой задачи подойдёт носитель объёмом от 4 ГБ. Все данные с него будут стёрты, поэтому предварительно скопируйте нужные файлы куда-то ещё. После этого воспользуйтесь нашей инструкцией.
1. Загрузите ISO-образ
Для создания загрузочной флешки вам понадобится один из дистрибутивов Linux. Они распространяются в формате образа диска ISO. Чтобы вы не ломали голову, на каком дистрибутиве остановиться, мы собрали проверенные варианты.
В качестве примера возьмём Ubuntu из-за её популярности, но для других Linux действия идентичны. Откройте сайт Ubuntu, перейдите в раздел Download и нажмите на зелёную кнопку, чтобы скачать ISO-файл системы. Если разработчик предлагает загрузить ISO через торрент, воспользуйтесь этой возможностью. Так выйдет быстрее.
2. Запишите образ на носитель
Действия будут несколько различаться в зависимости от операционной системы вашего компьютера.
Windows
Пожалуй, идеальный инструмент для записи загрузочных ISO-файлов на флешки в Windows — это Rufus. Программа отличается быстротой и может работать даже без установки.
macOS
Возможно, понадобится ввести пароль суперпользователя macOS. Сделайте это и ждите, пока процесс не завершится.
Linux
Есть целых три способа создать загрузочную флешку на этой ОС.
Startup Disk Creator
Это встроенный инструмент для создания загрузочных флешек. Он есть в Ubuntu и многих её производных. Программу можно найти в меню запуска по названию «Создание загрузочного диска» или Startup Disk Creator.
Откройте приложение, нажмите «Обзор» и укажите нужный ISO-образ. Затем выберите носитель и щёлкните «Создать загрузочный диск». Если понадобится, введите свой пароль суперпользователя Linux.
Etcher
Ещё один вариант — кроссплатформенный Etcher.
Это терминальная команда Linux, работающая во всех дистрибутивах. Полезна, если хотите быстро создать загрузочную флешку, ничего не устанавливая.
Подождите несколько минут. Когда в командной строке снова появится курсор и отчёт о том, сколько данных было скопировано, можете извлечь флешку.
3. Загрузитесь с флешки
Теперь нужно запустить Linux с флешки. Вот как это сделать:
После этого компьютер должен загрузиться с выбранной флешки.
10 лучших программ для создания загрузочной флешки
Вставьте USB-накопитель, выберите одну из утилит для Windows, macOS или Linux, и через несколько минут всё будет готово.
1. Rufus
Один из самых популярных инструментов, позволяющий подготовить установочную флешку с Windows или Linux всего в несколько кликов. Помимо основной функции умеет проверять диски на целостность, а также добавлять в загрузочный образ полезные утилиты для тестирования.
2. Etcher
Кросс‑платформенное приложение с простым и удобным интерфейсом, которое поможет развернуть установочный образ на карту памяти или USB‑флешку. Всё, что нужно сделать, — это выбрать файл образа, целевой диск и нажать кнопку Flash. После записи Etcher может проверить чтение диска и автоматически отмонтировать его.
3. Windows USB/DVD Download Tool
Фирменная утилита Microsoft, которая изначально была предназначена для записи образов Windows 7. Тем не менее она также поддерживает более новые версии этой операционной системы и по‑прежнему актуальна. Благодаря аскетичному интерфейсу допустить какую‑нибудь ошибку в процессе работы просто нереально.
4. WinToUSB
В отличие от предыдущих, эта программа предназначена для создания дисков, с которых ОС будет загружаться и работать без установки. Источниками могут выступать образы в различных форматах, DVD‑диски или инсталлированная на компьютере Windows.
5. Win32 Disk Imager
Предельно простой инструмент для записи загрузочных дисков с минимальным количеством настроек. Помимо развёртывания готовых образов, умеет создавать полные резервные копии дисков и карт памяти для последующего быстрого восстановления.
6. Universal USB Installer
Функциональная утилита создаёт загрузочную флешку для установки системы. Поддерживает все версии Windows и многочисленные дистрибутивы Linux. При этом умеет не только использовать готовые образы, но и автоматически скачивать их из интернета.
7. WinSetupFromUSB
Мощное приложение, с которым всего за несколько минут можно записать установочный диск Windows или Linux. WinSetupFromUSB поддерживает BIOS и UEFI, а также образы различных форматов и имеет множество полезных инструментов для работы с дисками.
8. UNetbootin
Кросс‑платформенная утилита с открытым исходным кодом, которая поможет создать загрузочный диск практически любого Linux‑дистрибутива. Для записи можно использовать имеющийся образ или скачать его из интернета прямо через UNetbootin.
9. DiskMaker X
Простое приложение для создания установочных флешек macOS. DiskMaker X не имеет интерфейса: выбор образа и целевого диска осуществляется через диалоговые окна, а об окончании процесса вы узнаете из системного уведомления.
10. Install Disk Creator
Очень простая утилита для записи загрузочных флешек с macOS, с которой справится даже самый неопытный пользователь. Install Disk Creator автоматически распознаёт скачанный установщик из папки «Программы», и всё, что остаётся сделать, — это выбрать флешку, на которую его нужно развернуть.
6 способов сделать загрузочную флешку с Windows
Можно использовать как специальные программы, так и встроенные инструменты этой ОС.
Загрузочные флешки используют для установки Windows на компьютер. Чтобы создать такой носитель, нужно записать образ операционной системы на любое USB-устройство, объём которого превышает 4 ГБ. В процессе вся находившаяся на флешке информация будет стёрта.
1. C помощью утилиты Media Creation Tool
Этот способ — официальный. Он подойдёт в том случае, если вы хотите установить лицензионную копию Windows. Но для её активации у вас должен быть соответствующий ключ. Утилита Media Creation Tool скачает с сервера Microsoft лицензионный образ Windows и запишет его на флешку. В итоге вы получите загрузочный накопитель.
Скачайте с сайта Microsoft средство Media Creation Tool, предназначенное для создания установочной флешки, нажав большую синюю кнопку «Скачать средство сейчас».
Запустите утилиту и выберите «Создать установочный носитель». Затем отметьте «Использовать рекомендуемые параметры для этого компьютера», если планируете устанавливать Windows на текущий ПК, или введите параметры, подходящие для другого компьютера.
Далее выберите «USB-устройство флэш-памяти», отметьте нужный накопитель в списке доступных устройств и подтвердите выбор. После этого дождитесь завершения операций с файлами. Через несколько минут установочная флешка будет готова к использованию.
2. Без сторонних программ
Этот способ подойдёт, если вы собираетесь установить Windows на более-менее современный компьютер с оболочкой UEFI (графический интерфейс вместо старой BIOS). Суть заключается в следующем: очистить содержимое флешки и скопировать на неё образ системы исключительно средствами ОС.
Перед созданием загрузочной флешки отформатируйте накопитель в файловой системе FAT32. Затем откройте в проводнике образ ISO, выделите все внутренние файлы и папки и кликните по ним правой кнопкой мыши. В контекстном меню выберите «Отправить» и укажите в списке целевую флешку.
Когда копирование объектов завершится, накопитель будет готов к установке системы.
3. С помощью UltraISO
Этот вариант подходит как для новых компьютеров с UEFI, так и для старых с BIOS.
UltraISO — платная программа, но для нашей задачи хватит и бесплатной тестовой версии. Просто установите утилиту и после первого запуска выберите «Пробный период».
В меню программы кликните «Файл» → «Открыть» и выберите образ ISO. На верхней панели нажмите «Самозагрузка» → «Записать образ жёсткого диска». В следующем окне укажите путь к целевой флешке в поле Disk Drive. Затем отформатируйте накопитель с помощью специальной кнопки (выбирайте систему FAT32), после чего нажмите «Записать».
Дождавшись завершения записи, вы можете использовать загрузочную флешку по назначению.
4. С помощью Rufus
Чрезвычайно популярная программа, которая отлично справляется с записью загрузочных флешек с поддержкой и MBR, и GPT. По заверениям авторов, отличается невероятной скоростью работы — как минимум вдвое быстрее Media Creation Tool.
Скачайте и запустите портативную версию Rufus. Выберите нужную флешку в поле «Устройства». Затем щёлкните кнопку «Выбрать» и укажите на образ диска операционной системы.
После этого нажмите «СТАРТ» и подождите, пока программа не сообщит об успешном завершении записи.
5. С помощью Etcher
Etcher — программа с открытым исходным кодом, помогающая записывать загрузочные флешки. Принцип работы ещё проще, чем в других приложениях.
Скачайте и установите Etcher для своей операционной системы — поддерживаются Windows, macOS и Linux. Затем откройте программу, нажмите Select Image и выберите ISO-файл с системой.
Нажмите Flash и подождите окончания процесса.
6. С помощью «Ассистента Boot Camp»
Порой бывает нужно подготовить установочный носитель для ПК без операционной системы, а под рукой только Mac. В таком случае можно воспользоваться программой «Ассистент Boot Camp».
Откройте «Ассистент Boot Camp» и нажмите «Продолжить». Затем снимите галочку «Установить Windows 10» или новее. Галочку «Создать диск установки Windows 10 или новее» оставьте.
Нажмите «Продолжить», убедитесь, что «Ассистент Boot Camp» выбрал правильную флешку, щёлкните «Продолжить» ещё раз и подождите, пока запись не будет закончена.
Создание универсальной мультизагрузочной флешки с Windows 7/8/10, WinPE, Linux и пр. (Legacy + UEFI поддерживается)
Алоха!
Протестировав ее пару недель, я нашел для себя, что инструмент и в правду заслуживает внимания (именно поэтому и появилась эта заметка).
Самый простой способ создания мультизагрузочного носителя
ШАГ 1
Как и для создания любой загрузочной флешки нам понадобятся установочные ISO-образы с ОС Windows. Т.к. мы будем использовать Ventoy — можете сразу же загрузить несколько ISO, например, Windows 10, Windows 8, LiveCD и т.д. 👇 (их количество ограничивается размером вашей флешки 👌)
LiveCD для аварийного восстановления Windows — моя подборка
ШАГ 2
Ventoy — запись загрузочной флешки
Теперь просто копируем все загрузочные ISO-файлы, которые вам нужны (с Windows/Linux и др.), на подготовленную флешку.
Есть один нюанс : имена файлов должны быть на латинице (без русских символов и пробелов). Вообще, название лучше сделать макс. коротким, без спец. символов. Примеры ниже 👇
Копируем ISO-файлы с ОС на подготовленную флешку
Правда, ведь удобно?! 👌.
ШАГ 3
Теперь покажу на примере, как всё это выглядит на практике.
Как загрузиться с USB-флешки или внешнего HDD — для начинающих (всё по шагам)
Загрузка с флешки от Ventoy
Далее перед вами покажется универсальное меню со списком всех ISO, которые вы добавили на флешку (в моем случае 3 образа: Windows 8, 10, и LiveCD 👇). Достаточно просто выбрать нужный ISO и нажать Enter.
Ventoy — загрузка работает (обратите внимание на название!)
Тест установки Windows 8
ШАГ 4: альтернатива
Так как инструмент Ventoy пока новый, то не исключено, что на каких-то устройствах могут возникнуть «сложности». Поэтому на всякий случай привожу др. альтернативные варианты создания загрузочных носителей. 👇
1) Как создать мультизагрузочную флешку (диск) с несколькими Windows (для компьютеров/ноутбуков, работающих под UEFI)
2) Как создать загрузочную флешку Windows 10 под UEFI или BIOS в Rufus (новая 3.x версия) [инструкция]
🐤 Видео-инструкция
Весь процесс подготовки и тестирования флешки (более детально) вы также можете посмотреть в небольшом видео. Ссылка ниже.