Jetson Nanoでrunlevelを変えてGUI起動→CLI起動にする

投稿日:2024年2月25日
最終更新日:2024年2月25日

Jetson NanoをCLI起動にしてCPUやメモリの使用率を減らす

今のところ私はJetson Nanoを使う時は、別のPCからSSH接続してCLIで使っており、GUIで使うことはあまりない。ただ、デフォルトではGUIで起動しているので、どのくらいCPUとかメモリ使ってるんだろう?と気になったのでpsコマンドで調べてみた。すると、gnomeだったりxorgだったり、GUIのデスクトップ環境に関するもので結構メモリを喰っている。

$ ps aux --sort -%mem
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
wakky     5885  0.2  3.9 992728 159000 ?       SLl  09:25   0:09 /usr/bin/gnome-software --gapplication-service
wakky     5555  0.6  2.6 776448 108792 ?       Ssl  09:24   0:26 /usr/bin/compiz
wakky     5572  0.0  1.6 577404 66724 ?        Ssl  09:24   0:00 /usr/lib/evolution/evolution-calendar-factory
wakky     5763  0.0  1.5 927112 63100 ?        Sl   09:24   0:00 /usr/lib/evolution/evolution-calendar-factory-subprocess --factory all --bus-name org.gnome.evolution.dataserver.Subprocess.
wakky     5634  0.0  1.4 1061600 57948 ?       Sl   09:24   0:02 nautilus-desktop
root      4173  0.0  1.4 1427200 57928 ?       Ssl  09:24   0:01 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root      4707  0.4  1.1 6496884 47116 tty1    Sl+  09:24   0:17 /usr/lib/xorg/Xorg vt1 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3
…以下略…

今のところ特に動作が重くて困っているということは無いのだが、ちょうどLinuxの勉強しているところなので、勉強がてらrunlevel(ランレベル)を変えてGUI起動→CLI起動に変更してみる。runlevelは0~6まであるのだが、詳しくは解説しないので以下の記事などを参照してください。

https://qiita.com/miyuki_samitani/items/bb2505209a81cfdee274

今回はrunlevelをデフォルトの5(GUIログインのマルチユーザーモード)から3(CLIログインのマルチユーザーモード)に変更する。

※注意:runlevelの設定を誤るとシステムがうまく起動しなくなる可能性があります。やる場合は自己責任でやってください。

 

実行環境

Jetson Nano
Ubuntu 18.04.6 LTS

 

runlevelを調べる

まず、現在どのrunlevelで動いているかを調べるためにはターミナルからrunlevelコマンドを実行する。実際にJetson Nanoを起動し、SSHで接続してみて実行してみる。

$ runlevel
N 5

コマンドの実行結果としては、1つ前のrunlevel、現在のrunlevelが表示されるのだが、システム起動後にrunlevelが変更されてない場合はNと表示される。現在のrunlevelは5、つまりグラフィカルモードのログインが有効になっており、GUIが起動する状態になっている。

また、システムが起動するときのデフォルトのrunlevelは以下のコマンドでシステム起動にのターゲットを確認することで調べられる。

$ systemctl get-default
graphical.target

この結果を見ると、デフォルトで起動するときのターゲットはgraphical.target、つまりrunlevel 5で起動することがわかる。

 

runlevelを変える

現在のrunlevel&デフォルトのrunlevelを調べたところで、runlevelを5から3に変えてCLIで動かすように設定してみる。

ちなみに古い文献だと/etc/inittabの設定を変える方法が紹介されているが、これはサービスマネージャーがSysVinitのシステムのお話。今回使っているUbuntu 18.04.6を含め、最近はサービスマネージャーとして大体systemdが使われているのでsystemctlコマンドで設定を変える。

 

一時的にrunlevelを変える

一時的にrunlevelを変える場合は、systemctl isolateコマンドを使う。さっそくrunlevelを3(multi-user.target)に変えてみる。

$ systemctl isolate multi-user.target

この状態でrunlevelを確認してみると、現在のrunlevelが3になっていることがわかる。

$ runlevel
5 3

runlevelをもとの5に戻したい場合は、同じコマンドでgrahpical.targetに設定し直せばOK。

$ systemctl isolate graphical.target

ただし、systemctl isolateではデフォルトのrunlevelは変更されないので、runlevelを3に設定しても、再起動すると元のrunlevel 5で起動してしまう。

 

システム起動時のデフォルトのrunlevelを変える

システム起動時のデフォルトのrunlevelを変える場合は、systemctl set-defaultコマンドを使う。

$ systemctl set-default multi-user.target

上のコマンドを実行したあと、systemctl get-defaultを実行してみると、以下のようにmulti-user.targetになっている。

$ systemctl get-default
multi-user.target

この状態で再起動してみる。

$ sudo reboot

再起動後、runlevelを調べてみると、現在のrunlevelが3になっており、CLIで起動することができている。

$ runlevel
N 3

この状態で再度psコマンドを実行して見ると、GUI関係のものが減ってかなりスッキリしている。

$ ps aux --sort -%mem
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      4173  0.0  1.4 1427200 57928 ?       Ssl  09:24   0:01 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root      3908  0.0  1.0 1483672 41172 ?       Ssl  09:24   0:01 /usr/bin/containerd
root      4180  0.0  0.4 101136 18720 ?        Ssl  09:24   0:00 /usr/sbin/nvargus-daemon
root      3613  0.0  0.4 405716 18688 ?        Ssl  09:24   0:01 /usr/sbin/NetworkManager --no-daemon
root      3601  0.0  0.4 102044 17356 ?        Ssl  09:24   0:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
root      6472  0.3  0.3 238112 12676 ?        Ssl  10:35   0:00 /usr/lib/accountsservice/accounts-daemon
whoopsie  3874  0.0  0.2 248216 12160 ?        Ssl  09:24   0:00 /usr/bin/whoopsie -f
…

ちなみに、GUI起動に戻したいときは、同様にsystemctl set-defaultコマンドを使って、デフォルトターゲットをgraphical.targetに設定すればOK。

$ systemctl set-default graphical.target

これでGUI起動からCLI起動に変更できた。


投稿者: wakky

映画と旅行が大好きなエンジニア。お酒、ゲーム、読書も好き。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください