- Ubuntu на USB-накопителе
- Создание работающей установки Ubuntu
- Подготовка USB-накопителя
- Создание образа диска
- Другие примечания
- Проприетарные драйверы видеокарты
- Список изменений стандартной установки Ubuntu
- Изменить размер casper-rw
- Прямая установка на флешку
- Резервное копирование текущего состояния файловой системы
Ubuntu на USB-накопителе
С появлением USB-накопителей большей емкости и поддержкой загрузки компьютера через USB меня заинтересовали живые дистрибутивы непосредственно на USB (Live USB) вместо классического компакт-диска. Поводом для отдельной статьи является тот факт, что различные автоматизированные средства не позволили мне добиться желаемых свойств. Отдельные шаги прокомментированы, чтобы более опытный пользователь мог настроить их под свои нужды.
- функциональная загрузка Ubuntu Linux с USB-накопителя;
- сохранение изменений между отдельными запусками;
- возможность использования флешки и как обычного диска для записи/чтения данных — даже из работающей Ubuntu;
- и все это только на одном разделе типа FAT — т.е. без разбиения.
Основной целью является не создание установочного носителя.
P примечание: сообщения под статьей относятся ко всем видам программного обеспечения, но оно не может гарантировать возможность записи в раздел FAT32, из которого работает Ubuntu. в то же время. Это можно решить, создав два раздела: первый для обычного использования, второй для «Live Ubuntu», включая файл для сохранения изменений.
Для справки, загрузка ОС с USB-накопителя включает в себя:
- Указание BIOS для загрузки загрузчика ОС с USB-HDD;
- Запустите загрузчик с MBR (основной загрузочной записи) USB-накопителя;
- Загружая ядро, ядро затем загружает файлы initramfs (initrd.img), содержащие автоопределение оборудования и загрузку модулей;
- Загрузить образ файловой системы только для чтения (squashfs);
- Сохранение изменений файловой системы в отдельный файл casper-rw или home-rw (используя unionfs).
Описанный выше процесс в основном аналогичен загрузке операционной системы с жесткого диска, отличаются только два последних пункта. Скрипты проекта позаботятся об этом.Каспер.
Casper достаточно гибок, что позволяет размещать и squashfs, и casper-rw по-разному: либо в виде файлов на обычном разделе FAT16/32, либо в отдельном разделе Linux, либо даже напрямую как блочное устройство (т.е. вместо файла casper-rw будет использоваться раздел с именем casper-rw). Более того, все это работает автоматически.
Обратите внимание на разделение файловой системы на раздел, доступный только для чтения, и сохранение всех изменений этого образа в отдельный файл. Благодаря unionfs, с точки зрения пользователя, система ведет себя как единая файловая система с возможностью записи.
ВНИМАНИЕ: casper-rw и иногда filesystem.squashfs часто повреждаются во время тестирования. Я еще не выяснил, является ли это неисправной флешкой (я так не думаю) или тем фактом, что файловая система (FAT32), содержащая оба файла, доступна для записи одновременно. Итак: ИСПОЛЬЗУЙТЕ НА СВОЙ РИСК.
Создание работающей установки Ubuntu
Опять же, существуют разные методы, другие источники обычно рекомендуют использовать существующую файловую систему на Live CD и chroot для этой системы в соответствии с вашими потребностями. Недостаток Chroot заключается в текстовой консоли, это тоже можно решить (см. комментарии в разделе Настройка Ubuntu Live CD), однако лично я предпочитаю обычную установку Ubuntu в виртуализированной среде (VirtualBox не-OSE).
Установите на виртуальную машину как минимум следующие пакеты:
Первый — это набор скриптов, расширяющих свойства initramfs (для поиска образов файловой системы squashfs и casper-rw), следующие — утилиты для автоопределения оборудования, инструменты для создания образа файловой системы, и последний — установщик с флешки (т.е. создание обычной установки на компьютере).
Необходимо устанавливать «Гостевые дополнения» — хотя они и сделали бы использование виртуальной машины более приятным, но на LiveUSB бесполезны.
Далее установите программы по вашему выбору, единственным ограничением является установка бинарных драйверов nvidia и fglx — casper всегда создает новый /etc/X11/xorg.conf при запуске и (намеренно) не обнаруживает бинарный файл водители. Это намерение, видимо, связано с GPL — распространение этих бинарных драйверов, по некоторым мнениям, противоречит этой лицензии. Мне еще предстоит узнать, успешно ли кто-нибудь модифицировал эти сценарии.
Следующий шаг — отредактировать скрипт /usr/share/initramfs-tools/scripts/casper так, чтобы флешка монтировалась с правами записи для всех пользователей (по умолчанию предполагается, что образ читаемой только файловая система /media/ubuntu/casper/filesystem.squashfs хранится на недоступном для записи диске (CD-ROM, отдельный раздел диска).Выделенная часть указывает на изменения:
Кроме того, целесообразно добавить e2fsck в initramfs и изменить скрипт casper для проверки постоянного раздела диска casper-rw. Первая часть оформляется добавлением скрипта /usr/share/initramfs-tools/hooks/casper (добавьте выделенную часть):
И вторую часть, отредактировав скрипт /usr/share/initramfs-tools/scripts/casper (заполните выделенную часть):
После того, как все системные модификации будут выполнены на виртуальной машине, вам необходимо обновить зависимости модуля и создать новый файл initramfs:
Команда update-initramfs автоматически включит сценарии casper в /boot/initrd-xxx.img, что является ключевой частью всего процесса.
Подготовка USB-накопителя
Файлы VDI, созданные VirtualBox, нельзя просто смонтировать как логический раздел, поэтому я создаю образ диска из работающей системы в VirtualBox напрямую на внешнюю флешку.
Сначала подключите флешку к виртуальной машине (VirtualBox меню Devices/USB device… Предупреждение: это может сделать только неоперационная версия VirtualBox от SUN.)
Отформатируйте USBфлешка так, чтобы на ней был только один раздел в формате FAT (если размер больше 4 ГБ, выбирайте FAT32(LBA), в противном случае достаточно FAT16). Узнать метку диска можно командой:
Из вывода попробуйте прочитать, какое устройство ядро назначило флешке — в моем случае /dev/sdb. Если вы допустили ошибку, вы можете использовать следующие команды для удаления всех данных на жестком диске виртуальной машины!
Если на USB-накопителе уже были какие-то разделы, и они были смонтированы автоматически, сначала «размонтируйте» их, щелкнув правой кнопкой мыши значок диска на рабочем столе.
Первая команда стирает начало диска в целях безопасности (т.е. сбрасывает MBR и существующий раздел), вторая запускает fdisk.
- сначала создайте новый основной раздел (последовательность клавиш «n»+»p»+»1″+»enter»+»enter»+»enter»),
- установите тип FAT32 («t»+»c»),
- установить флаг загрузки («a»+»1″+»enter»)
- и записать изменения («w») при выходе.
В качестве альтернативы вы можете использовать cfdisk или gParted (с графическим интерфейсом).
Чтобы проверить, просмотрите раздел:
Отформатируйте созданный раздел в FAT (нет необходимости выбирать FAT 16 или 32, команда определит его автоматически в зависимости от размера диска) и назовите его «ubuntu», затем проверьте флешку (из-за плохие блоки):
Время от времени проверяйте флешку, даже при использовании Live USB, будь то из MS Windows или Linux.
Создание образа диска
Затем подключите флэш-накопитель USB (т. е. отключите его от виртуальной машины и снова подключите, накопитель должен быть автоматически обнаружен и смонтирован в каталоге /media/ubuntu) и создайте каталог для образа файловой системы:
Каталог должен называться casper, потому что его ожидают сценарии casper. Чтобы использовать другое место, вам нужно отредактировать /usr/share/initramfs-tools/scripts/casper ивоссоздать initrd.img.
В гостевой системе закройте все запущенные приложения, переключитесь в однопользовательский режим (без поддержки сети), измените корневое монтирование на доступ только для чтения (чтобы исключить изменения в файловой системе), создайте образ файловой системы непосредственно на USB-накопитель и, наконец, снова смонтируйте корень с включенной записью изменений:
Команда mksquasfh сжимает полную структуру каталогов гостевой системы (за исключением каталогов или файлов после параметра -e) и сохраняет ее в файл /media/ubuntu/casper/filesystem.squashfs. Имя файла изображения может быть любым, кроме расширения «squashfs».
Каталоги /proc , /sys и /tmp намеренно опущены — первые две содержат виртуальные системные данные, а не реальные файлы, последняя директория содержит только временные файлы.
Теперь вернитесь в графическую среду (просто нажмите CTRL+D или напишите команду выхода и выберите «возобновить загрузку» в следующем меню).
В образ файловой системы по-прежнему необходимо добавить пустые каталоги, которые мы изначально не включили (у каталога tmp есть специальные права доступа):
Далее установите grub — загрузчик ядра:
Команда автоматически записывает grub на MBR-диск /dev/sdb , создает каталог boot/grub на том же диске и копирует файлы, необходимые для работы загрузчика.
(В качестве альтернативы вы можете использовать syslinux, который занимает меньше памяти и его проще настроить, но в моем случае grub оказался более надежным.)
Далее скопируйте ядро, initramfs и memtest с виртуальной машины на флешку:
Memtest не является обязательным, он используется для проверки оперативной памяти компьютера.
Теперь вам нужно создать /media/ubuntu/boot/grub/menu.lst, чтобы он содержал (конечно, вы можете изменить содержимое, см. ручные скрипты grub и casper):
Преимущество Grub в том, чтопри запуске компьютера можно отредактировать вышеперечисленное (клавишей «e») и после редактирования параметров продолжить запуск операционной системы (клавишей «b»).
И последний шаг — создать образ файловой системы для хранения изменений в образе filesystem.squashfs (который доступен только для чтения).
Первая команда создает пустой файл casper-rw размером 1 ГиБ (bs — размер блока, count — количество повторений блока). Затем вторая команда создает файловую систему ext2 внутри этого файла и называет ее casper-rw (это необязательно).
Имя файла casper-rw важно, потому что оно ожидается сценариями casper. Файл также должен находиться в основном (корневом) каталоге USB-накопителя.
В качестве альтернативы можно использовать имя файла /media/ubuntu/home-rw — тогда будут сохранены только изменения в домашних каталогах, а все остальное (т.е. новые установленные программы, модификации скриптов /etc и т. д.) теряется при выключении компьютера).
Исключительно для информации можно добавить список установленных пакетов:
Другие примечания
Проприетарные драйверы видеокарты
Если вы настаиваете на бинарных драйверах видеокарты, то не проблема установить их после запуска ОС с флешки — через меню Система/Администрирование/Драйверы оборудования. После установки вам не нужно перезагружать систему, просто выйдите из Gnome и войдите снова (тем временем X.org перезапустится и загрузит новый драйвер).
После следующей перезагрузки файл /etc/X11/xorg.conf будет перезаписан (за это отвечают касперовские скрипты) и бинарные драйвера не будут установлены. Это можно решить, либо изменив скрипты каспера, либо добавив свой собственный xorg.conf, используя /etc/rc.local. Тогда, конечно, вы потеряете универсальность такой установки — драйвера nVidia будут бесполезны на компьютере с видеокартой Intel. Я протестировал одновременную установку двоичных файлов драйверов.nvidia и fglrx, но тогда Xka вообще не запускалась…
Список изменений стандартной установки Ubuntu
Перед созданием образа я
- отключил сервисы cron, anacron, cups, saned (изменив права: sudo chmod -x /etc/init.d/_relevant_service);
- удален apport, python-apport Thunderbird, Pidgin*, Bogofilter*, Myspell*, Popular-contest, scim*, wamerican, wbritish, evolution*;
- установлены mc, bluez-compat, mtools, testdisk, wipe, partimage, xfsprogs, medibuntu (mplayer, skype, alsa-firmware, w32codecs, googleearth, libdvdcss2), digikam, mapivi, ufraw, различные программы обнаружения (kismet, aircrack -ng, wireshark, nmapsi4), cryptkeeper, KeepassX, клиент Citrix ICA (подключаемый модуль XenApp + сертификаты), NoMachine NXclient (+ ключ), ntlmaps;
- внесены различные модификации: X (уменьшить разрешение экрана до 90 dpi), mc (внутренний редактор), gedit (не сохранять резервную копию файла), gnome-terminal (удалить сочетания клавиш), gnome-panel (добавить: иконки Firefox, терминал, gedit, системный монитор, настройки/отображение; удалить переключатель пользователя), тема мифбунту (gtk2-engines-mythbuntu, мифтв-тема-мифбунту).
Изменить размер casper-rw
Сначала создайте пустой файл /tmp/tempfile нужного вам размера (здесь к существующему casper-rw будут добавлены дополнительные 256 МБ):
Теперь добавьте этот пустой файл в конец существующего файла casper-rw на флешке, проверьте существующую файловую систему и разверните ее:
Прямая установка на флешку
Ubuntu можно установить на флешку прямо с Live CD, как и на любой другой жесткий диск, но у этого есть несколько недостатков:
- Чтение и запись небольших файлов: флэш-накопители являются самыми медленными, особенно для небольших файлов (запись блоков размером 4 КБ может иметь «скорость» около 300 КБ/с, а блоков 1 МБ — до 20 МБ/с).Поэтому на практике Live USB работает быстрее.
- Частая запись небольших событий (временные файлы браузера, журналы) изнашивает флэш-накопитель, что может привести к его повреждению (ошибки ввода-вывода в системном журнале). Впрочем, сегодня это не так критично из-за роста качества NAND-памяти и снижения цены на флешки.
С другой стороны, можно использовать «логированные» файловые системы, которые частично решают обе проблемы (см. статью на сайте IBM).
Резервное копирование текущего состояния файловой системы
Файл с образом файловой системы casper/filesystem.squashfs естественно всегда один и тот же, все изменения сохраняются в образ в файле casper-rw. Со временем этот файл может стать довольно большим, особенно во время обновления системы.
К счастью, оба образа можно объединить и подключить к обычной системе Linux. Сначала смонтируйте обе файловые системы в отдельные папки, затем используйте UnionFS, чтобы объединить их в отдельную точку монтирования /tmp/3:
Впоследствии можно создать резервную копию папки /tmp/3 или перезаписать ее содержимое диском, используемым в виртуальной машине.