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

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

Дата публикации: Aug. 17, 2010, 5:39 a.m.
Теги: flash, linux,
Автор: Brainsburn

Boot-инг с флешки Keywords: установка, linux, флешка, загрузка, usb-hdd

На флешку можно записать загрузочный образ дистрибутива 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 (портежи весят примерно столько же) для экономии места.



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






Возможно, эти материалы Вас заинтересуют:


Рекомендовать эту страницу:

Комментарии:(6)

# 7soft July 19, 2011, 8:09 a.m.
Спасибо за статью. Но есть один вопрос - сколько места на флешке будет занимать чистая Gentoo или ubuntu???

# 2fed Nov. 1, 2011, 7:44 p.m.
чистая генту (ядро, портаж и стейж3) - полтора гига. я вот поставил, только проблема с загрузкой была. с грубом. ща буду пробовать этот вариант

# Avari Jan. 3, 2012, 2:03 p.m.
В grub2 проблема “а как же будет называться флэшка на этой машине?” решается гораздо боле изящно ;)
Я на флэшку не ставил полноценную систему - решал задачу “мультизагрузка с iso-образов”. Но, думаю, кусок конфига кому-нибудь поможет =)


echo “GRUB2 loaded” # Это просто на всякий случай ;)
insmod part_msdos # Эти 2 insmod вообще-то не нужны - grub2, судя по документации,
insmod fat # автоматически делает insmod, когда ему, скажем, не хватает модуля чтения FS
search –no-floppy –label –set=root multiboot # Это - главная строчка =)
# Подсказка: mkfs.vfat -n. Или mlabel.
set timeout=10
set default=0
menuentry “Ubuntu 10.04.3 amd64” {
set iso=ubuntu-10.04.3-desktop-amd64.iso
loopback loop /$iso
echo ‘Loading kernel…’ # Это чтобы не так скучно было ждать загрузки =)
linux (loop)/casper/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper iso-scan/filename=/$iso noeject noprompt –
echo ‘Loading initrd…’
initrd (loop)/casper/initrd.lz
}

menuentry “Xubuntu 11.10 amd64” {
set iso=xubuntu-11.10-desktop-amd64.iso
loopback loop /$iso
echo ‘Loading kernel…’
linux (loop)/casper/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper iso-scan/filename=/$iso noeject noprompt –
echo ‘Loading initrd…’
initrd (loop)/casper/initrd.lz
}

menuentry “Lubuntu 11.10 amd64” {
set iso=lubuntu-11.10-desktop-amd64.iso
loopback loop /$iso
echo ‘Loading kernel…’
linux (loop)/casper/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper iso-scan/filename=/$iso noeject noprompt –
echo ‘Loading initrd…’
initrd (loop)/casper/initrd.lz
}

# Человек. Aug. 22, 2014, 3:55 p.m.
Камрады, подскажите пожалуйста, по какой причине выскакивает ошибка при установки дистрибутива описанного в статье, а так же tails и kali linux. Вот фотография ошибки при загрузке-
http://s013.radikal.ru/i325/1408/59/7fb6f2dbdd2a.jpg

# Человек. Aug. 24, 2014, 6:12 p.m.
Проблему решил, но так и не понял почему такое произошло… Дистрибутивы записал программой ImageWriter. До этого записывал программой ультра изо (пробная версия). Из за чего такая разность в результатах получилась? Спасибо за внимание.

# su Aug. 27, 2015, 8:30 a.m.
пишу флешки так:
sudo dd if=/home/user/mycd.iso of=/dev/sdb conv=noerror
просто и понятно
если не хотите так, то проще этого я способа не знаю:
http://unetbootin.github.io/

Комментировать:

Гость, Вы можете оставить свой комментарий.

Стиль кода:
Имя
Сайт * не обязательное поле
Поставьте галку, если вы - бот
Поставьте галку, если вы - человек

Друзья! Убедительная просьба воздержаться от нецензурной лексики!



Справка:
Если вы хотите использовать в тексте комментария специальные символы, например, [ и ], используйте их внутри тега [code] [/code]
Вы можете использовать теги BBcode. Для оформления кода и подсветки синтаксиса используйте тег [code] или [code=название_языка], например, [code=python]
Ссылки вставляйте так: [url]zenux.ru[/url] или так: http://zenux.ru, но не так: zenux.ru
Текст сообщения должен быть в пределах 3000 символов.




Последние комментарии:

Brainsburn_: “Написание в 1-й” подразумевает “в первой”, а не в... >>>
ZZZ: “Написание в 1-й” подразумевает &ldquo... >>>
SBOdin: Спасибо за полезное руководство... >>>
fanyit: Спасибо за обзор. очень полезно и доступно.... >>>
cheech: Спасибо, статья полезная )... >>>