質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.61%

  • Linux

    3648questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

LinuxをGUIなしで起動するには

受付中

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 2,851

z_9

score 15

Linuxに関しては初心者レベルです。

BeagleBone BlackというボードにLinux(debian)が入っていて環境を構築しているところなのですが、デフォルトでは起動と同時にGUIデスクトップ(LXDE?)が起動してしまいます。
これをコンソールのログインプロンプトのところで止めたいのですが、どうするのが正しいやり方ですか?

カーネル起動後はsystemdに制御が移行していることを知り、defatult.targetユニットの設定で起動していると知りました。
実機で調べてみると、default.targetはgraphical.targetにln -sされていたので、これをmulti-user.targetに変えればいいのだろうと思って、
/etc/systemd/system/にdefault.target-->multi-user.targetとなるようなシンボリックリンクを張ってみたのですが、
リブートするとやはりGUIで起動してしまいます。

また、起動後にsystemctl list-unit-files --type=targetでユニットの状態を調べてみると、
graphical.targetもmulti-user.targetもdisableとなっていて、enableになっているのはremote-fs.targetだけでした。
どうもdefault.targetの設定は機能していないようなのですが、どういう理由が考えられますか?また、誰がremote-fs.targetを起動しているのでしょうか?

PID=1はsystemdになっているので、initではなくsystemdで起動していることは間違いなさそうです。
また、debianはwheezyのようです。カーネルは3.8系でした。

その後の調査で、カーネルの起動パラメータ(bootargs)に"text"を付け加えるとGUIにならずに、目的のコンソールログインで止まってくれることが分かりました。
しかし、このtextパラメータがどういう意味で作用を持つのか、そしてsystemdでの起動レベル(target)との関連性がよくわからないので、そのあたりもご教示いただけるとありがたいです。

よろしくおねがいします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

+1

どのターゲットで起動するかは以下のコマンドで調べることができます。
# systemctl get-default
graphical.target

/etc/systemd/system/default.target が存在しない場合、/usr/lib/systemd/system/default.target (graphical.target へのシンボリックリンク)を見るのだと思います。

起動するターゲットを変更するには、手動で /etc/systemd/system/default.target にシンボリックリンクを作成してもいいですが、コマンドでもできます。
# systemctl set-default  multi-user.target
ln -s '/usr/lib/systemd/system/multi-user.target' '/etc/systemd/system/default.target'
この設定をしても graphical.target で起動するということですが、リンク先の multi-user.target は /usr/lib/systemd/system/multi-user.target になっていますでしょうか。

起動パラメータの "text" は知らないのですが、"systemd.unit=multi-user.target" や "3" (以前の runlevel 指定)を設定することで、起動するターゲットを変更することができます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/05/25 18:56

    アドバイス、ありがとうございます。

    実は、systemctlでget-default / set-defaultが使えないのです。systemctl get-default[ENTER]すると、Unknown operation get-defaultと出ます。manページ見ても、確かにget-defaultはありません。
    systemctl --version[ENTER]とすると、systemd 44と出ます。x86上のUbuntuではsystemd 217と出るので、かなり古いようです。apt-getしても、既に最新パッケージが入っているようなので、とりあえずget_defaultの使用は断念しています。

    > この設定をしても graphical.target で起動するということですが、リンク先の multi-user.target は /usr/lib/systemd/system/multi-user.target になっていますでしょうか。

    なっていますが、少しパスが違います。ネットの情報では、/usr/lib/systemd/system/にシステム定義のunitが格納されているようですが、debianでは/lib/systemd/system/にあります。ちなみにUbuntuでも後者のパスの方にunit定義があります。
    また、get-defaultが使えないので"graphical.target で起動"しているかどうかは定かではないと考えています。いま言えることは、
    - デスクトップGUIが起動してしまう
    - systemctl list-unit-filesで見るとgraphical.targetはdisabled。でもGUI起動
    - /etc/systemd/system/default.target-->/lib/systemd/system/multi-user.targetにシンボリックリンクしてもmulti-user.targetはenabledにならず、GUI起動
    など訳の分からない状態です。そもそもdefault.targetが機能しているのかどうかわからない状態です。

    デフォルトで設定されているdefault.targetは、
    > root@beaglebone:/lib/systemd/system# ls -la default.target
    > lrwxrwxrwx 1 root root 16 Oct 9 2013 default.target -> graphical.target
    となっていて、graphical.targetの中身は、
    > [Unit]
    > Description=Graphical Interface
    > Requires=multi-user.target
    > After=multi-user.target
    > Conflicts=rescue.target
    > AllowIsolate=yes
    >
    > [Install]
    > Alias=default.target
    こんな感じでした。Unitの書き方はまだまだ完全に理解できていないのですが、これを見る限りではgraphical.targetに固有の起動条件・設定はなくて、ほとんどmulti-user.targetと同じなのでは?(=multi-user.targetにしてもGUI起動<-->CUI起動は変わらないのでは?)と思うのですが・・・

    今日、ネットを調べまくったところでは、
    - debian Wheezyでは、完全にsystemdには移行しておらず、一部initスクリプトで起動している部分がある
    という情報があり、カーネルパラメータにtextを追加するのがひとつの対応方法であるらしいということです。

    他に実験で分かったことは、カーネルパラメータにtextを追加しなくても、systemctl disable lightdm.serviceでディスプレイマネージャを切ればCUIで起動してくれることが分かりました。ただし、lightdm.serviceファイル自体はどこにも存在せず悩みましたが、/etc/init.d/lightdmスクリプトのLSBヘッダから自動生成されたserviceユニットであることは判明しました。
    しかし、systemdがどのような起動ツリーをたどった結果lightdmスクリプトにたどり着くのかは不明なままです。この点について、どこを確認すればよいかをご教示いただけるとありがたいです。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Linux

    3648questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。