Устанавливаем LINUX на USB

 | 13.22

Мой Компьютер, №1, 3.01.2008

 

Отправной точкой в поиске соответствующей информации, наверное, следует считать сайт pendrivelinux.com, на котором можно найти не только тексты, но и специальный дистрибутив — Pendrive Linux. Последний базируется на Debian GNU/Linux, соответственно, совместим с ним по пакетам. Но мне удобнее Ubuntu, следить же за свежестью двух дистрибутивов и накладно, и неудобно. Да и зачем?

Общие вопросы установки

Вообще-то, на USB-флэшку можно установить любой дистрибутив Linux. Количество же времени, затраченного на последующую доводку, зависит уже от конкретного дистрибутива и личного опыта.

Программа установки Ubuntu/KUbuntu «видит» USB-флэшкарту как обычный жесткий диск, может его автоматически разметить и даже, вполне вероятно, установить дистрибутив (иногда не с первого раза, но все же).

В других дистрах такой номер не проходит. Fedora и Mandriva если и покажут, что такой диск есть, то в списке предлагаемых устройств для установки системы его не выведут.

Единственной проблемой здесь может быть выбор раздела для установки загрузчика. В K/Ubuntu по умолчанию загрузчик устанавливается в hd0, нажав кнопку Advanced в последнем окне, можно указать на другой диск.

Но часто определить, какой конкретно номер диска у вставленной флэшки, тяжело. Особенно во времена SATA-дисков и повального перехода на libata, когда все диски в системе определяются как /dev/sdX. Благо флэшкарта не является единственным диском в системе, GRUB может не найти свой конфигурационный файл, чтобы загрузить систему. Поэтому как минимум придется подправить /boot/grub/menu.lst. (Секрет: если отключить на время установки все жесткие диски, автоматически будут прописаны правильные параметры.)

Если дистрибутив не имеет штатного установщика файлов на флэшку, можно просто скопировать уже установленную систему (естественно, лишь бы места хватило):

$ sudo cp —preserve -R /{bin,dev,etc,home,lib,root,sbin,usr,var} /mnt/sda1

$ sudo mkdir /mnt/sda1/{boot,mnt,proc,sys,tmp}

Работать будет, но не сразу. +

 

Возможные проблемы

Флэшки имеют ограниченный ресурс циклов записи-перезаписи (около 1 млн), а Linux использует очень много сервисов, сохраняющих временную информацию на диск. Это файловые системы /tmp и /dev, syslog, различные блокировки, плюс еще целый раздел свопа. При интенсивной работе такой диск не только на порядок быстрее исчерпает свой ресурс, но и работать будет медленнее, ведь скорость записи на флэшку тоже невелика.

В LiveCD все хозяйство работает в ОЗУ, после установки же все пишется уже на диск. Что не есть хорошо. Поэтому все подобные ресурсы следует вывести в ОЗУ, использовав псевдофайловую систему tmpfs.

Для этого в /etc/fstab следует прописать:

tmpfs /tmp tmpfs  defaults,noatime 0 0

# и затем для каждого раздела

tmpfs /var/lock tmpfs  defaults,noatime 0 0

tmpfs /var/log    tmpfs  defaults,noatime 0 0

tmpfs /var/run    tmpfs  defaults,noatime 0 0

И так далее — где рука не дрогнет.

Другая проблема загрузки связана уже с особенностями системы X-Window, да и вообще автоматическим определением устройств. После установки на диск уже не используются те изощренные скрипты, позволяющие на лету сгенерировать правильный файл /etc/X11/xorg.conf, в этом просто нет необходимости и смысла, ведь десктопы системы по составу, как правило, статичны. Мы чаще меняем дистрибутивы, чем видеокарты. Поэтому всегда есть вариант, что на другом компьютере графика загрузиться не сможет, в результате чего пользователь попадет прямиком в консоль.

Здесь придется собрать все свои знания и сгенерировать нужный файл самостоятельно. Хотя для начала следует сохранить старый файл командой:

$ sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.orig 

А затем ввести команду:

$ sudo X –configure

При этом нужный файл будет создан автоматически и помещен в /root/xorg.conf.new. Проверяем работоспособность X-сервера с новым файлом: X ‑config/root/xorg.conf.new. Если появилось окно с крестиком мышки, копируем файл на место и вводим команду startx. В большинстве своем X –configure хорошо справляется со своими обязанностями, но если не повезло, придется создавать файл вручную. Для чего в комплекте любого дистрибутива имеются утилиты xorgconfig (придется отвечать на вопросы) и xorgcfg (в псевдографике). Последнюю необходимо запускать с параметром textmode:

$ sudo xorgcfg — textmode

По непонятным причинам GRUB не хочет считать вставленное в USB устройство за диск, и последующая переустановка командой grub-install —recheck /dev/sda может ничего не дать. Хотя бывает, что повторная установка из меню GRUB позволяет добиться в некоторых случаях нужного результата:

$ sudo grub

grub> find /boot/grub/stage1

 (hd0,8)

 (hd2,0)

Диск hd2,0 соответствует флэшке. Делаем его корневым:

grub> root (hd2,0)

Filesystem is type fat, partition type 0xb

