読者です 読者をやめる 読者になる 読者になる

マダカレークッテナイデショー

お仕事SE、趣味ドラム

Raspberry pi で VNCServerをchkconfigに登録してもうまく起動時に起動できない

前提

他のサイトを参考に、VNCServerの導入自体は完了している。

  • /etc/init.d/vncbootのchkconfigへの登録はOK
  • 実行属性の変更もOK
  • /etc/init.d/vncboot start を直接実行すると問題ない

対処

ログを調査

$ less /var/log/syslog | grep vnc

Apr 30 13:56:41 raspberrypi systemd[2189]: Failed at step EXEC spawning /etc/init.d/vncboot: Exec format error Apr 30 13:56:41 raspberrypi systemd[1]: vncboot.service: control process exited, code=exited status=203 Apr 30 13:56:41 raspberrypi systemd[1]: Unit vncboot.service entered failed state.

そもそもうまく実行できてないようである

スクリプトを修正

他のinit.d以下のスクリプトと比較して、以下の2点を修正

  • #! /bin/sh -> #!/bin/sh に変更(半角スペース除去)
  • #!/bin/sh をファイル先頭に持ってくる

上記2点を修正。後者だけでも良いかもしれないが、確認はしていない。 調べてたら、改行コードなどで引っかかる場合もあるらしい。Linuxあるあるなのか。これで解決する理由もよくわかってない。つらい。

参考

Exec format error で検索したときの以下が参考になった(直接的には関係ないが)

MemoIt: sudoではまった

追記

bashのシェルスクリプトの記述に関してメモ等 - Qiita
Linux/Unixでは、ファイルの先頭2バイトが「#!」であった場合は、その後に記述されている別のコマンドを実行することになります。」 とのこと。そもそもスクリプト自体はコピペしてきたものだけど、他の人はそれでも実行できてたのだろうか。この感じだと、実行できなさそうだが、、、
なにはともあれこれからは気にかけよう。