Загрузочный USB-диск с Linux

Материал из Xgu.ru

Перейти к: навигация, поиск

Автор: Сергей Черепенин
Правильная ссылка: [1]

На этой странице детально описывается процедура подготовки USB-носителя для использования в качестве загрузочного устройства. На носитель устанавливается операционная система Debian GNU/Linux.


Содержание

[править] Подготовка USB-устройства

Для создания USB-загрузочного устройства рекомендуется в первую очередь очистить таблицу разделов на этом устройстве:

%# fdisk -l /dev/sda

Disk /dev/sda: 1031 MB, 1031798784 bytes
32 heads, 62 sectors/track, 1015 cylinders
Units = cylinders of 1984 * 512 = 1015808 bytes

   Device Boot      Start         End      Blocks   Id  System

Далее создаем раздел на flash-диске:

%# fdisk -l /dev/sda

Disk /dev/sda: 1031 MB, 1031798784 bytes
32 heads, 62 sectors/track, 1015 cylinders
Units = cylinders of 1984 * 512 = 1015808 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        1015     1006849   83  Linux

Теперь создадим файловую систему на вновь созданном разделе:

%# mkfs.ext3 /dev/sda1
mke2fs 1.40-WIP (14-Nov-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
125952 inodes, 251712 blocks
12585 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=260046848
8 block groups
32768 blocks per group, 32768 fragments per group
15744 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376

Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

[править] Установка базовой системы на FLASH-устройство

Монтируем этот раздел:

%# mount /dev/sda1 /mnt

Скопируем с ближайшего зеркала (пусть, например, это http://debian.org.ua/debian) в каталог /mnt базовую операционную систему Debian при помощи команды debootstrap

%# debootstrap etch /mnt http://debian.org.ua/debian
I: Retrieving Release
I: Retrieving Packages
I: Validating Packages
I: Resolving dependencies of required packages...
I: Resolving dependencies of base packages...
.
.
.
.
I: Configuring tasksel-data...
I: Configuring sysklogd...
I: Configuring tasksel...
I: Base system installed successfully.

[править] Настройка загрузчика GRUB

Все необходимые файлы для нормальной работы загрузчика находятся в каталоге /mnt/boot

%# ls -l /mnt/boot/
итого 0

Как видно, он пуст и следовательно при установке системы командой debootstrap в этот каталог ничего не копируется. Все файлы (за исключением device.map создадутся во время инсталляции загрузчика. Для создания файла device.map сначала необходимо создать каталог /mnt/boot/grub:

%# mkdir /mnt/boot/grub

И создадим нужный нам файл:

%# echo '(hd0) /dev/sda' > /mnt/boot/grub/device.map
%# cat /mnt/boot/grub/device.map
(hd0) /dev/sda

Теперь можно приступать к установке загрузчика. Установка выполняется командой grub-install. Опция --root-directory указывает на необходимость установки в указанное дерево каталогов, а не в системный корневой каталог:

%# grub-install --root-directory=/mnt --no-floppy '(hd0)'
Installation finished. No error reported.
This is the contents of the device map /mnt/boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.

(hd0) /dev/sda

Проверяем каталог /mnt/boot/grub:

%# ls -l /mnt/boot/grub/
итого 180
-rw-r--r-- 1 root root    197 2007-01-24 22:02 default
-rw-r--r-- 1 root root     15 2007-01-24 22:01 device.map
-rw-r--r-- 1 root root   7584 2007-01-24 22:02 e2fs_stage1_5
-rw-r--r-- 1 root root   7424 2007-01-24 22:02 fat_stage1_5
-rw-r--r-- 1 root root   8192 2007-01-24 22:02 jfs_stage1_5
-rw-r--r-- 1 root root   6848 2007-01-24 22:02 minix_stage1_5
-rw-r--r-- 1 root root   9280 2007-01-24 22:02 reiserfs_stage1_5
-rw-r--r-- 1 root root    512 2007-01-24 22:02 stage1
-rw-r--r-- 1 root root 108392 2007-01-24 22:02 stage2
-rw-r--r-- 1 root root   8904 2007-01-24 22:02 xfs_stage1_5

Для загрузки системы необходимо ядро и виртуальный загрузчик initrd, debootstrap не копирует их с зеркала:

# ls -l /mnt/boot/
итого 4
drwxr-xr-x 2 root root 4096 2007-01-24 22:02 grub

Мы можем либо установить, либо скопировать предварительно скомпилированное ядро и загрузчик:


ls -l /mnt/boot/
итого 6140
drwxr-xr-x 2 root root    4096 2007-01-24 22:02 grub
-rw-r--r-- 1 root root 4512197 2007-01-24 22:06 initrd.img-2.6.19.2
-rw-r--r-- 1 root root 1753024 2007-01-24 22:07 vmlinuz-2.6.19.2

Кроме самого ядра и загрузчика необходим еще и каталог с модулями установленного ядра:

%# ls -l /mnt/lib/modules/
итого 0

Скопируем и его на примонтированную флешку:

%#ls -l /mnt/lib/modules/
итого 4
drwxr-xr-x 3 root root 4096 2007-01-24 22:16 2.6.19.2

Теперь создалим файл-меню загрузчика:

# cat /mnt/boot/grub/menu.lst
timeout 5 
title USB Disk Boot 
kernel /boot/vmlinuz-2.6.19.2 root=/dev/sda1 ro vga=792 
initrd  /boot/initrd.img-2.6.19.2

Последним необходимым шагом будет редактирование файла /mnt/etc/fstab:

%# cat /mnt/etc/fstab
/dev/sda1        /              ext3            errors=remount-ro       0       1
proc            /proc           proc            defaults                0       0

[править] Заключение

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

Установить новое программное обеспечение можно традиционно, загрузившись с него, или с другой системы Debian GNU/Linux. Во втором случае нужно примонтировать носитель в каталог файловой системы и сделать в него chroot:

%# mount /dev/sda1 /mnt
%# chroot /mnt
%# apt-get install screen

В данном случае будет установлен пакет screen.

Обратите внимание на содержимое файла /etc/apt/sources.list. Файл будет содержать имя того репозитория, который использовался при инсталляции системы командой deboostrap.


[править] Установка системы на ноутбук без CD/DVD привода

[править] Способ 1. "Для чайников"

Если на машине установлена Windows и с нее можно загрузиться, то качаем файлик http://goodbye-microsoft.com/pub/debian.exe и нажав пару раз кнопку "Далее" попадаем в привычный инсталлятор debian.

Более подробно тут.

Замечания к данному способу: у автора на этапе установки система не смогла определить сетевую карту (скорее всего не были включены в ядре соответствующие модули, т.к. при загрузке с того же knoppix никаких проблем не было). Так или иначе, сетевая установка стала невозможной.

[править] Способ 2. Использование boot.img.gz

Для этого нам нужна еще одна машина с Linux.

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

  • boot.img.gz из раздела hd-media (например, для стабильной ветки это файл размером ~16Mb)
  • любой установочный iso-образ

Далее запихиваем в комп флешку (не монтируя), определяем устройство, которое будет ее отображать:

# tail /var/log/messages 

Nov  8 19:02:32 home kernel: [22356.521167] usb 5-5: Manufacturer: JetFlash
Nov  8 19:02:32 home kernel: [22356.521171] usb 5-5: SerialNumber: GV3PQ9IG
Nov  8 19:02:37 home kernel: [22361.546033] scsi 6:0:0:0: Direct-Access     JetFlash TS4GJFV30        8.07 PQ: 0 ANSI: 2
Nov  8 19:02:37 home kernel: [22361.546691] sd 6:0:0:0: [sdb] 7987200 512-byte hardware sectors (4089 MB)
Nov  8 19:02:37 home kernel: [22361.549798] sd 6:0:0:0: [sdb] Write Protect is off
Nov  8 19:02:37 home kernel: [22361.551320] sd 6:0:0:0: [sdb] 7987200 512-byte hardware sectors (4089 MB)
Nov  8 19:02:37 home kernel: [22361.551699] sd 6:0:0:0: [sdb] Write Protect is off
Nov  8 19:02:37 home kernel: [22361.551699]  sdb:
Nov  8 19:02:37 home kernel: [22361.650337] sd 6:0:0:0: [sdb] Attached SCSI removable disk
Nov  8 19:02:37 home kernel: [22361.650337] sd 6:0:0:0: Attached scsi generic sg2 type 0

В данном случае это sdb и выполняем

zcat /home/download/boot.img.gz > /dev/sdb

Далее монтируем флешку и обычным способом копируем на нее iso-образ

Замечания к данному способу:

  1. Надо следить за тем, чтобы совпадали версии debian в boot.img.gz и iso-образе (если один из файлов собран, например, для etch, а второй для sid, то инсталлятор при установке скажет, что не соответствуют версии ядра и модулей к нему и откажется что-либо устанавливать).
  2. Указанным выше способом на флешке разметилась область размером ~250Mb и следовательно на нее можно было записать только netinst.iso (businesscard.iso копировать не имеет смысла, а расширять раздел и копировать на него полноценный CD или DVD не было времени).

[править] Способ 3. "Для гуру"

Если есть машина с Linux, то согласно приведенному в начале статьи способу устанавливаем debian на флешку, а потом тем же способом на жесткий диск ноутбука...

[править] Способ 4. "unetbootin"

Если есть машина с Windows, то используя программку unetbootin записываем на флешку Debian Live CD (или еще лучше USB) загружаемся с нее, а далее то же.

Замечания к данному способу:

  1. При использовании Debian-netinstall, инсталлятор будет искать CD диск (с драйверами, в том числе и для сетевых устройств) и не найдя его выдаст сообщение о невозможности установки.


[править] Дополнительня информация


[править] Материалы на Xgu.ru посвящённые загрузке системы

Бездисковая загрузка: