Как Ubuntu Live пользователя графический сеанс (StartX) пускается в LiveCD?

Я пытаюсь создать собственный 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
Вам необходимо отредактировать файлы в 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», но этот способ не работает.

И действительно - я добавил:

startx
startlxde

... к /etc/rc.local - и это действительно загружается, и запускает LXDE автоматически - однако, когда я запускаю [ 1123], он под пользователем root, а не под действующим пользователем ubuntu!


Итак, что мне делать, чтобы я мог запустить (любой) X и / или любой рабочий стол среда автоматически при загрузке под живым пользователем ubuntu?

Обратите внимание, что в этом случае я бы не не хотел бы использовать дополнительный менеджер рабочего стола (например, gdm) или соответствующего приветствующего - но было бы хорошо знать, если решение для автоматического запуска X также подойдет для менеджера рабочего стола или приветствующего.

3
задан 23 August 2013 в 18:27

1 ответ

Хорошо, я думаю, что добрался где-нибудь - но все еще не вполне получайте его, таким образом, надлежащий ответ ценился бы :)

Но, в основном: процесс начальной загрузки запускается, где-нибудь там 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
1
ответ дан 23 August 2013 в 18:27

Другие вопросы по тегам:

Похожие вопросы: