startxコマンドは何をしますか?


18

Ubuntuについて読んでいると、次の文が見つかりました。

ディスプレイマネージャがデフォルトのランレベルでデフォルトで起動されない場合、テキストモードコンソールにログオンした後、コマンドラインからstartxを実行することにより、Xを別の方法で起動できます。

デフォルトのランレベルになるとはどういう意味ですか?そして、私の端末でこれを試したときに、私はこれを得ました:

anupam@JAZZ:~$ startx

X: user not authorized to run the X server, aborting.
xinit: giving up
xinit: unable to connect to X server: Connection refused
xinit: server error

startxを実行しましたが、あなたと同じエラーが表示されたので、sudoを実行しました。それが私をルートアカウントにログインさせました。ユーザーに戻るために行ったのは、rootからログアウトすることでした。

回答:


25

むかしむかし(1)、コンピューターのメモリがキロバイト単位で、ディスクがメガバイト単位で測定されたとき、グラフィックインターフェイスを常に実行することは有害であると考えられていました。

ほとんどのUnixコンピューターは、マルチユーザー環境で科学的な計算とシミュレーションに使用され、それらで実行されているグラフィックインターフェイスは、使用可能なメモリとCPU電力を削減します。

したがって、グラフィカルインターフェイスが必要な場合は、startx(2)で開始しました。

startx基本的にはXserver(グラフィカルな「ドライバー」)とその上で実行されるコマンド(通常はウィンドウマネージャー)を実行します。既定では、実行されるコマンドは~/.xinitrcホームディレクトリ内のファイル、またはそれ以外の一般的なシステムファイルにあります。

現代のシステムは、常にグラフィカルシステムを常時実行していると考えられているため、おそらく長い間動作を確認した人はいないでしょうstartx

あなたが実験して古き良き時代を感じたいなら、最良のことは次のことをすることです:

A)Xnestおよびをインストールしfvwmます。Xnestは、通常のシステムでウィンドウとして開くサーバーの一種であるサーバー内グラフィックサーバーです。Fvwmは非常にシンプルなウィンドウマネージャーで、当時非常に人気がありました。古いpixmapフォントも必要になります。

sudo apt-get install xnest fvwm 
sudo apt-get install xfonts-100dpi xfonts-100dpi-transcoded xfonts-75dpi-transcoded xfonts-75dpi 

B)このファイルをどこかに、たとえばあなたのホームディレクトリに書いて呼び出します~/test

#!/bin/bash 
#
xterm & 
exec fvwm2

C)実行(注意:startx通常は、最初にクライアントコマンド、次にダブルダッシュ、サーバーコマンドの順に実行されます。前述したように、ほとんどの新しいシステムにはstartx単独で賢明なデフォルトはありません。)

cd ~
startx ~/test -- /usr/bin/Xnest -ac :1 -geometry 800x600

...そして、80iesワークステーション画面があります:

ここに画像の説明を入力してください

(「Xnest」デスクトップをクリックしてメニューを表示できます)。

...そして本当に冒険したいなら、Ctrl-Alt-F1でログインしてログインし、別の仮想コンソールでネイティブセッションを開始できます(他の回答を読んでください)。

startx ~/test 

通常はCtrl-Alt-F8で開きます。

注意:最新のデスクトップ環境は、同じユーザーが2つの異なるコンソールで同時に実行するようには設計されていません。そのため、この実験を行うときにgnome-shellunityまたは現代的なものを使用したり、構成を台無しにしたりしないでください。


脚注:

(1)ここで1980-90年頃について話す。

(2)たとえば、256kのRAMを搭載したラップトップがありました。(B&W!)グラフィックインターフェースでは痛々しいほど遅くなりましたが、コンソールではきびきびと動きました。そのため、ほとんどの作業(編集CLaTeXおよび同様のファイル)をコンソールモードで行い、本当に必要な場合にのみグラフィック環境に切り替えました。


4
Rmano、偉大な説明は完全にそれを持って... @ありがとう
ラザロ

9

startx ログイン画面と単なるASCIIコンソール(テキストセッション)以外のものを表示するxsessionまたはグラフィカルインターフェイスを起動します。

xsessionがすでに開始されており、tty7のxsession内からコマンドを実行しようとしているため、このエラーが発生しています。

tty7は、ctrl+ alt+ f7(デフォルトのxsession)にあるユーザーインターフェイスです。

tty1は、ctrl+ alt+にあるユーザーインターフェイスですf1

tty2はに存在するユーザインタフェースでありますctrl+ alt+ f2。。。等々。

tty1-tty6はテキストセッションであり、これらの画面のいずれかでユーザー名とパスワードを使用してログインできます。ログイン後、コマンドstartxを実行できます。xsessionがまだ実行されていない場合はtty7で起動し、tty7が既にxsessionを実行している場合はtty8で起動します。


実行レベル:

実行レベル0停止-システムをシャットダウンします。

実行レベル1シングルユーザーモード-管理タスクのモード。

