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を自動的に起動するソリューションがデスクトップマネージャーまたはグリーターでも機能するかどうかを知っておいてください。
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-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)がalready(CDイメージに)インストール済み-単にその可能な構成ファイルを検索し、sed
を使用してインプレースを置換し、特定のDMが(通常開始するものによって)開始されると自動ログインを実行するそれ)。一方、adduser
スクリプトは、起動中にライブユーザーubuntu
を最初から作成します-そのため、アプリオリ編集および保存できるファイルはありません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
」になりますif [ ... ]
チェック内のstartx
は成功します(ですが、単純なif []
が違いを生む理由がわかりません)!私の場合、そのstartx
コマンドはLXDE
とopenbox
の両方を開始するため、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