Debianで使う


概要

5年以上もの間、24時間365日動き続けていたHDDがついに壊れたので、 HDD交換のついでに ssdlinux から Debian に変えて運用してみる。

基本的なインストール方法は、ぷらっとホームのサポートページの「Debian/GNU Linux」でHDDイメージの配布と手順の説明がある

問題点

  1. ledの点滅が止まった
    • "/dev/OBS266 LED" というデバイスは見つかるが、/usr/sbin/runled が参照しているのは /dev/segled なので起動できないようだ。debian 用の runled が別に存在するのか、udev上のシンボリックリンクのような方法で解決すればよいのか分からない。
    • /etc/udev/links.conf に何か書けばよいのだろうか
    • links.confに "L segled 'OBS266 LED'" という行を書いて再起動したら、立ち上がらなくなったので焦った。INITボタンを押しながら立ち上げて、手動でmountして元に戻した。
  2. VNC4ServerとXfceを使って軽量化したデスクトップを目指してみたが、それでも重過ぎて実用に耐えない
  3. /etc/inetd.confに何もエントリーが無いので、シリアルポートの立ち上げ時のコンソールに警告が出ると同時に文字色が黄色になったまま login プロンプトになる
    • sudo aptitude install pidentd でも入れておくことにする
  4. ntpサーバーと同期を取る前に mount されるようで、最近チェックされたのが古すぎるとなって e2fsck が実行されてしまう。
    • RTCからの読み出し(hwclock --hctosys)がうまくいっていないのかもしれない。/etc/rcS.d/S11hwclcok.sh というエントリがある。debianのrc{S012345}.dの使い方はfedora等とは異なり、起動時にまずrcS.dの内容を実行するようだ。
    • /etc/default/rcS で VERBOSE=yes として再起動してみると何か分かるかもしれない
    • e2fsckは実行せずに立ち上がった。ログが取れたが、やはり時刻を設定する前にcheckrootfsしようとしている。
    • 同じように悩んでいる人の日記を見つけた。cd /etc/rcS.d ; mv S11hwclock.sh S09hwclock.sh とすれば良いのだろうか。
  5. sambaがssdlinuxの時と挙動が異なる
    • ネットワークドライブの割り当てができない → [解決済み] Windows側でワーククループの一覧で共有名を探すときに guest のようなアカウントで接続されてしまい、ドライブ割り当てでパスワードを指定してもはじかれていたようだ。ドライブ共有を一旦解除してから割り当てたらうまくいった
    • EUCでアーカイブしていたバックアップを戻すと、日本語ファイル名が文字化けを起こす
    • EUCで書かれたファイル名を ls で表示するときは、ls --show-control-chars とする必要がある。alias jls='ls --show-control-chars' とでも ~/.bash_aliases に書いておくことにする
    • 文字化けの問題は samba 2.2→3.x での設定ファイル smb.conf の記述の違いによるもののようだ
      client code page = 932
      coding system = EUC
      となっていたのを
      dos charset = CP932
      unix charset = eucJP-ms
      display charset = CP932
      としたら日本語ファイル名が化けなくなった
    • Samba 2 日本語版の日本語ファイル名の Samba 3 への移行方法』に紹介されている方法でファイル名をUTF-8に変換すべきかもしれない、と思ったが『samba経由の日本語ファイル名をUTF-8化 - エンジニアパパの雑記帖』等を見ると、結構ハマる可能性があるのでこのままでもいいような気もしてきた。
  6. kernelでfuseが有効になっていないので、sshfs等が使えない
  7. baffaloのNASとのファイルのやりとりにftp clientを使う必要があるが、apt-get install ftp で入れたものは、途中経過等を一切表示しないシンプルなもの。ncftpを入れてみたが、こちらはコマンドライン版にしては高機能。fedora等で使われているftp clientはどれなのか不明だ。inetutils-ftp というパッケージを入れてみたが、途中経過は表示されなかった。
  8. localeが無いと警告が多くなってきたので、aptitude install locales ; dpkg-reconfigure locales で en_US.UTF-8 と ja_JP.UFT-8 と ja_JP.EUC を加えた。CPUパワーが足りないのかlocaledefの処理に20分程度かかった。デフォルトは en_US.UTF-8にしておくことにする。

多段接続

sshを多段しないと到達できないホストと rsync や scp 等でファイルをやり取りする必要があるときは、以下のようにすればよい。

たとえば、foo.example2.jp に接続したいが、bar.example1.jp を経由しなければ到達できない場合、~/.ssh/config に以下を加える。

Host foo.example2.jp
 ProxyCommand ssh bar.example1.jp nc %h %p

これには、bar.example1.jp で nc コマンドが実行できる必要がある。 nc コマンドが無いような場合は、自サーバーで apt-get install connect-proxy としてから、~/.ssh/config に以下のように書く。

Host foo.example2.jp
 ProxyCommand /usr/bin/connect-proxy -S localhost:8090 %h %p

このあと、自サーバーを bar.example1.jp への SOCKS サーバーにする

ssh -N -f -D8090 bar.example1.jp

準備が出来たら、ssh foo.example2.jp とすれば、bar.example1.jp を経由していることを意識する必要がなくなる。rsync や scp で直接ファイルをやり取りすることも可能。

SOCKS サーバーとして動作させているときは、ログアウトする前に止めないとログアウトできなくなるので注意。

IPv6

Debianに変えた理由のひとつにIPv6で使ってみたい、というのがある。 西日本のフレッツ網内でしか通用しないが、会社と自宅のサーバーを相互に アクセスするためには、ルーターにアドレス・フィルタを設定するだけなので、 手軽に使える。*1

OpenBlockS266にpostfixを設定して動かしてみると、IPv6のsmtpポートでも接続を 受け付けていることが判明。会社の同じ Debian etchのサーバーはIPv6でsmtpの 待ちうけができないので、postfixのバージョンによってできないのだと思っていたが、 そうではないようだ。設定ファイルに大きな違いはなさそうなので不思議だ。 【後日談】何のことはない、OpenBlockS266の /etc/postfix/main.cf には inet_protocols = all が指定してあるので、IPv6でも待ち受けできているだけのことだ。ipv6が有効だと送信にもIPv6での接続を試みるのだが、会社のサーバーの場合フレッツ網との切り替えがうまくいかないので有効にできないのであった。

ホスト名をIPv6アドレスに変換する適当な方法が無いので、hostsに書き加えるという原始的な方法でごまかしている。私しか使わない接続なのでそれでもなんとかなる。ウイルス・チェッカによってはhostsを書き換えるとアラートが出るので注意。

IPv6アドレスをそのままhostsに書くというのは、プライベートな用途なら問題ないが、少し大きな用途になるとかなり問題になるはずだ。MACアドレスを含むのでサーバーの故障などで機材交換になったときや、回線の都合でISP等のアドレス提供者が変更になった場合は、サーバーのアドレスが変わってしまう。小規模な閉鎖ネットワークではanycastなDNSサーバー*2を用意するのも現実的ではない。

コンパイル環境

/etc/apt/source.list を

deb http://ftp.jp.debian.org/debian/ etch main contrib non-free
deb-src http://ftp.jp.debian.org/debian/ etch main contrib non-free
deb http://security.debian.org/ etch/updates main contrib non-free
deb-src http://security.debian.org/ etch/updates main contrib non-free

というようにして、aptitude update した後、

apt-get build-dep hello

とすれば、hello worldをセルフ・コンパイルするためのコンパイラやらライブラリを一発でインストールしてくれる。

build-essentialというパッケージをインストールするのもよい。

adm group

ログを調べるのに毎回 sudo するか、専用のコンソールを開いて sudo -i しておいて放置しておき、ログを見る場合はそのコンソールを使うなどしていたが、adm group に属していれば、通常のユーザーのままで見ることができる。

sudo /usr/sbin/usermod -G adm otsuka

とやって、一旦ログアウトしてからログインし、id コマンドで adm に属していることを確認。すでに複数の group に属しているときは、usermod の -G オプションでカンマを使って既存の全てのグループを書かなければならないので注意。 自分が属している group は id -nG で出るので、これを,(カンマ)でつないで

sudo /usr/sbin/usermod -G adm,cdrom,audio,video,powerdev,fuse otsuka

などとする。

日本語で man usermod とすると出てこないが、LANG=C man usermod とすると -aG というオプションでグループを追加できることがわかる。トグル動作になっているので、複数回実行するときは注意。

免責事項

ここに記載されている内容を実際に運用した場合のトラブルに関しては一切責任を負えませんのでご了承ください。
Copyright 2000-2011 Koichi Otsuka

参考


*1 拠点同士のIPv6通信はサポート対象外だと思われる
*2 fec0:0:0:ffff::{1,2,3}%1というDNSアドレスが予めクライアントにセットされている

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-07-03 (火) 12:44:08 (1963d)