Bootflash/mkbootflash
Создание загрузочной флешки
Для создания загрузочной флеши, теоретически достаточно сделать две операции - поместить на неё необходимую информацию - файлы, образы и т.п. - сделать её загрузочной.
Теория её создания аналогична созданию LiveCD LiveCD/Howto. Проблема наполнения флешки легко решается, при наличии установочного дистрибутива или LivCD - надо просто скопировать содержимое дистрибутива, сконфигурировать файлы syslinux и инициировать его командой syslinux, как описано здесь : Bootflash/InstallFlash
Вкратце повторюсь : 1 Если у нас есть флешка с файловой системой fat, то всё нормально, если файловая система не fat, то делаем с помощью следующих команд:
Как определить на каком /dev видна флешка? Переключаемся на 12-й экран <Ctrl>+<Alt>+<F12> Вставляем флешку.
Пробегают строчки :
Nov 18 21:52:06 Rostov kernel: [ 5268.564551] usb 1-9: new high speed USB device using ehci_hcd and address 5 Nov 18 21:52:06 Rostov kernel: [ 5268.707151] usb 1-9: configuration #1 chosen from 1 choice Nov 18 21:52:06 Rostov kernel: [ 5268.710413] scsi7 : SCSI emulation for USB Mass Storage devices Nov 18 21:52:11 Rostov kernel: [ 5273.709807] scsi 7:0:0:0: Direct-Access Kingston DataTraveler 2.0 PMAP PQ: 0 ANSI: 0 C Nov 18 21:52:11 Rostov kernel: [ 5273.710031] sd 7:0:0:0: Attached scsi generic sg3 type 0 Nov 18 21:52:14 Rostov kernel: [ 5276.945898] sd 7:0:0:0: [sdd] 15646720 512-byte hardware sectors: (8.01 GB/7.46 GiB) Nov 18 21:52:14 Rostov kernel: [ 5276.946536] sd 7:0:0:0: [sdd] Write Protect is off Nov 18 21:52:14 Rostov kernel: [ 5276.946541] sd 7:0:0:0: [sdd] Assuming drive cache: write through Nov 18 21:52:14 Rostov kernel: [ 5276.958800] sd 7:0:0:0: [sdd] Assuming drive cache: write through Nov 18 21:52:14 Rostov kernel: [ 5276.958809] sdd: sdd1 Nov 18 21:52:14 Rostov kernel: [ 5276.959590] sd 7:0:0:0: [sdd] Attached SCSI removable disk
Работа с fdisk
Из этого лога, мы сразу видим, что флешка у нас обнаружена, как на /dev/sdd. Для более подробной информации о ней, мы выполняем команду fdisk -l /dev/sdd
Допустим, мы увидим :
[root]# fdisk -l /dev/sdd
Диск /dev/sdd: 8011 МБ, 8011120640 байт 255 heads, 63 sectors/track, 973 cylinders Units = цилиндры of 16065 * 512 = 8225280 bytes Disk identifier: 0x00001d1d Устр-во Загр Начало Конец Блоки Id Система /dev/sdd1 * 1 973 7815591 7 HPFS/NTFS
Т.е на флешке есть NTFS раздел. К сожалению, syslinux пока не поддерживает ntfs разделы. Бедим считать, что на флешке нет информации (если есть, то конечно сохраняем её где-то отдельно).
Удаляем раздел и создаём новый с помощью команды fdisk.
fdisk /dev/sdd
Команда (m для справки): m Выведем список команд fdisk - нажмём букву m
Действие команды a переключение флага загрузки b редактирование метки диска bsd c переключение флага dos-совместимости d удаление раздела l список известных типов файловых систем m вывод этого меню n добавление нового раздела o создание новой пустой таблицы разделов DOS p вывод таблицы разделов q выход без сохранения изменений s создание новой чистой метки диска Sun t изменение id системы раздела u изменение единиц измерения экрана/содержимого v проверка таблицы разделов w запись таблицы разделов на диск и выход x дополнительная функциональность (только для экспертов)
Команда (m для справки):
Выведем список разделов флешки - нажмём букву p
Команда (m для справки): p
Диск /dev/sdd: 8011 МБ, 8011120640 байт 255 heads, 63 sectors/track, 973 cylinders Units = цилиндры of 16065 * 512 = 8225280 bytes Disk identifier: 0x00001d1d
Устр-во Загр Начало Конец Блоки Id Система /dev/sdd1 * 1 973 7815591 7 HPFS/NTFS
Нажмём d: Команда (m для справки): d Выбранный раздел 1 Теперь, если нажать p, мы увидем, что разделов на флешке не осталось
Команда (m для справки): p
Диск /dev/sdd: 8011 МБ, 8011120640 байт 255 heads, 63 sectors/track, 973 cylinders Units = цилиндры of 16065 * 512 = 8225280 bytes Disk identifier: 0x00001d1d
Создаём раздел :
Команда (m для справки): n Действие команды e расширенный p основной раздел (1-4)
Выбираем основной - нажимаем p
Номер раздела (1-4): 1 Первый цилиндр (1-973, по умолчанию 1): Используется значение по умолчанию 1 Last цилиндр, +цилиндры or +size{K,M,G} (1-973, по умолчанию 973): Используется значение по умолчанию 973
Теперь изменяем идентификатор (id) раздела
Команда (m для справки): t Выбранный раздел 1 Шестнадцатеричный код (введите L для получения списка кодов):
Если сейчас ввести букву L, то можно получить список всех возможных типов разделов, в том числе интересующих нас:
1 FAT12 4 FAT16 <32M 6 FAT16 b W95 FAT32 c W95 FAT32 (LBA) e W95 FAT16 (LBA)
Подробнее о разновидностях разделов fat смотри [здесь] Выбираем тип раздела -с (W95 FAT32)
Команда (m для справки): t Выбранный раздел 1 Шестнадцатеричный код (введите L для получения списка кодов): c Системный тип раздела 1 изменен на c (W95 FAT32 (LBA))
Теперь осталось выполнить все сделанные нами операции - нажать букву w (или выйти не сделав ничего - нажать букву q, как я сейчас и сделаю, т.к. не хочу ничего стирать со своей флешки :) )
Форматирование раздела
После этого осталось отформатировать раздел под vfat командой :
mkfs.vfat /dev/sdd1
Кстати это не единственный вариант форматирования раздела fat. Можно, например использовать mkdosfs.
Ну а дальше наполняем флешку необходимым нам содержимым (которое можно например взять из имеющегося в наличии установочного или LiveCD) и выполнить команду syslinux -d /syslinux /dev/sdd1 или просто syslinux /dev/sdd1 (если все параметры идут по-умолчанию). Ключ d указывает, что файлы настройки лежат в нестандартном поддиректории.
Использование команды mkbootflash
Для облегчения создания установочных и загрузочных флешек в ALT Linux существует скрипт mkbootflash. Этот скрипт, в двух словах, делает следующие операции :
- копирует с DVD или установочного CD образы, необходимые для
для работы флешки.
- вызывает команду syslinux c нужными параметрами.
- при необходимости создаёт образ, который монтируется как
/home и в котором пользователь может хранить свои данные.
Т.е эти данные будут быть видны, если загрузились именно с флешки, а так они лежат внутри файла-образа.
Разберём его опции поподробнее. mkbootflash --help выдаёт вид этой команды :
mkbootflash [options] <path-to-device>
mkbootflash - это сама команда [option] - опции команды, квадратные скобки подсказывают, что опции не обязательны. <path-to-device> - путь до устройства, т.е. для флешки, видимой, как /dev/sdd1 команда в простейшем случае будет выглядеть :
mkbootflash /dev/sdd1
Теперь разберём опции этой команды:
- -i, --install - создание флешки с установочном образом
- -r, --rescue - создание флешки с образом восстановления системы
- -l, --live - создание флешки с live образом, т.е. создание liveflash
- -m, --memtest - помещение на флешку теста памяти
- -M, --MBR - запись загрузочной информации в MBR флешки
- -s, --size - размер создаваемого раздела /home в блоках (по 512 байт)
- -f, --force - принудительное создание образа /home
- -b, --boot-only - создание только загрузочной записи (без копирования)
- -p, --path - путь до дирентории, или точки монтирования, где лежат файлы из образа CD (по-умолчанию - /media/cdrom)
- -v, --verbose - выдача подробной информации, что сейчас делает скрипт
- -V, --version - выдача версии скрипта
- -h, --help - выдача справки.
Таким образом, если у нас есть LiveCD, то мы можем создать из него LiveFlash c разделом /home в 200 Mb командой (для флешки /dev/sdd)
mkbootflash -l -s 400000 /dev/sdd1
А установочную с образом rescue командой
mkbootflash -ir /dev/sdd1
Необходимо отметить, что если на имеющимся CD/DVD нет, например, образа rescue, то скрипт не создаст его и выдаст ошибку. Т.е. скрипт умеет создавать только пустой образ /home и копировать имеющиеся образы.
Центр управления
На основе скрипта mkbootflash для центра управления был создан бакенд, который выполняет аналогичные функции.