実行レベル2ネットワーク付きグラフィカルマルチユーザー-システムを正常に起動します。

実行レベル3-5未使用ですが、実行レベル2と同じ構成

実行レベル6再起動-システムを再起動します。

ランレベルという用語は、Unix System Vスタイルの初期化を実装するコンピューターオペレーティングシステムのいずれかの操作モードを指します。従来、ゼロから6までの番号が付けられた7つのランレベルが存在します。ただし、0から9 [要出典]までの10まで使用できます。Sは、いずれかのレベルの同義語として使用される場合があります。一つだけ、「ランレベルが」ブート時に実行される-実行レベルが順次実行されていない、すなわちいずれかのランレベル2または3 4が実行され、その後、2ない3その後、4 - en.wikipedia.org/wiki/Runlevel


ありがとうmchidそれは私を大いに助けてくれました
ラザロ14

しかし、tty1にログインして$ startxを実行すると、起動バーやその他のオプションのないデスクトップウィンドウが表示されました... (ここでの唯一のデスクトップなど)のstartxのオプション
ラザロ

1
@jazzzこれがデフォルトのx環境です。ほとんどの場合、複数のデスクトップ環境がインストールされています。あなたのようなコマンドを実行できるようにするには、端末を取得するために、CTRL + Tにできるはずであるunitygnome-shell --replace、あるいはgnome-panelまたはをmetacity --replace
mchid 14

@jazzzまた、この回答に同意する場合は、左側のアイコンをクリックして閉じてください。ありがとう!
mchid 14

申し訳ありませんが、これに関する別のクエリに少し遅れています---上記のようにCtrl + Alt + F8で取得した新しいウィンドウはワークスペースに似ていますか?
ラザロ

4

単に別のttyを意味します。

リンクされた質問を引用する:

デフォルトでは、Ubuntuには7つのttyがあります。

1-6コマンドラインのみで7、Xセッション(通常のグラフィカルデスクトップ)を実行します。

それらにアクセスするには、次のキーボードショートカットを使用します:Ctrl+ Alt+F1

F1必要な端末にアクセスするためにF1-F6に変更します)

Xセッション(通常のデスクトップ)に戻るには、次を使用します:Ctrl+ Alt+F7

after logging on to a text-mode console 別のttyにログインしてコマンドを入力するだけです:

startx

1

Rmanoが指摘しているように、startxは非常に古いアプローチです。これを使用したとき、X11バイナリはsetuid rootでインストールされていました。

VMでこれを試してみましたが、実際、startxデフォルトでは、説明どおりに失敗します。chmod u+s /usr/lib/xorg/Xorgそれを修正します。

setuid rootにすることはお勧めしませんXorg。世界は、Good Reasonの世界から遠ざかりました。しかし、使い捨てのVMで遊んでいるのであれば、それが機能する方法startxです。


1

QEMU + Buildrootの最小の例

何かが何をするのかを学ぶ私のお気に入りの方法は、それを実行する最小限の例を作ることです。

Ubuntuでは、1秒startxが現在のデスクトップと競合する可能性があるため、これは困難です。

/ubuntu//a/519164/52975が提案しますXnestが、QEMU + Buildrootを使用すると、さらに最小限に抑え、X11のみがインストールされたマイクロディストリビューションを作成できます。

これにより、何が起こっているかを理解しやすくなります。

ディストリビューションの作成については、https://unix.stackexchange.com/a/306116/32558で説明しています。

QEMUでイメージを実行したら、TTYシェルで起動します。

それからあなたがするとき:

root
startx

X11 GUIを開始します。

ここに画像の説明を入力してください

次に、startxそのディストリビューション内のソースを見てみましょう。これは単なるシェルスクリプトです。

これは単純なラッパー/usr/bin/xinitであり、に渡さ/etc/X11/xinit/xinitrcxinitます。

を開く/etc/X11/xinit/xinitrcと、次の行が含まれています。

twm &
xclock -geometry 50x50-1+1 &
xterm -geometry 80x50+494+51 &
xterm -geometry 80x20+494-0 &

起動することがわかります:

  • twm:非常にシンプルで古いウィンドウマネージャー
  • xclockそしてxterm、私たちは、画面に表示され

以下のための/usr/bin/xinit私たちが行うことができます:

man xinit

それは言う:

コマンドラインで特定のクライアントプログラムが指定されていない場合、xinitは.xinitrcと呼ばれるユーザーのホームディレクトリ内のファイルを探し、クライアントプログラムを起動するシェルスクリプトとして実行します。そのようなファイルが存在しない場合、xinitはデフォルトとして以下を使用します。

xterm  -geometry  +1+1  -n  login  -display  :0

コマンドラインで特定のサーバープログラムが指定されていない場合、xinitは.xserverrcというユーザーのホームディレクトリでファイルを探し、サーバーを起動するシェルスクリプトとして実行します。そのようなファイルが存在しない場合、xinitはデフォルトとして以下を使用します。

X  :0
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.