Устанавливаем загрузчик:

grub> setup (hd2)

 setup (hd2)

 Checking if «/boot/grub/stage1» exists… yes

 Checking if «/boot/grub/stage2» exists… yes

 Checking if «/boot/grub/fat_stage1_5» exists… yes

 Running «embed /boot/grub/fat_stage1_5 (hd2)»… 17 sectors are embedded.

Succeeded

 Running «install /boot/grub/stage1 (hd2) (hd2)1+17 p (hd2,0)/boot/grub/stage2/boot/grub/menu.lst»… succeeded

Done.

grub> quit

Работает, но не всегда. Вероятно, из-за этого во многих дистрибутивах для загрузки с флэшки используется не GRUB, а syslinux (syslinux.zytor.com) или ms-sys (ms-sys.sourceforge.net).

Со следующей проблемой пока не сталкивался, но много читал на тематических сайтах.

Для USB-устройств характерна так называемая power session: когда устройство долгое время не используется, оно должно поддерживать небольшой ток (около 1–5 мA) для того, чтобы все остальные устройства могли контролировать его доступность. Если устройство прервет power session, то для остальных, согласно спецификации, это является сигналом о том, что устройство отключено. Если это клавиатура, ничего страшного в этом нет, а вот если это USB-носитель, на котором расположена корневая система, отключение ее означает конец работе. Аналогичная проблема может возникнуть, когда BIOS не может разбудить USB после выхода системы из спячки.

Linux полностью поддерживает эту спецификацию, поэтому могут быть проблемы. В ядрах начиная с версии 2.6.23 этот вопрос уже решен, для более ранних версий доступен патч. Он просто сообщает ядру о том, что устройство работает как и прежде, даже если с ним потеряна power session.

И еще одна возможная проблема: отсутствие необходимых модулей в initrd, который стартует на самом раннем этапе загрузки. Разработчики просто не предусмотрели возможности запуска своего дистрибутива с USB-устройства. В большинстве своем в initrd есть все необходимое для загрузки с жесткого диска или привода, и не более того. В этом случае initrd придется пересобрать самостоятельно, включив все необходимые модули: usbcore, usb-storage, ehci-hcd, scsi_mod, sd_mod.

И это далеко не все нюансы. Поэтому лучшим вариантом является использование дистрибутива в том виде, в каком он размещен на LiveCD.

 

Размечаем флэшку

USB-флeшка после определения ее ядром активируется как и SATA/SCSI-диск, то есть /dev/sdX, где Х — это цифра. Чтобы уточнить конкретный номер, используем команду (см. рис.)

$ sudo fdisk –l | grep /dev/sd

В результате получим несколько строк вида:Disk /dev/sda: 4127 MB, 4127194624 bytes

Та, которая соответствует размеру флэшки, и является искомым устройством.

Для установки флэшка должна быть отформатирована под файловую систему FAT16 или FAT32. Обычно это так и есть. Еще один раздел небольшого размера (две сотни мегабайт хватит) нужно отформатировать под ext2. Традиционный Partition Magic здесь не поможет, но при помощи fdisk cделать это просто. Размонтируем:

$ sudo umount /dev/sda1

Вызываем fdisk:

$ sudo fdisk /dev/sda

И удаляем ненужные разделы, если их ранее было несколько. Для чего нажимаем клавишу d и при следующем запросе вводим номер раздела, который нужно удалить. Просмотреть список разделов можно, нажав клавишу p. Чтобы создать новый раздел, следует нажать клавишу n, нажав p, выбираем primary partition и вводим номер — 1. После этого будут заданы вопросы о первом и последнем цилиндре диска — вводим значение, например, +3750М. Аналогично создаем и второй раздел. Когда все готово, клавишей w записываем изменения на диск. Разметка закончена, создаем файловую систему:

$ sudo mkfs.msdos -n ubuntu710 /dev/sda1

$ sudo mkfs.ext2 -b 4096 -L casper-rw /dev/sda2

Диск готов к установке дистрибутива. Не бойтесь испортить, в самом тяжелом случае всегда можно удалить MBR:

$ sudo dd if=/dev/zero of=/dev/sda bs=512 count=1

После всего этого форматируется с помощью стандартных средств Windows.

 

Ставим

Теперь копируем файлы с CD-ROM на первый раздел:

$ cd /media/cdrom

$ sudo mount /dev/sda1 /media/disk

$ cp -rf casper disctree dists install pics pool preseed .disk isolinux/* md5sum.txt README.diskdefines ubuntu.ico casper/vmlinuz casper/initrd.gz /media/disk

Делаем вид, что не замечаем сообщения вроде «cannot create symbolic link», так как знаем: на файловой системе FAT нельзя создать символические ссылки. Ставим загрузчик:

$ sudo apt-get install syslinux mtools

$ sudo syslinux -sf /dev/sda1

Чтобы самостоятельно не создавать файл загрузчика syslinux.cfg, воспользуемся готовым:

$ wget pendrivelinux.com/downloads/U710fix.zip

$ unzip -o -d /media/disk/U710fix.zip

Вот, собственно, и все.

 

Linux forever!

Сергей Яремчук

Robo User
Web-droid editor

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *