Quantcast
Channel: クロの思考ノート
Viewing all articles
Browse latest Browse all 226

Debian 8 JessieをCUIで起動する方法

$
0
0

こんにちは。今回のテーマは『Debian 8 JessieをCUIで起動する方法』です。システムを起動する度にディスプレイマネージャーが起動するのは最近のシステムでは当然のようになりましたが、CUIモードで起動したい方も結構多いのではないでしょうか?今回はSystemdを導入したことで話題となったDebian 8 Jessieを取り上げます。
【関連記事】
Fedora 21をCUIで起動する方法


【目次】
DebianのSystemdは他のシステムとちょっとちがう
DebianをCUI起動する方法
補足説明

DebianのSystemdは他のシステムとちょっとちがう

Systemctlではサービスを無効化できないものもある

これまでSystemdの導入されているシステムをCUI起動する方法としてはsystemctlでディスプレイマネージャーをdsiableすれば良いとしてきました。しかし、Debian Jessieではそう簡単にはいかないのです。結論から言えばsystemctlではディスプレイマネージャー出来ませんでした。

Systemctlはupdate-rc.dを起動するトリガー

後半で少々詳しく扱いますが、ディスプレイマネージャーに関してはSystemctlはSysVinitのスクリプトであるupdate-rc.dを起動するトリガーとして機能しています。よってSystemdでdisableしてもgdm3.serviceは無効化されません。

DebianをCUI起動する方法

さて、またしても前置きが長くなりましたが、ここからが本題です。Systemd-sysvの導入によってinittabファイルでrunlevelが設定できなくなったわけなので、起動時のディスプレイマネージャーの起動を止めることでCUI起動に切り替えます。以下の方法1もしくは方法2のどちらかを行えば良いと思います。個人的には方法1がオススメです。

方法1:default-display-managerを編集する(推奨)

vimやnano等のエディタで/etc/X11/default-display-managerを開きます。sudoコマンドについてはDebianやFedoraでsudoコマンドを使う

$ sudo vim /etc/X11/default-display-manager

お使いのディスプレイマネージャー(gdm3,kdm,lightdm等)が記載されていると思いますので、以下のようにコメントアウトします。
編集例

# /usr/sbin/gdm3

方法2:gdm.serviceを無効化する

※方法1を行っていれば以下の操作は不要です。
前述の通りsystemctlからはgdm3のサービスは変更できません。よって、systemdが呼び出しているgdm.serviceを直接無効化します。誤って削除しないようにご注意下さい。元に戻したい場合はファイル名を戻せばOKです。

$ cd /lib/systemd/system/
$ sudo mv gdm.service gdm.service.back

再起動するとCUI起動に変わっているはずです。
01

補足説明

本題と外れるので興味ある方のみどうぞ
通常のSystemdがinitシステムの場合systemctlでenableすると/usr/lib/systemd/以下の.serviceファイルを/etc/systemd/以下の各ディレクトリにリンクを貼ることで有効にします。もちろん、Debian 8でもこのように管理されているサービスもあります。しかしディスプレイマネージャー等多くのサービスについてはSytemctlはかつてのSysVinit方式でupdate-rc.dのトリガーとして機能しています。

Systemctlは何をしているのか?

試しにsytemctlを使ってgdm3をenableにしてみます。

$ sudo systemctl enable gdm3

そして以下のコマンドで/etc/rc2.dのgdm3のリンクを見てみます。

$ ls -l /etc/rc2.d/ | grep gdm3

04

今度は反対にsystemctlでdisableして同様にリンクを見てみます。

$ sudo systemctl disable gdm3
$ ls -l /etc/rc2.d/ | grep gdm3

03

頭文字がSからKに変わりました。ご存知の方も多いとは思いますが先頭が”S”で始まる物が起動(Start)、”K”で始まる物が停止(Kill)となります。結局のところSystemctlは/usr/sbin/update-rc.dというPerlで書かれたスクリプトを実行していたのです。

このupdate-rc.dは/etc/init.d/以下のスクリプトを/etc/rc[0-6].d/以下にリンクを生成したり削除する役割をします。まさにSysVinitですね。Debian 8で導入されたSystemdはSysVinitを包括する形でSystemdのように使えるinitシステムと捉えた方が良いかも知れません。(間違ってたらごめんなさい。)

さて、Systemctlがupdate-rc.dを操作することはわかったのですが、このSysVinit方式の管理はディスプレイマネージャーの起動・停止には有効なのでしょうか?試しに以下コマンドを実行して/etc/rc[0-6].d/からgdm3のリンクを削除してみましたが、やはりGDMは起動しました。

$ sudo update-rc.d gdm3 remove

なぜGDMは起動するのか?

なぜ、/etc/rc[0-6].dからリンクを削除してもgdmは起動したのでしょうか?実はgdm3およびgdmのサービスは/lib/systemd/systemに存在し、そこから呼び出されています。このサービスはsystemctlでは操作されないようです。

最後に

CUI起動に切り替えようと思った時にはSystemctlで簡単に設定出来ると思っていたのですが、意外に手こずってしまいました。DebianはSysVinitを包括する形でSystemdへ移行したのだなあと開発陣の苦労を垣間見た気がしました。

Sponsored Link



Viewing all articles
Browse latest Browse all 226

Trending Articles