LinuxForum.Fans
Тема

Linux-Ubuntu пользовательская сборка

Автор: sklimkin 17 сообщений 9285 просмотров
#346364

Преамбула:
Нужно выполнить свою сборку ОС на основе Linux-ubuntu с минимальным набором программ и упаковать это в Live-CD-ISO-image, который впоследствии можно модернизировать.
Минимальное потребление памяти.
Размер полученного Live-CD-ISO-image должен быть меньше 350 МБ.

В установленной через chroot Linux-Ubuntu невозможно изменить GNOME-панели для пользователя
(в Дебиан то же самое).

Чтобы обойти это ограничение надо:
1. Сделать из /chroot SquashFS-файл и сделать Live-CD-ISO-образ
Загрузить ISO-image в виртуальную машину и настроить GNOME-панели для своих задач.
Сейчас (в моей системе) 2 пользователя - 'root' (passw 'root') и 'q'(passw '111111').
2. Загрузить Midnight-Commander как root и упаковать корневую файловую систему (/bin /boot /etc ... /usr /var) в архивные файлы *.tar.bz2 или *.tar.gz
3. С помощью ssh (он установлен) скопировать эти архивные файлы на HOST-машину (например в /live-boot-ubuntu/bak-from-VMware)
4. Выйти из виртуальной машины и распаковать созданные архивы в пустую /chroot директорию.
5. Выполнить chroot в chroot-директорию.
# apt-get install --reinstall gdm (потому что после реконфигурации gnome-панелей gdm login-window обрезает часть окна и выбор пользователя невозможен).

text
Удалить xdm (X-desktop-manager):
# update-rc.d -f xdm remove
# update-rc.d -f gdm defaults
# update-initramfs -k all -u
# exit (выход из choot-окружения).

6. Скопировать обновленный initrd.img и создать новый squashfs-файл.
7. Создать новый SD-ISO-image ubuntu-live-gnome2.iso

И он работает уже так, как положено и ожидалось.
Возможно в новой виртуальной машине потребуется переустановить пакет 'sudo'

После всего этого можно либо удалить пользователя 'root' либо изменить его пароль 'root' на что-то более сложное.

Примечания:

Показать
Создаваемые пользователем дистрибутивы на основе Дебиан более стабильны, чем на основе Убунту.
Но при этом графическое окружение рабочего стола менее удобно для пользователя.

Размер программ для рабочего стола Гноме в Дебиан получается заметно больше, чем в Убунту, а это отражается на размере конечного дистрибутива.
То есть попытка скрестить Дебиан-базу с Гномом не совсем удачное решение.

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

Возможности GNOME значительно богаче, чем например возможности LXDE (но и тяжеловесней).
Но если надо сделать пользовательскую сборку на основе Дебиан, то выбор LXDE будет более предпочтительным и предсказуемым в работе.

Я не обнаружил в использовании каких-либо преимуществ ядра Линукс 3.2--3.5 по сравнению с ядром 3.0 и даже 2.36
Поэтому для создания своего дистрибутива я выбрал Убунту 10.04 LTS с ядром 3.0 (backport).

Чтобы пользовательская сборка дистрибутива имела небольшой размер и содержала только то, что выбрал пользователь, удобнее всего использовать chroot-окружение.

А для того, чтобы такую сборку можно было установить на жесткий диск компьютера или на флэш-диск, удобнее всего сборку преобразовать в Live-CD-ISO-image.

В Убунту для создания Live-CD используется Casper. Он "тяжеловат" на мой взгляд.
В Дебиан есть live-boot, live-config, live-build, live-tools.
Live-boot компактней и удобней, а главное достаточен для поставленной задачи.

Здесь отсутствует та часть Live-CD, которая позволяет сразу после загрузки установить операционную систему на раздел жесткого диска, или на флэш-диск.
У меня не было такой задачи, но в сборке присутствует программа live-config, которая может эту задачу выполнить (есть и другие возможности).

Задача звучит так:

Показать
а) выполнить сборку ОС на базе Ubuntu с рабочим столом и набором программ по выбору пользователя и при этом минимизировать размер полученного дистрибутива,
б) полученный дистрибутив должен загружаться в виртуальной машине и при желании устанавливаться на виртуальный жесткий диск этой виртуальной машины,
в) полученный дистрибутив должен позволять его последующие модификации и дополнения, а также сохранение этих модификаций,
г) минимальное потребление памяти (показатели виртуальной машины не самые точные, но тем не менее достигнут результат менее 100 МБ в только что запущенной машине).

Полученный образ может работать на виртуальной машине с выделением для нее всего 144 БМ памяти и потреблять на старте 80 МБ из этой памяти.
Представление о потребляемых ресурсах также дает список запущенных системой процессов (их количество) и выделенной для этих процессов памяти.

Думаю, что эту задачу я выполнил.

Чтобы уменьшить потери времени при повторении некоторых этапов работы (а это почти неизбежно), полезно выполнить архивирование промежуточных результатов:
1. base-system полученную через debootstrap
2. base-system с установленным ядром системы (kernel из chroot-окружения)
3. base-system, kernel, установленные графические элементы рабочего стола (Xorg, Gnome-DE или Gnome-panel) и минимальный набор программ (например mc).

Но для этого архивирования необходимо каждый раз выходить из chroot-окружения.

В моей конкретной реализации присутствуют такие программы:

Показать
nautilus (родной для gnome файловый менеджер)
firefox (web-bowser установливается по умолчанию вместе в архиватором xarchiver)
leafpad (легкий текстовый редактор)
file-roller (родной для gnome архиватор)
urxvt (терминал грамотно поддерживающий кодировку UTF-8)
mc (Midnight-Commander - файловый менеджер работающий и без графической среды).

Для лучшего понимания процесса в архиве есть почищенный лог установки системы.
Есть также скриншоты работающей системы.

Можно еще больше облегчить сборку заменой firefox на midori (или даже на dillo).

Аналогичная работа на базе Дебиан есть здесь на форуме:
http://linuxforum.ru/viewtopic.php?id=30346

Ссылки на архив:

Показать
#346366

сейчас установлю на Vbox и проверю, что ты там натворил :-)

а с этим я не согласен

"sklimkin" написал:
Я не обнаружил в использовании каких-либо преимуществ ядра Линукс 3.2--3.5 по сравнению с ядром 3.0 и даже 2.36

чтобы увидеть недостаток 2.6 проделай следующий фокус:
открой Firefox и Vbox
создай новую машину
дойди до опции "создать виртуальный диск"
увеличь размер создаваемого диска до 20Gb
и пока будет создаваться диск попробуй поработать в браузере
наслаждайся эффектом :-))

#346367

Это конечно неприятно, но не фатально *YES*
Я пользуюсь VMware player, в нем такой-же эффект?

#346368

это не в нем
это на реальной машине
знаменитый баг #12309

#346372

Пропустил в описании вот что:
вместе с "неизбежным злом" по имени firefox
в этой сборке присутствует второе менее "неизбежное зло" по имени goffice: abiword & gnumeric
Зачем поставил? - не вспомню.

#346373

какой вариант грузить то?

#346374

в принципе работает, но коряво :-)

#346377
Termo написал:
в принципе работает, но коряво :-)

Сделаю уточнение: пользуюсь исключительно VMware-player'ом, в котором эта сборка работает как рассказал выше.
Только из любопытства загрузил Olacle VM VirtualBox и загрузил свою сборку в нем.
Вы правы, коряво. Видеомоды почти не поддерживаются - максимум 800х600
А у меня в сборке сохранен режим 1152х864 (и гномовский randr предлагает ОЧЕНЬ большую линейку видеомод).
Ну что я скажу в свое оправдание?
Наверное то, что выложил здесь технику создания своего ISO, а то что в архиве - всего лишь иллюстрация.

Показать
Ну и вспомнился анекдот из советского прошлого.
Один старый еврей пишет в РайЖилОтдел заявление о срочном предоставлении ему квартиры, потому сто из его окна видно то что творится в женском отделении бани.
Приходит к нему целая комиссия, выглядывают в окно и говорят: нет, ничего подобного не видно!
А он им в ответ: "А вы на гардероб залезьте и увидите!"

Мой гардероб - VMware-player.

За тестирование спасибо.

#346378

я тоже просто балуюсь :-)

Показать

the first ubuntu 4.10

#349605

После серии упражнений по созданию Live-CD-ISO-image на базе Debian, Ubuntu, Runtu, Slitaz потребовалось конфигурировать/изменять базовую систему и сохранять эти изменения.
Такие измененные ISO-образы можно загружать в виртуальную машину и работать.

Но не все и не всегда удобно делать в связке с виртуальной машиной.
Поэтому потребовалось установить систему из ISO-образа на реальный раздел диска.
Диск может быть как HDD, так и USB-флэш.

В результате получены пользовательские сборки системы:
Linux-Ubuntu
Linux-SFSL(Runtu)
Slitaz-Linux
Собрал их вместе на одной USB-флэшке в раздел sda1, загрузчик один для всех grub2.
Для выкладывания на файлообменник разделил их для уменьшения размера файла закачки.

В результате есть три архива в компрессии tar.xz

Показать

Все указанные сборки русифицированы (кто больше, кто меньше), имеют переключатель клавиатуры Eng-Rus с индикацией флагами. На случай непредвиденных сбоев в Slitz на рабочем столе есть скрипт kbdswitch.
Еще у Slitaz есть особенность: потеря DIR /home/<USER> но root:root работает исправно.
"Разворачивать" Slitaz в полную файловую систему (bin boot etc ...) надобности не было, поэтому все стандартно: bzImage и rootfs-lzma-from-live-devel-GC-Office-wine.gz (это чтобы не забыть что в этом образе).

Надо отметить, что несмотря на установленные в системе Slitaz все Xorg-video-драйвера, при смене типа загрузки Disk <--> VirtualMachine (в частности VMware), система перестает загружать графическую среду/окружение. Только командная строка. Я пока не нашел, где это зарыто. И это зависит только от среды из которой выполнялась пересборка: физический диск, или виртуальная машина. С другими ОС (Debian, Ubuntu) таких проблем нет.

У меня интегрированная на мат.плате видео-карта Intel.
Если скачаете-установите, то черкните здесь отзыв.

#351518

Для тех, кто читает не по дагонали
Вот еще один опыт минимизировать Ubuntu для использования в live-CD-ISO:

Показать
http://yadi.sk/d/yjJolP5ICqWMB - ubuntu-live dir

Как-собрать свой-Ubuntu-Live-CD-ISO.txt 13 КБ
http://yadi.sk/d/Rpe3tO0BDLeQk

ubuntu-lucid-gnome-panel VMware 4.png 286 КБ
http://yadi.sk/d/qcDl0e89DLeg2

doc_ubuntu-lucid-gnome-panel.tar.gz 164 КБ
http://yadi.sk/d/WjcrXKVXDLQLk

ubuntu-lucid-gnome-panel-screenshots.tar.gz 3,1 МБ
http://yadi.sk/d/vKoX9r3VDLQtC

ubuntu-lucid-gnome-panel.iso 289,9 МБ
http://yadi.sk/d/y4cZzdWlDLe4i
#352777

Подключение "на лету" дополнительных sfs-модулей в Ubuntu-сборке.
Для того, чтобы подгружать во время работы дополнительные модули *.sfs
(mount squashfs on the fly), потребовалось распаковать в /chroot-окружение
модули из PRA: 060-sfs-get.pfs и pfs-utils-0.2.9pra-4-i686
http://forum.puppyrus.org/index.php/topic,14534.0.html
а затем туда же добавить вручную из работающей PRA вот что:
sfsusr ntf gtkdialog yad realpath notify-send notify-send.bin checkramfree
(gxmessage похоже, что не надо)
/lib/@libpcre.so /lib/@libpcre.so.1 /lib/libpcre.so.1.2.1 --> /usr/local/lib/

Пришлось немного изменить usr/local/share/applications/sfs-get.desktop

text
#Exec=sfs-get -p
Exec=sudo sfs-get
#Terminal=false
Terminal=true

иначе скрипт не отрабатывает: нет загрузки, нет индикации загруженного модуля.
Вероятно по-разному работает sudo в PRA-linux и в Ubuntu-linux.

Добавленный/установленный модуль может работать сразу, но в меню не виден.
/mnt/beaver-0.4.1-1-i686-xz.sfs/
Требуется обновить Desktop - пока это можно через перезагрузку пользователя.
Тогда (в данном случае для beaver) в главном меню появляется:
Программирование-->Beaver (даже с иконками).

Размещение дополнительных sfs-модулей указано в /isolinux/isolinux.cfg
в данном случае это директорий /_sfs ISO-образа.
Добавил туда (для тестирования) модуль beaver-0.4.1-1-i686-xz.sfs

Выгрузка подключенного "на лету" модуля также работает.

Позже сделаю из этих дополнений загружаемый с системой модуль-squashfs.
Если это будет кому-либо интересно - выложу в общий доступ.

Подключение sfs-модулей из иного, чем /_sfs места пока не проверял.

Цепочка вызовов sfs-скриптов:

text
sfs-get -> sfsusr -> mnt_sfs -> ...
спотыкается на checkramfree -> сообщение о делении на 0 (во как!)

но тем не менее работает, смотри скриншоты:

Показать
#352854

sklimkin, создается впечатление, что о BBCode вы никогда не слышали. Отредактируйте свои посты, чтобы они прилично выглядели, иначе всю эту кашу, включая тему удалю.

#352860

ему некогда
он сборки клепает

#353201

Добавил в свою сборку два инструмента.
Комменарии к добавлению инструмента "sfs-tools":

Показать
1. из авторской сборки PuppyRusArch (PRA) выделены и слегка обрезаны модули
pfs-utils-0.2.9pra-4-i686 и 060-sfs-get.pfs и запакованы в sfs-tools.squashfs
это позволяет находить-подключать *.sfs и *.pfs модули (squashfs)
2. вручную добавлен файл для обновления десктопа (панель и меню):
/sfs-tools/usr/local/share/applications/refresh-panel.desktop
3. пришлось немного изменить usr/local/share/applications/sfs-get.desktop
#Exec=sfs-get -p
Exec=sudo sfs-get
#Terminal=false
Terminal=true
иначе скрипт не отрабатывает: нет загрузки и индикации загруженного модуля,
вероятно по-разному работает sudo в PRA-linux и в Ubuntu-linux.
4. в корень ISO-сборки добавлен DIR /_sfs и в него добавлены для тесирования
модули: firefox-15.0.1.sfs 17.2 МБ и beaver-0.4.1-1-i686-xz.sfs 180 КБ
5. с этими дополнениями пересобран ubuntu-lucid-gnome-panel-sfs.iso 307.9 МБ
6. при тестировании работы нового модуля sfs-tools.squashfs из /_sfs многократно
загружались и выгружались модули firefox, beaver (под разными пользователями)
7. для продолжения наращивания функционала в эту сборку из авторской сборки
sfsl-121114 (ubuntu) добавлены в /usr/local/bin/ скрипты:
live-make sfsmumount sfsmumount2 defaultmount
эти скрипты предназначены для сохранения через debian-live-tools всех
изменений пользователя в Persistent-mode, но пока это только тест
8. в /root/Документы лежат файлы использованные для создания клавиатурных флагов
9. как и предполагалось при загрузке модуля firefox и навигации в сети начинает
"распухать" /.mozilla в директории пользователя - это кэширование.

Подключение модуля *.sfs и работа с ним:

Показать
Чтобы подключить sfs-модуль (он должен находиться в CD-ISO /_sfs/):
Меню->Приложения->Прочие->Sfs-get - менеджер модулей->'Пароль_пользователя'->
'Подключение модуля:'->кнопка_справа-> (выбор местоположения модуля)
Файловая система->live->image->_sfs->*.sfs->OK

Добавленный/установленный модуль может работать сразу, но в меню не виден.
После подключения модуль помещается в /mnt/*.sfs/

Чтобы вновь подключенный sfs-модуль появился в меню:
Меню->Система->Параметры->Refresh-panel
Тогда (в данном случае для beaver) в главном меню появляется:
Программирование-->Beaver (даже с иконками).
Это же можно выполнить и в терминале:
sudo killall gnome-panel - обновляет меню и панели

Добавить любые другие модули в /_sfs текущего ISO-образа можно в программе isomaster

Готовые к использованию файлы *.sfs можно найти-скачать:
http://ftp.cc.uoc.gr/mirrors/linux/puppylinux/pet_packages-lucid/
http://ftp.cc.uoc.gr/mirrors/linux/puppylinux/pet_packages-precise/
http://ftp.nluug.nl/ftp/pub/os/Linux/distr/puppylinux/
и в "окрестностях".
Некоторые пакеты *pet можно переименовать в *.sfs - и это будет работать.

Пакеты *.sfs можно изготовить самостоятельно несколькими разными способами, но это отдельная тема.
Можно также использовать (и создавать) пакеты новой генерации *.pfs
об этом можно почитать на форуме: forum.puppyrus.org

Комменарии к добавлению инструмента "live-save":

Показать
В /sfs-tools/usr/local/share/applications/ добавил live-save.desktop
Этот "ярлык" попадает в меню, он вызывает скрипт /usr/local/bin/live-make
и предлагает (в графическом окне) создать файл "сохраненки" *.cpio.gz
Поскольку в системе усановлены инструменты debian-live-tools
в DIR /live/cow (CopyOnWrite) ведется мониторинг и запись изменений системы.
Эти изменения и попадают в файл "сохраненки".
Надо отметить, что "сохраненка" применяется при установке системы на реальный
раздел любого диска, или в директорию реального диска (режим PERSISTENT),
но при желании можно это сделать и в виртуальной машине. Правда после
этого файл *.cpio.gz надо доступными средствами извлечь из вирт.машины
на HOST-машину и программой isomaster добавить в корень исходного ISO-образа.
Такие манипуляции могут понадобиться в случае, когда установлены программы,
доступные только из debian/ubuntu репозиториев и их надо сохранить на будущее.

Ссылки на скриншоты и новый ISO-образ:

Показать
ubuntu-lucid-gnome-panel_live-save_VMware_6.png
http://yadi.sk/d/sjmUg9GqDr8wB
ubuntu-lucid-gnome-panel_live-save_VMware_7.png
http://yadi.sk/d/YsWg-eafDr8wT
ubuntu-lucid-gnome-panel_live-save_VMware_8.png
http://yadi.sk/d/Sb1NYIlyDr8vz
ubuntu-lucid-gnome-panel_sfs-get_VMware_9.png
http://yadi.sk/d/-u2pQdGxDr8vv
ubuntu-lucid-gnome-panel_sfs-get_VMware_10.png
http://yadi.sk/d/dhrcBcxJDr8vc
ubuntu-lucid-gnome-panel_sfs-get_VMware_11.png
http://yadi.sk/d/wjEVH-ZjDr8vp

sfs-tools.tar.gz 733 КБ
http://yadi.sk/d/GFKxmK-XDr8ta
ubuntu-lucid-gnome-panel_sfs.iso 307,9 МБ
http://yadi.sk/d/tIT2aDSEDr8q9
about_sfs-get_live-save.txt 6 КБ
http://yadi.sk/d/HPToGG9jDr8zL
#356368

Ubuntu-precise 12.04-LTS kernel + headers 3.2.0-23 (можно обновлять)

Показать
Пользовательские squashfs-модули не подгружает. Из дир. /live поддерживает/загружает только один модуль *.squshfs
имеет live-boot v.3.0 и live-config v.3.0 и создает /live/cow/ /live/image/
имеет live-snapshot и может делать "снимок изменений системы" - то есть "сохраненку".
Лог сборки положил в /root/ внутри ISO
В виртуальной машине потребляет памяти на старте 310 MB

Перед этим делал такую же сборку из ubuntu-live-mini-remix precise 12.04
Размер получается заметно больше, для работы сети недостаточно установки только Network-manager - нужно еще что-то. Бросил.

Для самостоятельной Desktop-сборки Debian'а - лучше/надежней выбрать LXDE, для Ubuntu - GMOME (в разных вариантах).
Русификация консоли при выборе LXDE не получается, но в десктопных программах - все нормально.

Ссылки:
ubuntu-1204-LXDE.iso 190.6 MB
http://yadi.sk/d/NDTakhf-EfN9a

На скриншоте потребление памяти при 12 открытых приложениях.
ubuntu-1204-LXDE_memory_VMware Player.png 226 KB
http://yadi.sk/d/vCSLbnTJEfPLQ

29 декабря 2013г.
Добавлена работа с пользовательскими sfs-модулями, их можно загружать и выгружать во время работы (on-the-fly).
Добавлена возможность сохранять изменения системы live-snapshot (файл live-sn-ubuntulive.cpio.gz) - persistent-mode.
ubuntu-1204-LXDE-sfs.iso 192.6 MB
http://yadi.sk/d/Cmi0Q37QF8fbX

Войдите или зарегистрируйтесь, чтобы ответить.