web-dev-qa-db-ja.com

LiveCDでubuntuライブユーザーグラフィカルセッション(startx)はどのように起動しますか?

ubuntu-builderを使用して、カスタムISOを構築しようとしています。出発点として、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 には、次のことが記載されています。

ブート初期化
edit/usr/share/initramfs-tools/scripts/casper-bottom/*のファイルを編集する必要があります。たとえば、ホスト名またはlivecdユーザーを変更できます。

...しかし、そこに何が正確に実行されているのか、正確にはわかりません。 ubuntu-builder/home/ubuntu-builder/FileSystem/usr/share/initramfs-tools/scripts/casper-bottom/の下にこれらのファイルを展開しますが、私が見る限り、これらのほとんどはインラインsedコマンドを実行するだけで、そこには多くのエグゼクティブコマンドは表示されませんか?

それでも、スクリプトの1つを新しいスクリプト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を編集し、次のように「exit 0」の前に行を追加します。

サービスgdmの開始

これは最善の方法ではありませんが、実行してください! 。これは「update-rc.d gdm defaults」を実行する必要がありますが、この方法は失敗します。

そして確かに-私は追加しました:

startx
startlxde

... /etc/rc.localに-これは実際に起動し、LXDEを自動的に起動します-ただし、lxterminalを実行すると、ユーザーrootの下にあります-ライブユーザーubuntu


それで、ライブubuntuユーザーのもとでブート時に(任意の)Xおよび/または任意のデスクトップ環境を自動的に開始できるようにするにはどうすればよいですか?

この場合、not追加のデスクトップマネージャー(たとえばgdm)または対応するグリーターを使用したいことに注意してください-しかし、 Xを自動的に起動するソリューションがデスクトップマネージャーまたはグリーターでも機能するかどうかを知っておいてください。

3
sdaau

OK、私はどこかに着いたと思う-しかし、それでもまだそれを取得していないので、適切な答えをいただければ幸いです:)

しかし、基本的には、ブートプロセスが開始され、そこのどこかでinitプロセスが実行され、カーネルがロードされます-また、いくつかのスタートアップスクリプトが実行されます。これらのスクリプトはinitramfsの一部であり、ブートカーネル内では/scripts/...と呼ばれますが、ubuntu-builderの解凍されたファイルシステムでは./FileSystem/usr/share/initramfs-tools/scripts/にあります。最終的に-典型的なインストールでは-これは与えられたDisplay Manager(DM)をロードすることになります。これは " ユーザー名とパスワードの入力を求めるログイン画面をユーザーに提示します "; DMにあるこのような画面のデザインの1つは、greeterとして知られています。 DM greeterでログインが実行されると、デスクトップ環境/ウィンドウマネージャー(DE/WM)に制御が渡されます。そもそもDMを誰が/何から始めているのかまだわかりません。しかし、開始された場合、DMがDE/WMのスターターになると思います(ログイン認証と設定に依存します)。または:

(boot start) --> initramfs --> scripts --> (kernel?) --> DM --> (login) --> DE+WM --> (boot completion)

まだDEとWMの違いを適切に判断することはできませんが、たとえば、LXDEは明らかにDE(名前どおり)です。通常は、openboxとともにWMとして使用されます。つまり、ここで欲しいのは、DMをスキップし、ライブのubuntuユーザーとしてDE/WMに直接行くことです。

ブートスクリプトに戻ります。特に、init-bottomcasper-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)がalready(CDイメージに)インストール済み-単にその可能な構成ファイルを検索し、sedを使用してインプレースを置換し、特定のDMが(通常開始するものによって)開始されると自動ログインを実行するそれ)。一方、adduserスクリプトは、起動中にライブユーザーubuntuを最初から作成します-そのため、アプリオリ編集および保存できるファイルはありませんCDイメージ。

ただし、良いのは、これらのスクリプトが/etc/rc.localが実行される前に必ず実行されることです。これは、bash端子がブートの最後に最終的に開始される前に実行されます。したがって、私がやったことは、/etc/rc.localファイルを使用して、Xユーザーの~/.bashrcubuntu起動シーケンスを「注入」します。

$ 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」になります
  • ただし、if [ ... ]チェック内のstartxは成功します(ですが、単純なif []が違いを生む理由がわかりません)!

私の場合、そのstartxコマンドはLXDEopenboxの両方を開始するため、DEとWMの両方(方法と理由はまだわかりません) 。これで、アイコン以外はすべて見栄えが良くなり、 シャットダウン、サスペンド、休止状態、再起動のオプションなし になりました。しかし、少なくとも私のOPの差し迫った問題は解決されています。ただし、ここで何が行われているのかについてのより適切な説明に感謝します。


以下は、私が役に立つと思うリンク/引用です:

XDM(完全には、X Window Display Manager)は、X Window Systemのデフォルトのディスプレイマネージャーです。それは最低限のXディスプレイマネージャーです。 1988年10月にX11リリース3で導入され、市場に登場したばかりのスタンドアロンX端末をサポートします。

私が得られないのは、xdmを使用しないときに使用したい理由です。つまり、xdmの自動ログインは、グラフィカルなログインプロンプトを表示するように設計されたものとは正反対です。

ランレベル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はそれを尊重します。

ランレベルを変更するには、起動スクリプトを含む/etc/init.d/をUbuntuの方法で確認します。次に、/ etc/init.d /内のスクリプトへのシンボリックリンクを含む/etc/rc#.d/を調べます。シンボリックリンクの名前は、開始/停止するものとその順序を決定します。

Bashrcのようなものを試してください

[-z "$ DISPLAY"] && startx && {sleep 5; DISPLAY = 0:0 setsid Guake; } 

自動startx用
。bash_profile(またはログイン時に実行される他のファイル)を編集して追加します

if [-z "$ DISPLAY"] && [$(tty)==/dev/tty1];それから
 startx 
 fi
1
sdaau