忍者ブログ
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Fedora19をvirt-installでKVM上にインストールしたら、コンソールが表示されなかった。しかもgrub2に代わってコンソール設定も迷ったので対処方法のメモ。

(1)/etc/default/grubに以下の行を追加する。
GRUB_TERMINAL_OUTPUT=serial
GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1"
(2)grub.cfgの再作成
# grub2-mkconfig -o /boot/grub2/grub.cfg
GRUB_TERMINAL_OUTPUTがないと、シリアルに関する設定がgrub.cfgに入らないところで、少し戸惑った。
PR
仕事で使ってるサーバの大半はCentOSなんですが、たまにFedoraが混じってたりします。
Fedoraの場合、サービス管理にはsystemdを経由しますが、こいつがたまに思った通りに動いてくれません。

CentOS用に作ったkyototycoonのRPMパッケージを、Fedora用にパッケージし直し、いざ起動するとすぐ停止してしまいます。
kyototycoonのログを見ると、起動した形跡はあるが、直後にシャットダウンされている模様。
起動直後に、ステータスみると確かに殺されている。

# /etc/init.d/ktserver status
ktserver.service - LSB: KyotoTycoon Server
          Loaded: loaded (/etc/rc.d/init.d/ktserver)
          Active: deactivating (stop) since Fri, 07 Dec 2012 12:03:05 +0900; 1s ago
         Process: 32573 ExecStart=/etc/rc.d/init.d/ktserver start (code=exited, status=0/SUCCESS)
        Main PID: 32578 (code=exited, status=0/SUCCESS); Control: 32581 (ktserver)
          CGroup: name=systemd:/system/ktserver.service
                  t 32580 /usr/bin/ktserver -port 1978 -dmn -li -log /var/log/ktserver.log -pid /var/run/ktserver.pid -th 64 -sid 2 -mhost taudience01.hogehoge.com -mport 1978 -rts /data/ktser...
                  t 32581 /bin/bash /etc/rc.d/init.d/ktserver stop
                  m 32650 sleep 1
同じパッケージを入れている別のサーバではおきなかったりして、今のところ原因不明です。

とりあえず回避方法として、systedを経由せずに起動させています。
やり方は簡単で、起動スクリプト中に以下のシェル変数を定義すればOKです。

【変数】
  SYSTEMCTL_SKIP_REDIRECT=yes

値は便宜上yesにしましたが、何でもOKです。
 
fedora15になってサービス管理がガラッとかわり、/etc/init.d/の下の起動スクリプトではなく、systemctlコマンドでサービスの操作を行うようになった。
今回、jettyをサービスとしてfedoraに登録した際に手間取ったので、ここにメモしておく。
使用したjettyのバージョンは、jetty-hightide-8.1.3.v20120416

まず、fedora15になってサービスに関する情報は、/lib/systemd/system 配下に集められた。
サービスを登録する場合、今までどおり起動スクリプトを/etc/init.d配下に置き、chkconfig --addで登録することも可能だが、せっかくだからsystemdの作法に従って登録したい。
そのためには、以下のような設定ファイルを書かなければいけない。

【jetty.service】
[Unit]
Description=Jetty Application Containar

[Service]
Type=simple
EnvironmentFile=-/opt/jetty/etc/jetty-env
PIDFile=/var/run/jetty.pid
User=jetty
Group=jetty
ExecStart=/usr/bin/java $RUN_ARGS

StandardOutput=null

[Install]
WantedBy=multi-user.target

そのうえで、systemctl --system daemon-reload をすれば完了。


上の設定ファイルで、EnvironmentFileにより環境変数を定義したファイルを読み込んでいるが、環境変数はExecStartでの定義にのみ使えるようだ。
User、Groupで使ってみたら、エラーになった。

なおsystemdの設定ファイルに関する情報はまだまだ少なく、結局man systemd.serviceと既存の設定ファイルが一番役に立った。



Copyright (C) 2024 技ブロ All Rights Reserved.
Photo by 戦場に猫 Template Design by kaie
忍者ブログ [PR]