hlds.rying.net/tips/hlds_linux

LinuxでCS1.6鯖を立てる

必要なもの

  • [構築環境]を満たす性能を持った機体
  • Linux系のOS
  • 基礎的なLinuxの知識

LinuxのOSの選び方

ここではUbuntuを使っていきます。僕は好んでCentOS 5.xを使ってます。
基本的にLinuxのOSは色々あるので、FedoraCoreなり、Vine Linuxとかでもいいと思います。
RealTimeカーネルを手軽に導入したいなら、Ubuntuが一番気楽にできるのも理由です。

OSの導入

Ubuntuは以下からダウンロードできます。今回導入したのはServer版の10.04.1ですが、最新版でも多分問題ありません。
http://www.ubuntu.com/server/get-ubuntu/download
ディスクイメージが手に入るので、CDかDVDに焼きましょう。

作成したディスクを使ってUbuntuを導入します。
Ubuntuのセットアップ作業をする際にユーザー名とパスワードを指定します。
ログイン時に使うので覚えておきます。

今回は自分のアカウント内に、hldsというディレクトリを作り、そこにhldsを導入します。
/home/アカウント名/hlds/cstrike というパスとなるでしょう。

LinuxにOpenSSH(server)を入れてWindows+Poderosaなどでリモートアクセスが出来る環境を作るとラクで良いです。
Windows上でコマンドをコピペするだけで鯖が出来ると思います。
なので、以下のコマンドをやっておきます。(リモートアクセスを使わないなら必要ないです)

sudo apt-get update
sudo apt-get install openssh-server
sudo apt-get install vim

sudoをやった時にでるパスワード確認は、最初に設定したパスワードと同じです。
SSH鯖はapt-getと同時にポート開放をやってくれます。
デフォルトで入っているviはviもどきなので、お勧めしません。生粋のviユーザでもない限りvimがいいです。

HLDSの導入

この辺はどのLinuxでも同じ手順のはずです。
サーバを起動しログインしたら早速HLDSを導入します。

cd ~
mkdir hlds
cd hlds
wget http://storefront.steampowered.com/download/hldsupdatetool.bin
chmod +x hldsupdatetool.bin
./hldsupdatetool.bin

hldsupdatetool.binは圧縮されており、解凍にgunzipが必要になります。(Ubuntuには入ってるのでこのままでOK)
解凍しても大丈夫か?と聞いてくるので、[y]で答えます。

./steam
./steam -command update -game cstrike -dir .

1度目の実行でsteamのアップデート、2度目の実行で実際にCS1.6の鯖データをダウンロードします。

cd hlds
./hlds_run -console -game cstrike -port 27015 +map de_dust2 +maxplayers 16 

とやって、サーバが立ち上がったら導入は完了です。quitするか、CTRL+Cで終了できます。

ポート開放

外部に公開するときは、ポートを開放する必要があります。
大体はルータのポートマッピングが必要です。(指定したportに対するアクセスはどのマシンへのアクセスかを決める作業)
この辺はルータによって異なるので、"(ルータの型番名) ポート開放" なりで調べると大体出てくると思います

Ubuntuには標準のファイアウォールがあります。使う場合は以下のようにしてポートを開放します。

sudo ufw enable
sudo ufw allow 27015/udp

逆に無効にするには、

sudo ufw disable

とやります。詳しくはutwコマンドについて調べてください。

起動スクリプト

いちいち起動するのは面倒な事です。
簡単な起動/停止するためのスクリプトを書いておきます。構成は以下の感じになるでしょう

/home/アカウント名/
          ├hlds.sh // 起動スクリプト
          └hlds/cstrike/... // 鯖本体

こちらからダウンロードできます。http://hlds.rying.net/arc/hlds.sh
中身の一部は変更する必要があるかもしれません。使い方は以下になります。

  • ./hlds.sh start ... 起動
  • ./hlds.sh stop ... 停止
  • ./hlds.sh restart ... 再起動

起動スクリプトで使った起動コマンドについて

起動コマンドの意味を簡単に説明します。

  • -console ... コンソールモードで起動します。
  • -game cstrike ... サーバとして起動するゲームを指定します(cstrike=CS1.6)
  • +map de_dust2 ... +で始まるコマンドはserver.cfgにも書けます。この場合、初期mapをde_dust2として起動します。
  • +maxplayers 16 ... 16人まで参加できるようになります。(HLTV枠含める)
  • -port 27015 ... UDPポートに27015番を使用して、サーバを公開します。
  • -pingboost 3 ... 1,2,3が指定でき、応答性能を高めますが、数値が大きくなるほど負荷は高まります。
  • -sys_ticrate 1000 ... server.cfgで設定できるsys_ticrateとは異なる設定です。-pingboost 3を使うとゲーム内の時間経過に問題が発生するのでこれで1000を指定しておきます。
  • -binary ./hlds_i686 ... 起動バイナリにi686に最適化されたものを使います。最近のIntel系であれば使えます。AMD系用にhlds_amdがありますが不明です。
  • -autoupdate ... 起動時にサーバのアップデートを行います。
  • -nomaster ... 起動時にサーバをマスターサーバへ登録しなくなります。フレンドからも見えなくなります。
  • -secure ... VACを有効にします。
  • -tos ... Type of Serviceの略?であれば、パケットの転送時の優先度を上げるんだと思う。

起動スクリプトで自動起動

サーバ起動時に自動的に起動できるようにします。
/etc/rc.local を編集するのですが、僕は本当にコレでいいのか不安を持ってます。

#!/bin/sh

cd /home/アカウント名
sudo -u アカウント名 ./hlds.sh start
cd ~

exit 0

確認するにはsudo reboot等を行った後に、自動的に起動されていればOKです。

RealTimeカーネルを導入

レスポンスの改善を期待できます。パッケージから導入するとラクです。

sudo apt-get install linux-rt

デフォルトでは現行のカーネルを使ってしまうので、デフォルトを切り替える。
/boot/grub/grub.cfgが、ブート時に読み込まれるファイル。
リードオンリーになってるので、書き込み許可を与えておく

sudo chmod +w /boot/grub/grub.cfg

編集すると、中身の下のほうに、"menuentry 'Ubuntu, with Linux 2.6.31-11-rt' ...."とある。
"Linux 2....-rt" がRealTimeカーネルの目印です。
menuentryの数だけ起動時に列挙される。今回はLinux 2.6.31-11-rtが3番目のmenuentryにあった。
上から0,1,2...と数えるので、ここでは3番目は"2"となるので以下ような箇所を2に書き換える。

 set default="2"

書き換えたら保存して、書き込み許可を剥奪し、ちゃんとリードオンリーに戻す。

sudo chmod -w /boot/grub/grub.cfg

再起動は sudo reboot

2009 - 2010 Ryozi