Автор Тема: Загрузочная флешка Runtu 3 с возможностью сохранять изменения(old_forum)  (Прочитано 34925 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн Timkaz

  • Новичок
  • **
  • Автор темы
  • Сообщений: 16

Флэшка с рабочей системой, несомненно, вещь не только полезная, но порой даже и нужная.
Наша система будет основываться на grub4dos, замечательной squashfs, подправленном initrd и собственно, специально разбитой флэшке (все инструкции подходят также и для usb-hdd, и для обычных hdd).

После создания системы на флэшке все изменения будут сохраняться или же будет загружаться "чистая" live-система в зависимости от параметров загрузчика.

1. Создание filesystem.squashfs
Те, кого вполне устраивает конфигурация Runtu, которая загружается c liveCD, могут пропустить этот пункт.

Тем, кто хочет немного пересобрать сборку, например поменять браузер, добавить что-нибудь нужное и удалить что-нибудь ненужное без координальных изменений в структуре системы, должна помочь вот эта статья: http://forum.runtu.org/index.php/topic,611.0.html

А те, кто хочет свою настроенную систему Runtu (или любую другую, но возможны нюансы) заставить работать как LiveCD - доустанавливаем необходимый на флэхе софт и читаем дальше
(Вырезки из статьи "Оригинал: Booting Linux from Flash;Автор: Imran Nazar;Дата: 10 октября 2007;Перевод: Александр Тарасов aka oioki;Дата перевода: 12 октября 2007")

Цитировать (выделенное)
Шаг 1: Копируем существующую файловую систему
Первый шаг - создать образ диска, который в итоге должен стать корневой файловой системой. Наверняка вы захотите создать образ с текущей запущенной системы. Нельзя сжимать / как есть, так как в данный момент могут быть примонтированы другие файловые системы. Поэтому нужно убрать эти монтирования. Простой способ - перемонтировать / где-нибудь в другом месте:

Бинд-монтирование / для устранения точек монтирования
# mkdir /root/bindmount
# mount -o bind / /root/bindmount

Новая бинд-монтированная корневая система станет чистым представлением того, что располагается на диске, без лишних на данный момент смонтированных файловых систем: это означает, что не должно быть файлов в каталогах /proc или /sys, и небольшое число файлов в /dev. Если все же остались какие-то файлы в этих каталогах, вы можете смело их удалить:

Очистка каталогов монтирования
# cd /root/bindmount
# rm -rf proc/* dev/* sys/*
# cp -a /dev/console /dev/null /dev/initctl dev

Не забывайте, в /root/bindmount мы все еще работаем с самой корневой файловой системой; нужно сделать копию, с которой будем производить остальные действия:

Копируем bindmount
# mkdir /root/fscopy
# cp -av /root/bindmount/* /root/fscopy

После завершения копирования можно спокойно удалять все файлы в каталоге /root/fscopy/tmp и /root/fscopy/var/tmp

Шаг 2. Создание образа копии файловой системы

Есть два достоинства SquashFS. Во-первых, его высокий коэффициент сжатия; файловая система в 2Гб на моем медиа-сервере сжалась до 500 Мб, что идеально для Flash-носителей малого объема. Во-вторых, чтение производится блоками (по умолчанию размер блока 64 Кб) и ядро кэширует лишь небольшое число блоков в данный момент; как результат, SquashFS занимает малый объем памяти.

Создание образа - простой вызов программы сжатия:

Making the SquashFS image
# cd /root/fscopy
# mksquashfs * ../filesystem.squash

Всё, теперь у нас есть файл-образ корневой системы /root/fscopy/filesystem.squash
Что бы проверить, всё ли прошло успешно можно примонтировать его куда-нибудь:

# mkdir squash-mnt
# mount -t squashfs -o loop /root/fscopy/filesystem.squash squash-mnt

Зашли, полюбовались, отмонтировали :

#umount /root/fscopy/filesystem.squash
2. Создаём или скачиваем файл для сохранения изменений
Чтобы работал persistent mode система должна куда-то записывать изменения. Для используется доролнительный раздел на флэхе или файл, в котором находится файловая система. Инитрд ищет этот файл/раздел по имени/метке тома.
Если файл/раздел назвать casper-rw, то на него будут сохраняться все системные изменения, а точнее изменения корневой фс.
Если файл/раздел назвать home-rw, то на него будут сохраняться только файлы домашних каталогов.
Если файл/раздел назвать home-sn или casper-sn, то  это для снепшотов. потом может добавлю в статью.
Если файл/раздел назвать как-либо иначе, то на него никакие изменения сохраняться в него не бедут.
Этот файл/раздел должен быть отформатирован в такую фс, которая подходит для корня, а конкретно ext2, ext3, raiserfs. Остановим свой выбор на ext3.

Скачиваем готовый файл на 256Мб, 1Гб, 2Гб, 3Гб или 4Гб:  (Фалы почти пустые и заархивированные, поэтому весят до 5Mb)
256Mb-casper-rw.7z
1Gb-casper-rw.7z
2GB-casper-rw.zip
3GB-casper-rw.zip
4GB-casper-rw.zip

или создаём сами:    http://www.pendrivelinux.com/how-to-create-a-larger-casper-rw-loop-file/
или создаём сами(копия с pendrivelinux):

# dd if=/dev/zero of=casper-rw bs=1M count=1024    //(где count - это в нашем случае количество мегабайт, которые мы отводим под изменения )
# mkfs.ext3 -F casper-rw  
                                   

Примечание: файл casper-rw должен находиться в корне первого раздела, который должен быть форматирован в доступную ядру ФС (Ext, raiser, fat, НЕ NTFS).

3. Разбиение флэшки
Можно провести разбиение по одной из схем:
1) Перепрошить контролер флешки разбив на два раздела фиксированного раздела утилитой от контролера при помощи сайта http://flashboot.ru/
2) Перевести флэшку в режим "usb-hdd".
Рассмотрим подробнее 2):
Для этого понадобится маленькая утилитка под Win32 от "lexar" (может работать не на всех моделях флэшек в силу марального устарения контроллеров последних, очень редко срабатывает для карт памяти)
Основное приимущество hdd режима - это возможность корректно работать со ВСЕМИ разделами на флэшке. Маленький непринципиальный недостаток - необходимость закрыть все окна MS Explorer'a перед безопаснім отключением(сам не закрывает как на обычных флешках)
Можно оставить и в режиме обычной флэшки, но как известно, под виндой будет виден только первый раздел.
Условно назовём эти режимы : режым flash и режим hdd.
Запускаем BootIt.exe, выбираем букву флэш-диска, нажимаем на кнопку "Flip Removable Bit", "Ок", перевтыкаем флэшку. Теперь если она отобразилась в группе с винтами, то всё действительно прошло успешно и её можно спакойненько разбивать даже из-под виндов, если же она оказалась в группе "Устройства со съёмными носителями", то либо утилита сработает со второго раза, либо флэшка не поддерживает такой режим. Вот утилитка BootIt_1.07.1_rus.rar и тут с небольшим описанием и отчётах других пользователейhttp://rutracker.org/forum/viewtopic.php?t=2131279

Далее разбиваем любой известной и предназначенной для этого утилитой  флэху на 2 раздела(см. соотв. маны по Gparted, fdisc, если перевели в режи hdd, то можно пользоваться виндовыми средствами и акронисом. Вобщем, что душе угодно)

1-й - раздел фат32 раздел для загрузчика и файлофранилище (в режиме флэш - это будет единственный доступный раздел из-под виндовс)

2-й - раздел любой доступной ядру рунту фс, как вариант - fat32. Этот раздел будет монтироваться в режиме только для чтения в каталог /cdrom. В этом разделе будем хранить образ системы filesystem.squashfs, можно так же сюда поместить initrd, ядро и ещё что-нибудь. Размер раздела = размер filesystem.squashfs + vmlinuz + initrd.gz) ещё чуть-чуть. Места может понадобиться больше, если потом захочется другой какой-нибудь образ squashfs вместо этого запхнуть.

 При использовании маленьких флэшек этот раздел можно не делать, и все файлы залить на первый раздел, но тогда получи обычную live-cd флэшку и будет недоступно сохранение изменений без плясок с бубном над ядром и инитрд для перемонтирования почти всего.
 При использовании больших флэшек можно добавить ещё один раздел для ntfs.

4. Установка
Ставим любым известным способм на флэшку граб (или другой загрузчик, который вам бошльше нравится)
Если разбивали на 2 раздела, то в конфиге меню граба прописываем:
Код:
title Runtu persistent # в режиме сохранения изменений
kernel (hd0,1)/casper/vmlinuz boot=casper persistent locale=ru_RU initrd=(hd0,1)/casper/initrd.gz #vga=0x31b - устанавливает разрешение в tty 1280x1024
initrd (hd0,1)/casper/initrd.gz

title Runtu live # в режиме LiveCD
kernel (hd0,1)/casper/vmlinuz boot=casper locale=ru_RU initrd=(hd0,1)/casper/initrd.gz
initrd (hd0,1)/casper/initrd.gz

title Runtu in safe graphics mode # понятно в каком режиме
kernel (hd0,1)/casper/vmlinuz boot=casper xforcevesa locale=ru_RU initrd=(hd0,1)/casper/initrd.gz
initrd (hd0,1)/casper/initrd.gz

## P.S.: при использовании одного раздела поудалять везде "(hd0,1)"
## P.P.S.: "Соли и перца - по вкусу"   ;D


А теперь то, чего не хватало обычной рунте для загрузки с каспера(squashfs) в режиме сохранения - это подправленный рамдиск initrd (сам ковырял пару лет назад). Скачать для Runtu3.0 initrd.gz и для Office_Pro  initrd.gz

Теперь наша флешка должна выглядеть примерно так:
1-й раздел содержит :  grldr, menu.list, casper-rw(файл сохранений) и что угодно на ваше усмотрение
2-й раздел должен содежать папку casper, в которой: filesystem.squashfs, initrd.gz, vmlinuz (vmlinuz берём с диска)
(опционально)3-й раздел пока пустой и называется casper-rw - вместо файла casper-rw на первом разделе.

Инструкции по разбиению дисков на разделы есть в интернете, там же есть инструкция по установке Grub4Dos

-------------------------

Как править intitrd.gz:

1. Распаковка(копируем куда-нибудь в пустую папку, и там выполняем)
Код:
# gunzip initrd.gz | cpio -i
2. Правка(правим скрипты, добавляем-удаляем модули)
3. Запаковка(перед запаковкой удаляем initrd)
Код:
# rm initrd
#  find . | cpio -o -H newc | gzip -9 > initrd.gz


-------------------------
Известные баги:
При перезагрузки из консоли через reboot зависает   - не помню я такого, но почему-то оно написано было...
-------------------------

Примечание: Хранение на casper-rw и других - штука не совсем надёжная=> небольшая рекомендация - держать копию casper-rw с необходимыми подстройками (например - настройками интернета)
« Последнее редактирование: Февраль 21, 2011, 15:16:27 от HsH »

Оффлайн Болдырев Николай

  • Активист
  • ****
  • Сообщений: 286
А теперь то, чего не хватало обычной рунте для загрузки с каспера(squashfs) в режиме сохранения - это подправленный рамдиск initrd (сам ковырял пару лет назад). Скачать для Runtu3.0 initrd.gz и для Office_Pro  initrd.gz
А для последней сборки Сергея Runtu Lite initrd.gz не делали?
PS: Да, в сборке Lite initrd.lz
« Последнее редактирование: Февраль 09, 2011, 12:48:19 от Болдырев Николай »
С уважением, Болдырев Николай.

Оффлайн Timkaz

  • Новичок
  • **
  • Автор темы
  • Сообщений: 16
Для последних сборок на основе 9.04 и выше исправлено разработчиками убунты

Оффлайн Болдырев Николай

  • Активист
  • ****
  • Сообщений: 286
исправлено разработчиками убунты
Т.е. просто копируешь файл с сохраненки и все будет работать?
С уважением, Болдырев Николай.

Оффлайн Timkaz

  • Новичок
  • **
  • Автор темы
  • Сообщений: 16
Обязательно ещё добавить в параметры persistent, выделил цветом в первом посте

Оффлайн Болдырев Николай

  • Активист
  • ****
  • Сообщений: 286
Обязательно ещё добавить в параметры persistent
Благодарю, попробовал без этого не сохраняется. А с этим попробую отпишусь.
С уважением, Болдырев Николай.

Оффлайн vita

  • Местный
  • *****
  • Сообщений: 974
  • Fiat lux! (Да будет Свет!)
    • Форум проекта Matuntu
Я недавно решила начать освоение линукса и заранее прошу быть ко мне снисходительнее. Мне интересно, чем отличаются расширения файлов .gz и .lz. Сам размер рамдиска увеличивается в результате работы с загрузочной флешкой и сохранением итогов в этом файле? Или я что-то не так понимаю? Параметры рамдиска могут изменяться пользователем или это происходит автоматически?  ???
Per aspera ad astra! (Через тернии к звездам!)

Оффлайн butjapka

  • Местный
  • *****
  • Сообщений: 1151
  • Компьютер думает так, как думает его хозяин.
Я недавно решила начать освоение линукса и заранее прошу быть ко мне снисходительнее. Мне интересно, чем отличаются расширения файлов .gz и .lz.
Тем что они архивируются разными архиваторами, а архиваторы имеют разные принципы работы с файлами, поподробнее можно посмотреть про Gzip и Lzip
« Последнее редактирование: Февраль 15, 2011, 18:31:27 от butjapka »

Оффлайн Timkaz

  • Новичок
  • **
  • Автор темы
  • Сообщений: 16
Я недавно решила начать освоение линукса и заранее прошу быть ко мне снисходительнее. Мне интересно, чем отличаются расширения файлов .gz и .lz. Сам размер рамдиска увеличивается в результате работы с загрузочной флешкой и сохранением итогов в этом файле? Или я что-то не так понимаю? Параметры рамдиска могут изменяться пользователем или это происходит автоматически?  ???

Рамдиск не меняется, сохранение происходит на раздел casper-rw (или в файл casper-rw), при этом их размер тоже не меняется, меняется количество занятого в них места

Оффлайн vita

  • Местный
  • *****
  • Сообщений: 974
  • Fiat lux! (Да будет Свет!)
    • Форум проекта Matuntu
Благодарю за разъяснение. В связи с этим появился вопрос: можно ли изменить размер раздела casper, чтобы в нём сохранялось больше информации? Если да, то каким образом ???
Per aspera ad astra! (Через тернии к звездам!)

Оффлайн Timkaz

  • Новичок
  • **
  • Автор темы
  • Сообщений: 16
Нужно создать новый файл каспер-рв нужного размера, примонтировать новый и старый, перелить данные из одной точки монтирования в другую

Оффлайн HsH

  • Administrator
  • *****
  • Сообщений: 3474

     Перенёс тему в "Архив", поскольку создание загрузочных FLASH в текущих версиях Ubuntu (после 9.04) не требуют ручных манипуляций с образом корневой ФС  и initrd.

    Данный функционал выполняется штатными средствами Ubuntu (usb-creator-gtk) либо сторонними программами типа UNetbootin.