The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Создание live USB-Flash (USB-HDD) (flash usb linux boot)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: flash, usb, linux, boot,  (найти похожие документы)
From: Можаев Григорий <zcrendel / altlinux.ru> Newsgroups: email Date: Sun, 17 Sep 2006 17:02:14 +0000 (UTC) Subject: Создание live USB-Flash (USB-HDD) дата написания: 2006/09/17 целевая система: ALTLinux Compact 3.0 + Sisyphus (20060823) целевое ядро: 2.6.16-std26-up-alt9 Задача: Получение работающей ОС Linux с внешнего носителя (Flash/HDD) подключенного к USB-порту. преимущества изложенного подхода: 1. Возможность использовать на внешнем носителе уже установленную и настроенную систему 2. Использование стандартных ядер (т.е. без самостоятельной пересборки) Во-первых загрузка с usb-носителя должна поддерживатся биосом Хоста, ресурсами которого мы и будем пользоваться. Если с этим все в порядке, то можно смело идти дальше. Определим этапы получения работающей с usb-носителя Linux-системы, это: 1. Установка системы 1.1 Разметка носителя на разделы. 1.2 Форматирование разделов. 1.3 Установка ОС на носитель. 2. Правка загрузочного образа (файл /boot/*.img) 3. Установка загрузчика. (lilo, grub) Итак рассмотрим детально эти этапы на примере создания live-flash (с usb-hdd ситуация аналогична): 1. Установка системы 1.1 Разметка носителя на разделы Для разбиение на партиции можно использовать утилиту cfdisk. Пример разбиения 512 метровой флешки: Disk /dev/sda: 512 MB, 512753664 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 1793 458992 83 Linux /dev/sda2 1794 1956 41728 82 Linux swap / Solaris 1.2 Форматирование разделов. Раздел на который будет установлен Linux ( и куда будет монтироваться / ) необходимо форматировать с установкой метки (label), например так: mkfs.ext3 -L altboot /dev/sda1 mkswap -L altswap /dev/sda2 (подробней см. man tune2fs про метки). 1.3 Установка ОС на носитель Самый простой способ - скопировать заранее установленную и настроенную ОС Linux (при небольшом размере носителя её можно урезать, убрав лишние пакеты). Пусть в /mnt/hd/ подмонтирован раздел с linux (не равный текущему /), тогда: mkdir -p /mnt/flash mount /dev/sda1 /mnt/flash cp -far /mnt/hd/* /mnt/flash/ 2. Правка загрузочного образа необходима, для того чтобы система могла обнаружить и подмонтировать наше usb устройство. Итак берем текущий img, в моем случае это: /mnt/flash/boot/initrd-2.6.16-std26-up-alt9.img в некоторых системах это gzip сжатый cpio архив, в ALT Linux это gzip сжатая romfs файловая система. Итак, получим доступ к текущему initrd образу: mkdir -p /tmp/initrd/init cp /mnt/flash/boot/initrd-2.6.16-std26-up-alt9.img /tmp/initrd/initrd-2.6.16-std26-up-alt9.gz cd /tmp/initrd gzip -d initrd-2.6.16-std26-up-alt9.gz mkdir /mnt/init mount -o loop -t romfs /tmp/initrd/initrd-2.6.16-std26-up-alt9 /mnt/init cp -far /mnt/init/* /tmp/initrd/init/ umount /mnt/init rm -fr /mnt/init далее необходимо подправить init скрипт linuxrc 1. Включить модули работы с usb и scsi, обратите внимание на порядок включения модулей 2. Добавить программу sleep, для приостанова системы на момент сканирования usb-шины и определения носителя, после загрузки ядра и до монтирования. до внесения изменений: #!/bin/sh /bin/insmod -f /lib/modules/2.6.16-std26-up-alt9/kernel/drivers/ide/ide-core.ko /bin/insmod -f /lib/modules/2.6.16-std26-up-alt9/kernel/drivers/ide/pci/generic.ko /bin/insmod -f /lib/modules/2.6.16-std26-up-alt9/kernel/drivers/ide/pci/amd74xx.ko /bin/insmod -f /lib/modules/2.6.16-std26-up-alt9/kernel/drivers/ide/ide-generic.ko /bin/insmod -f /lib/modules/2.6.16-std26-up-alt9/kernel/drivers/ide/ide-disk.ko /bin/insmod -f /lib/modules/2.6.16-std26-up-alt9/kernel/fs/mbcache.ko /bin/insmod -f /lib/modules/2.6.16-std26-up-alt9/kernel/fs/jbd/jbd.ko /bin/insmod -f /lib/modules/2.6.16-std26-up-alt9/kernel/fs/ext3/ext3.ko EncodeDev() ... после внесения изменений: #!/bin/sh /bin/insmod -f /lib/modules/2.6.16-std26-up-alt9/kernel/drivers/usb/core/usbcore.ko # usb module /bin/insmod -f /lib/modules/2.6.16-std26-up-alt9/kernel/drivers/usb/host/ehci-hcd.ko # usb module /bin/insmod -f /lib/modules/2.6.16-std26-up-alt9/kernel/drivers/ide/ide-core.ko # нужен для usb-storage /bin/insmod -f /lib/modules/2.6.16-std26-up-alt9/kernel/drivers/usb/storage/libusual.ko # usb module /bin/insmod -f /lib/modules/2.6.16-std26-up-alt9/kernel/drivers/scsi/scsi_mod.ko # scsi module /bin/insmod -f /lib/modules/2.6.16-std26-up-alt9/kernel/drivers/scsi/sd_mod.ko # scsi module /bin/insmod -f /lib/modules/2.6.16-std26-up-alt9/kernel/drivers/scsi/libata.ko # scsi module /bin/insmod -f /lib/modules/2.6.16-std26-up-alt9/kernel/drivers/scsi/sata_sil.ko # scsi module # usb-storage должен подгружаться после scsi и usb модулей /bin/insmod -f /lib/modules/2.6.16-std26-up-alt9/kernel/drivers/usb/storage/usb-storage.ko # usb module /bin/insmod -f /lib/modules/2.6.16-std26-up-alt9/kernel/fs/mbcache.ko /bin/insmod -f /lib/modules/2.6.16-std26-up-alt9/kernel/fs/jbd/jbd.ko /bin/insmod -f /lib/modules/2.6.16-std26-up-alt9/kernel/fs/ext3/ext3.ko /bin/sleep 10 # задерка для определения носителя (10 секунд достаточно) EncodeDev() ... далее копируем в наш initrd образ, необходимые модули: cp /lib/modules/2.6.16-std26-up-alt9/kernel/drivers/usb/core/usbcore.ko \ /tmp/initrd/init/lib/modules/2.6.16-std26-up-alt9/kernel/drivers/usb/core/usbcore.ko cp /lib/modules/2.6.16-std26-up-alt9/kernel/drivers/usb/host/ehci-hcd.ko \ /tmp/initrd/init/lib/modules/2.6.16-std26-up-alt9/kernel/drivers/usb/host/ehci-hcd.ko cp /lib/modules/2.6.16-std26-up-alt9/kernel/drivers/usb/storage/libusual.ko \ /tmp/initrd/init/lib/modules/2.6.16-std26-up-alt9/kernel/drivers/usb/storage/libusual.ko cp /lib/modules/2.6.16-std26-up-alt9/kernel/drivers/usb/storage/usb-storage.ko \ /tmp/initrd/init/lib/modules/2.6.16-std26-up-alt9/kernel/drivers/usb/storage/usb-storage.ko cp /lib/modules/2.6.16-std26-up-alt9/kernel/drivers/scsi/scsi_mod.ko \ /tmp/initrd/init/lib/modules/2.6.16-std26-up-alt9/kernel/drivers/scsi/scsi_mod.ko cp /lib/modules/2.6.16-std26-up-alt9/kernel/drivers/scsi/sd_mod.ko \ /tmp/initrd/init/lib/modules/2.6.16-std26-up-alt9/kernel/drivers/scsi/sd_mod.ko cp /lib/modules/2.6.16-std26-up-alt9/kernel/drivers/scsi/libata.ko \ /tmp/initrd/init/lib/modules/2.6.16-std26-up-alt9/kernel/drivers/scsi/libata.ko cp /lib/modules/2.6.16-std26-up-alt9/kernel/drivers/scsi/sata_sil.ko \ /tmp/initrd/init/lib/modules/2.6.16-std26-up-alt9/kernel/drivers/scsi/sata_sil.ko добавляем программу sleep + необходимые для её работы библиотеки: ldd /bin/sleep linux-gate.so.1 => (0xffffe000) libc.so.6 => /lib/libc.so.6 (0x40019000) /lib/ld-linux.so.2 (0x80000000) cp -L /lib/ld-linux.so.2 /tmp/initrd/init/lib/ cp -L /lib/libc.so.6 /tmp/initrd/init/lib/ собираем образ в romfs: cd /tmp/initrd/ genromfs -d ./init -f initrd-2.6.16-std26-up-alt9 gzip -9 ./initrd-2.6.16-std26-up-alt9 mv /tmp/initrd/initrd-2.6.16-std26-up-alt9.gz /mnt/flash/boot/initrd-2.6.16-std26-up-alt9.img 3. Итак initrd образ готов, осталось установить загрузчик(пусть это будет lilo) и подправить fstab. Делаем chroot на root системы, стоящей на флешке: chroot /mnt/flash правим lilo.conf: boot=/dev/sda lba32 message=/boot/splash/message vga=normal prompt timeout=150 image=/boot/vmlinuz-2.6.16-std26-up-alt9 initrd=/boot/initrd-2.6.16-std26-up-alt9.img label=2616-std26-up-9 root=/dev/sda1 read-only optional теперь необходимо подправить fstab: LABEL=altboot / ext3 defaults 1 1 LABEL=altswap swap swap defaults 0 0 и установить загрузчик: lilo # устанавливаем загрузчик в MBR носителя exit # выходим из chroot окружения umount /mnt/flash rm -fr /tmp/initrd # удаляем временные rm -fr /mnt/flash # файлы и папки ВСЕ! Теперь вы можете загрузиться с флеш =), естественно выставив в биосе эту опцию. Статья не претендует на полноту изложения. Материал сжат, многие очевидные вещи не обьясняются. Исправления и дополнения привествуются. По всем вопросам/замечаниям/пожеланиям пишите на емыл указанный вначале статьи.

<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, K.D.E. (?), 00:05, 18/09/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А separator????: http://wiki.sisyphus.ru/Separator?v=sk

     
     
  • 2.2, Michael Shigorin (?), 00:30, 18/09/2006 [^] [^^] [^^^] [ответить]  
  • +/
    К слову: на пакетной базе 3.0 separator работал, а вот позже подразломался.  Пока Rider добирался чинить, mouse@ сделал из него spt, который сейчас дорабатывает lakostis.

    http://sisyphus.ru/srpm/spt
    http://lakostis.unsafe.ru

     
  • 2.12, Алекс (??), 09:07, 20/09/2006 [^] [^^] [^^^] [ответить]  
  • +/
    Насчет свопа - этого лучше все-таки не делать. У флешки есть определенное количество циклов записи-считывания (что-то около 10000), поэтому ее может постигнуть преждевременная кончина. У современных компов достаточно оперативы чтобы содержимое 512 Мб флешки полностью переварить.
    По этому поводу есть анекдот: бета-версия МД Висты при обнаружении флешки спрашивает, дескать, что бум делать: открыть проводник, запустить проигрыватель или ускорить компьютер (разместив на нем свап-файл!). Пользователи, выбравшие последний вариант были оо-чень удивлены, когда флешка через день-другой сдыхала.
     

  • 1.3, Dmitry Saychenko (?), 11:00, 18/09/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Своп на флешке. Их у Вас гора ?
    ИМХО, своп - лишняя деталь. LiveCD без свопа обходятся.
     
     
  • 2.4, Можаев Григорий (?), 18:36, 18/09/2006 [^] [^^] [^^^] [ответить]  
  • +/
    >Своп на флешке. Их у Вас гора ?
    >ИМХО, своп - лишняя деталь. LiveCD без свопа обходятся.

    это кому как, ведь usb-флеш использует ресурсы хоста... если вам срочно что-то понадобится а на доступном хосте (например в командировке, далеко от своего любимого компа) будет мало оперативной памяти - будет полная жора... при свопе же все будет рапрекрасно работать... так же, обратите внимание, что рассказ идет о получении не только live-flash, но и live-hdd, а с hdd вообще со свопом все прекрасно...
    и почему гора ? ведсвоп на флешке это страховочная вещ, на случай непредвиденной нехватки памяти, ведь если оперативы хватает, до свопа дело и не дойдет... и будет жить ваша флеша во веки веков... =)

    всем спасибо за посты...

     
     
  • 3.6, Lagman (?), 15:40, 19/09/2006 [^] [^^] [^^^] [ответить]  
  • +/
    Флешки имеют ограниченное кол-во циклов записи, после этого никто не гарантирует корректную работу (типа будут появляться бэдблоки). На USB-Flash надо использовать тот же принцип что и для Live-CD (Кноппикс), без свопа и рекомендовать определенное кол-во памяти. Для примера, как USB-Flash так Live-CD, очень хороший и нетребовательный дистрибутив DSL (www.damnsmalllinux.org).
     

  • 1.5, Led (?), 15:12, 19/09/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вместо того, чтобы пересобрать busybox с включенным usleep - пихать sleep с glibc в initrd?
     
     
  • 2.7, Led (?), 19:22, 19/09/2006 [^] [^^] [^^^] [ответить]  
  • +/
    кстати, ash из тамошнего busybox умеет и usleep, и sleep
     

  • 1.8, leha_k (?), 19:47, 19/09/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А для ALM 2.4 из коробки что-нибудь подобное можно изобразить? Или, хотябы, live-cd?
     
     
  • 2.9, Michael Shigorin (?), 19:55, 19/09/2006 [^] [^^] [^^^] [ответить]  
  • +/
    >А для ALM 2.4 из коробки что-нибудь подобное можно изобразить? Или, хотябы,
    >live-cd?
    Там есть sandman, в котором можно печь livecd самому.  Пошаговая инструкция доступна здесь: http://old.linux.kiev.ua/~mike/docs/livecd/

    Вот с live usb не баловался -- возможно, скрестить оба варианта выйдет тривиально.

     
     
  • 3.10, leha_k (?), 21:50, 19/09/2006 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо!
     
  • 3.11, Any_Key (?), 00:27, 20/09/2006 [^] [^^] [^^^] [ответить]  
  • +/
    Так и есть. Пару дней назад сделал так себе LiveUSB на базе Feather linux .
    Там урезанный и изуродованный Knoppix кладётся в корень, затем флешка отмонтируется и утюжится утилитой isolinux которая превращает её в загружаемую.
    И всё, никаких партишнов, свопа, и ext2fs и.т.д.
    просто фат и в нём файлы
     

  • 1.14, xsel (?), 07:28, 06/08/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А по проше и по-русски написать можно? Зачем столько всякой гадости для этого писать?
    Нет кокого ни будь автоматизированного способа?
     
  • 1.15, Радик (?), 22:31, 15/12/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    как создать загрузочную  USB-Flash, с Windows
     
     
  • 2.16, Michael Shigorin (ok), 02:46, 16/12/2007 [^] [^^] [^^^] [ответить]  
  • +/
    >как создать загрузочную  USB-Flash, с Windows

    Не понял, при чём здесь OpenNet, но вообще кто-то умудрился сделать LiveCD с Windows.

    Если "на Windows" -- то есть статья на украинском здесь: http://www.linux.kiev.ua/ua/news/comments/view/2847/
    (автопереводчик есть здесь: http://pere.org.ua/cgi-bin/pere.cgi?lng=ru-ru).

     

  • 1.17, Deniss (ok), 09:40, 17/12/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Могу порекомендовать использовать slax - посвежее будет здесь описание установки http://sysadmin-shpargalka.blogspot.com/2008/07/slax-usb.html супер просто.
     
  • 1.19, sabnext (?), 16:42, 31/03/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Я сделал себе мультизагрузочную флэшку (32 Гб OCZ Rally 2):

    Mini-XP от Hiren's Boot CD[/li]
    Knoppix[/li]
    DOS (ещё приходится использовать)[/li]
    Lex Windows XP[/li]

    Куча остального пространства используется просто для данных (формат флэшки FAT32 без разделов).
    Сделал всё по описанию Как создать мультизагрузочную флэшку http://up2sage.blogspot.com#MultyBootUSB.
    Все работает!

     
  • 1.20, Журухин Алексей Николаевич (?), 23:36, 07/07/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Пытался разбить флешу утилитой fdisk , используя KNOPPIX_V5.0.1CD-2006-06-EN . Удалось получить только первичный раздел, вся остальная флешка - не видима для системы. Попытка ее отфарматировать приводит к ошибкам (У первичного раздела). Вторичные разделы после пользования указанной утилитой не видимы. Уничтожить мои косяки удалось только в MS-DOC, куда меня и отправляла KNOPPIX_V5.0.1CD-2006-06-EN . Что делать?
     
  • 1.22, unixexp (ok), 16:07, 10/05/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ^ Пусть в /mnt/hd/ подмонтирован раздел с linux (не ^ равный текущему /)

    А если равен, тогда, необходимо выполнять копирование, так, чтобы не зацепить /mnt в который у нас примонтирована флэшка вот так:

    # cp -far 'find . -maxdepth 1 ! -name 'mnt' -type d' /mnt/flash/

     
  • 1.23, unixexp (ok), 16:18, 10/05/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Да, чуть не забыл, не надо копировать: /proc, /sys, /media (если есть), и /lost+found
     
     
  • 2.24, derben (?), 07:18, 12/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Да, чуть не забыл, не надо копировать: /proc, /sys, /media (если есть),
    > и /lost+found

    К слову, появился дистр на базе МандриваЛиннукс, которому принципиально неважно где находится: на флешке, на диске (ext, fat, ntfs, и т.д.), даже в сети (nfs, ftp, http, samba, afs, coda и т.д.). Называется MagOS, смотрите на magos-linux(dot)ru, как и что копировать, как прописывать установщик (grab и burg). В принципе, там используются переделанные скрипты от слаки, так что по такой технологии, при некотором навыке, можно любой дистр линукса упаковать куда угодно.


     

  • 1.26, Michael Shigorin (ok), 19:26, 31/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    2 ura re #25:
    > Надёжнее будет накатить ISO на флешку, но устанавливать/удалять не получиться.

    В случае с альтом вполне себе получится: http://altlinux.org/remount_rw

    Реализация: http://git.altlinux.org/gears/m/make-initrd-propagator.git?p=make-initrd-prop

    PS: а, это была мягкая реклама очередного "фрисофтового" ресурса...

     

    игнорирование участников | лог модерирования

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2021 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру