Установка Linux на флешку. Создание загрузочной флешки

Инструкции

Установка Linux на флешку. Создание загрузочной флешки

Подробности

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

Такой вариант лучше live-системы хотя бы потому, что такую систему можно, как обычно, настраивать и изменять, ставить новые пакеты и т.д. Live-систему тоже можно изменять, но там сложнее.

Первый вопрос - как установить GRUB на флешку? Ведь чтобы загрузиться с флешки, надо, чтобы она была загрузочной. Ответ прост: так же, как и на обычный жесткий диск! Правда, у меня на этом моменте возникла одна проблема. Сейчас расскажу подробнее.

В моем домашнем компьютере два жестких диска (/dev/sda, /dev/sdb). Флешка, соответственно, - /dev/sdc. Однако, GRUB не захотел устанавливаться на нее:

# grub --version
grub (GNU GRUB 0.97)
grub> root (hd0,0)
 Filesystem type is ext2fs, partition type 0x83

grub> root (hd1,0)
 Filesystem type is ext2fs, partition type 0x83

grub> root (hd2,0)
Error 21: Selected disk does not exist

Т.к. граб видит диски не как sda1 или sdb3, а как (hd0,0) и (hd1,2), то флешка в данном случае должна быть (hd2,0). Однако, GRUB ее не увидел, хотя если при включении компьютера, при появлении GRUB-а перейти в консоль по "С", то он нормально видит флешку как (hd2,0). Чем это обусловлено, не знаю.

Решение я нашел такое:

Создаем файловую систему (лучше reiserfs. подробнее - ниже) на флешке, монтируем ее куда-нибудь, например в /mnt/flash и создаем файл /mnt/flash/boot/grub/device.map с таким содержимым:

(hd0) /dev/sdc

Вместо /dev/sdc впишите устройство флешки, как оно видится в вашей системе.

Почему именно reiserfs? Потому-что если у вас флешка не большого размера и вы отформатируете ее в ext2, то вам может не хватить инодов и увеличить их кол-во не получится. В reiserfs такой проблемы не будет.

После этого устанавливаем загрузчик на флешку:

# grub install --root-directory=/mnt/flash --no-floppy '(hd0)'

Чтобы убедиться, что граб действительно установился, посмотрите в каталог /mnt/flash/boot/grub.

Все! Самый важный этап пройден - ваша флешка УЖЕ загрузочная, т.е. если вы перезагрузите компьютер, выберите загрузку с USB-HDD, то увидите консоль граба. Осталась сплошная банальщина (за небольшим исключением) - установить Linux на флешку.

Что теперь нужно: установить на флешку сам линукс (я буду объяснять на примере Gentoo Linux), не забыть установить ядро, пароль для рута, чутка подправить /etc/fstab и создать конфиг для GRUB.

Процесс установки очень прост и понятен. Напомню, что флешка у нас примонтирована в /mnt/flash/. Скачаем туда stage3 и portage. Найти их можно на http://distfiles.gentoo.org .

# ls /mnt/flash
portage-latest.tar.lzma
stage3-i686-20100622.tar.bz2

Распаковка архивов:

# tar xafv stage3-i686-20100622.tar.bz2
# tar xafv portage-latest.tar.lzma -C /mnt/flash/usr

Chroot:

# chroot /mnt/flash /bin/bash

Все, вы в новой Gentoo. Можете ее настраивать и устанавливать пакеты. Хотя, лучше конечно, сперва задать пасс руту командой passwd и установить ядро:

# emerge -av gentoo-sources

Ах да, не забудьте перед этим прописать DNS сервер, чтобы не было проблем с разрешением имен. Я использую паблик 8.8.8.8, т.к. днс моего полосатого провайдера постоянно дохнет:

# echo "nameserver 8.8.8.8" > /etc/resolv.conf

После установки ядра, его исходные коды будут лежать где-то в /usr/src/linux*. Осталось его сконфигурировать и собрать:

# make menuconfig
# make && make modules_install

Как конфигурить ядро, я рассказывать не буду, т.к. это тема совершенно другой статьи и к флешкам не относится. Скажу лишь, что никаких особых моментов нет, я даже initram не использую, конфиг у меня практически стандартный, разве что файловую систему reiserfs (ведь флешка отформатирована в ней) надо вкомпилить в ядро ("<*>", но не "<М>". Это надо, если вы тоже не используете initram). Однако, если вы планируете подключать флешку к различным компьютерам, позаботьтесь о поддержке большого кол-ва оборудования в ядре.

После сборки копируем свежее ядро в /boot

# cp arch/x86/boot/bzImage /boot/kernel

Теперь создадим menu.lstдля GRUB. У меня он выглядит так:

# cat /boot/grub/menu.lst 
title USB-Linux
root (hd0,0)
kernel /boot/kernel rootdelay=10 root=/dev/sdc1 rw

Одна важная деталь - rootdelay. Без rootdelay=10 вы можете получить при загрузке кернел паник с ошибкой про root device и будете думать, что ядро просто не видит вашу флешку, попытаетесь найти для нее дрова, но все будет тщетно. Параметр root=/dev/sdc1 тоже желательно не опускать, /dev/sdc1 - корневой раздел, не "/boot", а "/". Хотя, на флешке создавать отдельный раздел под /boot или что-либо еще, просто смешно :)

Такс... Ядро установили, DNS-сервер прописали, пароль руту задали, что еще? Ах да, не забудьте про /etc/fstab. Если вы тоже устанавливаете Gentoo, закомментируйте там строки, начинающиеся на /dev/BOOT, /dev/SWAP и т.д. А в строке, начинающейся на /dev/ROOT, измените это значение на /dev/sdc1.и укажите файловую систему - reiserfs.

Теперь, вроде, ничего не забыл. Хотя, я и не ставил целью подробное описание процесса установки линукс в chroot-е. В любом случае, теперь вы установили Linux на флешку и можете перезагрузить компьютер и загрузиться с флешки =) Если у вас Gentoo, после приведения системы к нужному виду, не забудьте удалить каталог /usr/src/linux (он занимает около 600МБ) и /usr/portage (портежи весят примерно столько же) для экономии места.

Если я упустил какой-то момент или у вас возникли проблемы, сообщите об этом в комментариях. Спасибо!

Оригинал: http://zenux.ru/articles/41/

Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter