0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GUIを無効にしてChromiumをKIOSKモードで起動する方法をChatGPTに聞きながら実装してみた

Last updated at Posted at 2023-02-26

仕事でUbuntu22.04にChromiumをUI表示のブラウザとして、kioskモードで使用する必要があったがやり方がわからなかったので調査することにした。

いつも通りブラウザで検索しながら調べていくこともできたが、最近流行っているChatGPTの能力のテストも兼ねて、ChatGPTに質問しながら調べてみることにした。

まずはダイレクト(かつ大雑把)に聞いてみることにする。

image.png

image.png

image.png

いきなりドンピシャそうな答えが返ってきた。しかしながら、これだとstartapp.shを起動時に呼ぶ処理が書かれていないので、ログイン時にXを起動して終わりな気がする。そこでその通り聞いてみた。

image.png

cronをつかう方法を提示してきた。これならまあ起動するかもしれない。そういえば、自分はzshを使っているので、bashではなくzshを使う方法を提示して欲しい。そこで下記の質問をしてみた。

image.png

「zsh用」が「zshよう」になってしまった。でもChatGPTならその程度なら全然誤解しないらしい。先ほどはcronを使用する方法を提案してきたが、 Xのinitファイル(.xinitrc)にchromiumブラウザの起動コマンドを追記するする方法を提案してきた。なるほど、それでも同じように起動しそうである。

試しに.zshrcファイルに追記してターミナルを起動してみたところ、zsh: = not foundというエラーが返ってきた。よくみると

if [ "$(tty)" == "/dev/tty1" ]; then
    startx
fi

と書いており、構文的に==ではなく=である必要がある。
とりあえずエラーメッセージをそのまま雑に返してみた。

image.png

ん?逆じゃない?と思ったのでその通り返答してみた。

image.png

調べてみるとzshでは==を使用する場合は'=='と囲う必要があるとのことで、zshの仕様らしい(ご参考)
つまりChatGPTは間違っているのだが、その辺りは適当に忖度して進めることにする。

そういえば、これまでの設定だとGUIが起動時に起動してしまい、希望の動作にならない。そのことを伝えてみる。

image.png

Ubuntuのバージョンをしっかり伝えてなかったせいかもしれないが、使用しているUbuntu22.04はlightdmではなくgdm3を使用している。でもまぁその辺りも忖度して、sudo systemctl disable gdm3でgdm3が起動しなくなるようにする。

当たり前だが、dgm3をdisableしたら再起動時にGUIが起動しなくなってしまった。復旧方法はsudo systemctl enable gdm3だが、あえて質問してみた。

image.png

あれ、全然gdm3関係ないやん..と思ったので、無視することにした。
またsudo systemctl enable gdm3を実行したら

Synchronizing state of gdm3.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable gdm3
The unit files have no installation config (WantedBy=, RequiredBy=, Also=,
Alias= settings in the [Install] section, and DefaultInstance= for template
units). This means they are not meant to be enabled using systemctl.
 
Possible reasons for having this kind of units are:
• A unit may be statically enabled by being symlinked from another unit's
  .wants/ or .requires/ directory.
• A unit's purpose may be to act as a helper for some other unit which has
  a requirement dependency on it.
• A unit may be started when needed via activation (socket, path, timer,
  D-Bus, udev, scripted systemctl call, ...).
• In case of template units, the unit is meant to be enabled with some
  instance name specified.

とでてしまったので、下記を参考に修正して起動できるようにした。

結局、自動起動はこれまでの方法でできそう(詳細は追記予定)

ChatGPTを使用した感想。

今回はWebでググるより簡単に調べられるんじゃないか?と思いChatGPTを使用してみたが、全くChatGPTの言う通りにすると実現できるかというとそうでもないことがわかった。しかしながら、大筋では正しかったので、Web検索を併用しつつ間違いなどに騙されないように注意すればそこそこ使えるかもしれない。結局、使うにはある程度リテラシーが必要そうである。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?