Я пытаюсь создать собственный ISO, используя ubuntu-builder
. Я взял 12.40 мини-ремикс ISO в качестве отправной точки. Вот мой конкретный пример - тем не менее, мне интересно в принципе, как идет процесс (поэтому я могу применить это к другим DE / WM).
Когда я запускаю новый ISO, созданный непосредственно из мини-ремикса, запускающего ISO, все происходит как надо - я могу запустить новый ISO на виртуальной машине, и процесс загрузки заканчивается текстовым приглашением для живой ubuntu
пользователь.
Теперь я пытаюсь установить LXDE (для него есть запись в ubuntu-builder
, по-видимому, он устанавливает зависимости lxde-core
и X; мне приходится устанавливать вручную lxterminal
, а значки отсутствуют). также, вероятно, lxde-icon-theme
). Я также должен установить xinit
вручную, поэтому у меня есть startx
. Но это само по себе мало что дает: если я загружаю этот настроенный ISO-образ на виртуальной машине, происходит то же самое, что и с «оригинальным» ISO-процессом - процесс загрузки завершается с приглашением в текстовом режиме для ubuntu
живого пользователя ,
Если я сейчас наберу startx
в этом приглашении, то LXDE запустится (при запуске startlxde
в этом приглашении появится жалоба на X), так что когда вы запускаете lxterminal
с этого рабочего стола, он запускается в живой ubuntu
пользователь.
В LiveCDCustomization - Boot init упоминается:
Boot init
blockquote>
Вам необходимо отредактировать файлы в edit / usr / share / initramfs-tools / scripts / casper-bottom / * Например, вы можете изменить имя хоста или пользователя livecd.... но я не совсем понимаю, что именно управляет тем, что там.
ubuntu-builder
распаковывает эти файлы в/home/ubuntu-builder/FileSystem/usr/share/initramfs-tools/scripts/casper-bottom/
- но, насколько я вижу, большинство из них просто запускают некоторые встроенные командыsed
, я не вижу там много исполнительных команд?Тем не менее, я попытался скопировать один из сценариев туда как новый сценарий
51startx
, который в исполняемом разделе имеет:log_begin_msg "$DESCRIPTION" chroot /root startx chroot /root startlxde log_end_msg
Это абсолютно ничего не делает - опять же, после при загрузке я получаю обычную текстовую подсказку
ubuntu@ubuntu:~$
.
Затем я нашел Изменить: Startx автоматически, добавить apt и т. Д. - backtrack-linux.org :
Чтобы получить графический логин, просто установите gdm и запустите его при запуске:
aptitude update aptitude install gdmЗатем отредактируйте /etc/rc.local и добавьте строку ДО «выхода 0» следующим образом:
service gdm startЭто не лучшим образом, но беги! , Это должно работать с использованием «update-rc.d gdm defaults», но этот способ не работает.
blockquote>И действительно - я добавил:
startx startlxde
... к
/etc/rc.local
- и это действительно загружается, и запускает LXDE автоматически - однако, когда я запускаю [ 1123], он под пользователемroot
, а не под действующим пользователемubuntu
!
Итак, что мне делать, чтобы я мог запустить (любой) X и / или любой рабочий стол среда автоматически при загрузке под живым пользователем
ubuntu
?Обратите внимание, что в этом случае я бы не не хотел бы использовать дополнительный менеджер рабочего стола (например,
gdm
) или соответствующего приветствующего - но было бы хорошо знать, если решение для автоматического запуска X также подойдет для менеджера рабочего стола или приветствующего.
Хорошо, я думаю, что добрался где-нибудь - но все еще не вполне получайте его, таким образом, надлежащий ответ ценился бы :)
Но, в основном: процесс начальной загрузки запускается, где-нибудь там init
процесс, выполненный, и загрузки ядра - но также и, некоторые запущенные скрипты запуска. Эти сценарии являются частью initramfs
, из загружающегося ядра они упоминаются как /scripts/...
- однако, в распакованной файловой системе ubuntu-builder
они были бы в ./FileSystem/usr/share/initramfs-tools/scripts/
. В конечном счете - в типичной установке - это закончилось бы с загрузкой данного менеджера по оформлению (DM), который "дарит пользователю экран входа в систему, который запрашивает имя пользователя и пароль"; где, по-видимому, один дизайн такого экрана в DM известен как зазывала. После того как вход в систему был выполнен в зазывале DM, затем управляет, передается на Настольную среду / Менеджер окон (DE/WM). Я все еще не ясен, кто/какой запускает DM во-первых; но если это запускается, я предполагаю, что DM впоследствии является начинающим DE/WM (в зависимости от аутентификации входа в систему и настроек). Или:
(boot start) --> initramfs --> scripts --> (kernel?) --> DM --> (login) --> DE+WM --> (boot completion)
Я все еще не могу сказать различие между DE и WM правильно, но например, LXDE
по-видимому, DE (согласно имени); и обычно это используется с openbox
как WM. Так, другими словами, то, что я хочу здесь, должно пропустить DM и перейти непосредственно к DE/WM как живое ubuntu
пользователь.
Назад к сценариям начальной загрузки - особенно, init-bottom
и casper-bottom
видимы в сообщениях журнала начальной загрузки - которые также доступны в файле /var/log/boot.log
, после того как ISO заканчивает загружаться, и мы можем использовать less
. Особенно интересный эти сценарии:
$ sudo grep -ri "Adding live" ./FileSystem/usr/share/initramfs-tools/
./FileSystem/usr/share/initramfs-tools/scripts/casper-bottom/25adduser:DESCRIPTION="Adding live session user..."
$ sudo grep -ri dm ./FileSystem/usr/share/initramfs-tools/scripts/ | grep 'if \['
(./FileSystem/usr/share/initramfs-tools/scripts/casper-bottom/15autologin)
15autologin:if [ -d /root/etc/gdm ]; then
15autologin:if [ -f /root/etc/kde4/kdm/kdmrc ]; then
15autologin:if [ -f /root/etc/lxdm/lxdm.conf ]; then
15autologin:if [ -f /root/etc/xdg/lubuntu/lxdm/lxdm.conf ]; then
15autologin:if [ -d /root/etc/lightdm ]; then
Так, autologin
сценарий в основном рассчитывает на уже устанавливаемого менеджера по оформлению (DM) (в образе CD) - и просто ищет возможные файлы конфигурации этого и заменяет оперативное использование sed
, таким образом, что конкретный DM выполняет автоматический вход в систему, после того как он запускается (тем, что обычно запускает его). С другой стороны, adduser
сценарий создает живого пользователя ubuntu
с нуля во время начальной загрузки - и как таковой, нет никаких файлов, мы могли редактирование apriori и хранилище на образе CD.
Хорошая вещь, однако, состоит в том что эти скрипты, определенно запущенные прежде /etc/rc.local
выполнения, который работает перед bash
терминал в конечном счете запущен в конце начальной загрузки. Таким образом, то, что я сделал, используется /etc/rc.local
файл для "введения" X
запустите последовательность в ~/.bashrc
из ubuntu
пользователь:
$ tail -n 15 ./FileSystem/etc/rc.local
#
# By default this script does nothing.
#sed -i 's/console/anyone/' /etc/X11/Xwrapper.config
#su - ubuntu -c "touch /home/ubuntu/.Xauthority"
#su - ubuntu -c startx
#sed -i 's/anyone/console/' /etc/X11/Xwrapper.config
echo ls -la /home/ubuntu
ls -la /home/ubuntu
# echo startx >> /home/ubuntu/.bashrc # this gives error "Server is already active for display 0"
echo 'if [ -z "$DISPLAY" ] && [ $(tty) == /dev/tty1 ]; then startx ; fi' >> /home/ubuntu/.bashrc
ls -la /home/ubuntu
exit 0
Так, вкратце:
.Xauthority
не поможет здесь; отказ будет"X: user not authorized to run the X server, aborting.
"startx
в .bashrc
не поможет здесь; отказ (после того, как длинный черный экран) будет"Server is already active for display 0
"startx
в if [ ... ]
проверка успешно выполнится (но я не понимаю, почему был бы простое if []
иметь значение?)!В моем случае, этом startx
команда запускает обоих LXDE
и openbox
, так и DE и WM (как и почему, я все еще не понимаю). Таким образом, все взгляды, хорошие теперь - за исключением значков, и что у меня нет завершения работы, приостанавливают, в спящем режиме и опции перезагрузки. Но по крайней мере непосредственная проблема в моем OP решена. Однако я все еще ценил бы более надлежащее описание того, что продолжается здесь.
Ниже некоторые ссылки/кавычки, которые я нашел полезным:
XDM (полностью, менеджер по оформлению X Window) является менеджером по оформлению по умолчанию для X-оконной системы. Это - скелеты X менеджеров по оформлению. Это было начато с Выпуска 3 X11 в октябре 1988, для поддержки автономного X терминалов, которые просто прибывали на рынок.
То, что я не получаю, - то, почему Вы хотите использовать xdm, когда Вы не собираетесь использовать его? Я имею в виду, имение xdm автовход в систему является точно противоположностью того, что это было разработано, чтобы сделать: Дайте Вам графическое приглашение ко входу в систему.
Используйте runlevel 3 и добавьте 'su-c startx' к/etc/init.d/rc.local, или (при использовании inittab) изменяют "x:5:respawn:/etc/X11/prefdm-nodaemon" на "x:5:respawn:su-c startx".
При создании собственного/etc/inittab файла Ubuntu будет соблюдать его.
Изменить Ваш runlevels Ubuntu путем взгляд в/etc/init.d/, который содержит сценарии запуска. Затем загляните/etc/rc#.d/, который содержит символьные ссылки на сценарии в/etc/init.d/. Название символьных ссылок определяет то, что будет запущено/остановлено и в какой порядок.
В bashrc пробуют что-то как
[ -z "$DISPLAY" ] && startx && {sleep 5; DISPLAY=0:0 setsid Guake; }
для автоматического startx
отредактируйте .bash_profile (или другой файл, который выполняется, когда Вы входите в систему), и добавитьif [ -z "$DISPLAY" ] && [ $(tty) == /dev/tty1 ]; then startx fi