2011-12-17

HT-03A に CyanogenMod をインストールしたときに追加・削除するべきアプリ

CyanogenMod を HT-03A にインストールしたときに, 追加でインストールするべきアプリ.
  • 日本語入力
  • Dropbox
  • ConnectBot
  • K9-mail (Email.apk よりは良いが, バージョンアップとともに機能・バグともに増えてきた.)
削除するべきアプリ.
  • Email.apk
  • YouTube.apk
  • GoogleQuickSearchBox.apk
  • MapsSapphire.apk (動作が重たすぎる)

2011-12-01

StartSSL で無料の証明書を取得する手順

StartSSL では1年間の SSL 証明書を無料で取得することができる. 取得までの手順の概要を説明する.
  • 秘密鍵の作成
    openssl genrsa -aes256 4096 >key.pem
  • リクエストの作成
    openssl req -new -key key.pem -out request.csr
  • リクエストの送信 (BEGIN, END の行も含めて送る.)
  • 証明書の受信; ウェブインターフェイスに表示される証明書を certificate.pem として保存する.
  • 証明書や中間CA証明書, CA証明書を取得し, 1つのファイルに結合.
    wget https://www.startssl.com/certs/sub.class1.server.ca.pem
    wget https://www.startssl.com/certs/ca.pem
    cat certificate.pem sub.class1.server.ca.pem ca.pem >all.pem
  • (おまけ) 秘密鍵のパスフレーズの解除
    openssl rsa -in key.pem -out keywop.pem
なお, 秘密鍵のパスフレーズをなしにすると, サービスの起動時に毎回パスフレーズを入れなくて良いのでメンテナンスが楽だが, 他人がファイルを奪うことでなりすまされるリスクが生じる.

Dovecotへの設定

RHEL 6 (CentOS 6 も) に付属の dovecot での設定方法を示す.
  • ファイルを dovecot の設定ファイルを置くパスへコピー. 他人にファイルを見られないようにするため, 400 に設定する. なお, 所有者は root でよい. (all.pem は 400 にする必要はない)
    cp all.pem    /etc/pki/dovecot/certs/
    cp keywop.pem /etc/pki/dovecot/private/
    chmod 400 /etc/pki/dovecot/certs/all.pem
    chmod 400 /etc/pki/dovecot/private/keywop.pem
  • dovecot の設定ファイルを更新; /etc/dovecot/conf.d/10-ssl.conf に以下の記述を行う.
    ssl_cert =</etc/pki/dovecot/certs/20121204-kmbk.kamae.org.pem
    ssl_key =</etc/pki/dovecot/private/20121204-kmbk.kamae.org.pem

参考

  • Apache + OpenSSL CSR生成手順
  • 2011-11-30

    SMTP 認証を LDAP + PAM 環境で使用

    CentOS 5, 6 などにおいて SMTP にて認証を行うためには, saslauthd を使用する. しかし, 認証情報を LDAP から取得するようにしている場合には, 単に saslauthd の設定を行うだけではうまくいかない. 以下のような警告とともに認証に失敗する.
    postfix/smtpd[24325]: warning: SASL authentication failure: Password verification failed
    postfix/smtpd[24325]: warning: example.com[192.168.0.2]: SASL PLAIN authentication failed: authentication failure
    

    saslauthd が pam に認証情報を問い合わせるとき, /etc/pam.d/smtp の設定に基づいて pam が認証情報を返す. 一方で, smtppassword-auth を見るような設定となっているので, LDAP にて認証を行うことができない.

    解決方法は, pam がシステムの認証方法に従うようにすることである. include password-auth とかかれている部分を include system-auth と書き換えると LDAP にて認証できるようになる.

    2011-11-24

    HT-03A に CyanogenMod をインストール

    HT-03A に CyanogenMod 6.1 を導入してみた. 既に root を取得しているものとして, 操作方法のメモ.

    CyanogenMod 6.1 の特徴

    • WiFi tether ができる.
    • Android 2.1

    操作方法

  • 必要なファイルを SDカードに保存しておく;
    • recovery-RA-sapphire-v1.7.0G.img
    • update-cm-6.1.0-DS-signed.zip (ここから HTC Dream/Magic 用のファイルを選択してダウンロード)
    • gapps-mdpi-tiny-20101020-signed.zip (gmail や連絡先など, Google の提供するサービスがいらなければ, このファイルはいらない.)
    SDカードに保存してから, md5sum を確認しておく方がよい.
  • 起動イメージを書き換え. (recovery-RA-sapphire-v1.7.0G.img はどこかからダウンロードして, SDカードに保存しておく.)
    # flash_image recovery /sdcard/recovery-RA-sapphire-v1.7.0G.img
  • シャットダウンし, ホームボタンを押しながら再起動する. 箱から端末を出している絵が出てきたら失敗. flash_image からやり直す. (flash_image を実行した後, 一度再起動すると, 元にもどってしまうようだ.)
  • バックアップを行う. (nandroid のバックアップを行っておくと良いようだ.)
  • wipe を選んで, SDカード以外のデータを削除する.
  • Flash zip from sdcard を選んで, update-cm-6.1.0-DS-signed.zipgapps-mdpi-tiny-20101020-signed.zip を順番に書き込む.
  • 再起動する
  • 気づいたこと

    FlashRec というアプリケーションを使用すると, シェルから flash_image を打たなくてもよい. しかし, アプリケーションが内部で flash_image を呼び出しているだけである.

    アクセスポイントの情報 (mpr2.bizho.net, 0120.mopera.ne.jp など) は残っていた.

    gapps-mdpi-tiny-20101020-signed.zip をインストールしない方が, 動作が軽い気がする. しかし, Market などを使用できないので不便. インストールするパッケージを選択したら良いかもしれない.

    デフォルトで swap がオンになっている. この辺の設定は見直した方がよいだろう.

    電池の消耗が早くなった. 設定でなんとかならないだろうか...

    参考

    2011-11-22

    DMI によるシステム情報の参照

    Linux からシステムの情報を参照するには, /sys/devices/virtual/dmi/id/ にあるファイルを読むとよい. 以下に, 参照できる情報の例を示す.
    bios_vendorBIOS のベンダ
    bios_versionBIOS のヴァージョン
    board_vendorマザーボードのベンダ
    board_nameマザーボードの型式 (リビジョン)
    board_versionマザーボードのヴァージョン (リビジョン)
    board_vendorマザーボードのベンダ

    CentOS 5 などの古いディストリビューションでは, dmidecode を使用する.

    2011-11-20

    フリーのバックアップメールサーバ

    メールサーバのバックアップのサービスが, フリーで提供されている: Free MX EMail Server Backup Service. スパムフィルタが有償で, 機能限定版であるバックアップメールサーバが無償という位置づけらしい.

    メールサーバが 1 台だけだと, 何らかの障害時にメールが失われてしまう. また, 送信者にメールサーバへの配送失敗の連絡が届き, 迷惑をかけてしまうこともあるだろう. 自宅サーバでメールサーバを運用している人だけでなく, レンタルサーバでメールサーバを運用している人にもおすすめしたい.

    サイトは英語だが, 登録の操作はさほど難しくない. というのも, MX レコードにバックアップサーバのホストを追加するだけである. MX レコードは, 優先順位とホストとを設定するが, メインのメールサーバの優先順位値を小さく (最優先) し, バックアップサーバの優先順位を大きく設定する. アナウンスのメーリングリストに入会することをすすめているが, 必須ではない.

    メールの送信側のサーバがバックアップサーバへ接続して RCPT TO を送った時点で, バックアップサーバが MX レコードをチェックする仕組みらしい.

    2011-11-19

    Dvipdfmx によるフォントの埋め込み (TeXLive 2011)

    Dvipdfmx (に限らず TeX) のフォント設定はなかなか情報がみつからない. SL 6 にインストールした TeXLive 2011 にて, 試行錯誤でとりあえずフォントが埋め込まれるように設定できた. メモを残しておく.

    True Type フォントの配置

    True Type フォントは, 適切なパスに配置しなければならないようだ. 以下のいずれかに配置する.
    • . (現在のディレクトリ).
    • $TEXINPUTS で指定したディレクトリの下の fonts/truetype およびそのサブディレクトリ.
    • インストールディレクトリの下の texmf*/fonts/truetype およびそのサブディレクトリ.
    • その他?
    kpsewhich を使用することで, パスがあっているか確認できる.

    True Type フォントから VF を作成

    以下のようなスクリプトを作ってみた.
    #! /bin/bash
    
    vpl=$(mktemp --suffix=.vpl)
    tfm=${1/.ttf/.tfm}
    
    ttf2tfm $1 -q -T T1-WGL4.enc -v $vpl $tfm &&
    vptovf $vpl $2 $tfm
    

    VF の配置

    True Type フォントの配置と同様だが, truetype ではなく vf の下に配置する.

    マップファイルの作成

    TeX でのフォントと実際に埋め込むフォントとの対応を記述する. 以下が例.
    rml H sazanami-mincho
    gbm H sazanami-gothic
    
    dvipdfm を使用するのであれば, ユーザーズガイドに書式がかかれている.

    Dvipdfmx の実行

    オプション -f でマップファイルを指定する. texmf/dvipdfmx/dvipdfmx.cfg というファイルがあるので, これを編集するとデフォルトを変えられるかもしれない.

    2011-11-08

    check package update

    Linux では RPM によりパッケージを管理することが多い. yum であれば yum update, apt であれば apt-get update; apt-get upgrade によって更新が可能である. しかし, 何が更新されるか分からないまま, パッケージ更新のコマンドを実行するのは不安である. ここでは, どのようなパッケージが更新されるのか, どのような更新があったのかを確認する方法を説明する.

    APT

    • レポジトリからパッケージ情報を取得する
      # apt-get update
    • どのパッケージが更新されるかを確認する.
      # apt-get -s upgrade
    • 問題なければ, 更新する.
      # apt-get upgrade

    YUM

    • レポジトリからパッケージ情報を取得し, どのパッケージが更新されるか確認する.
      # yum check-update
    • 問題なければ, 更新する.
      # yum -C update
      もし, プラグイン yum-plugin-changelog をインストールしていれば, 更新に関するコメントも確認できる.
      # yum -C --changelog update

    ベンダの情報

    通常, ベンダが更新情報を出している. RSS や メーリングリストで配信されているので, 購読することで更新情報を入手できる.

    参考

    2011-11-03

    RHEL 5, 6 の Openswan が更新されました.

    Openswan は Linux 上での IPsec 実装なのですが, Red Hat Enterprise Linux がアップデートを出しました. アップデートの対象は RHEL 5, 6 なので, CentOS5 だけでなく CentOS6, SL5, SL6 もアップデートを出すでしょう. 開放後のメモリを参照するバグが見つかったようです.

    リンク

    2011-10-29

    安全な無線ネットワークの構築

    この記事の抄訳.

    安全な無線ネットワークの構築

    保護されていない無線ネットワークを使用していると, ファイルだけでなく, 銀行口座の情報やパスワードといった個人情報が盗まれる可能性がある.

    ルータの設定を開く

    大抵, ブラウザから 192.168.1.1 へアクセスすると, ルータの設定を開くことができる. ログイン名とパスワードはルータのブランドによるので説明を参考にする. 多くのルータでは「admin」「password」だろう. 訳注: Buffalo では 「root」 「」(パスワードなし) が工場出荷時の設定だろう.

    パスワードの変更

    先ほどのステップのパスワードを変更する. もし変更していなかったら, 何者かによってルータの設定を変更されてしまうかもしれない. このステップは忘れられやすいが, もっとも重要である.

    無線ネットワークの名前の変更

    無線ネットワークの名前には, あなたの名前や住所を使うべきではない. おもしろい名前や覚えやすい名前を使用する. このステップはそれほど重要ではないが, どのネットワークに接続しているかわかりやすくなる.

    無線信号を暗号化する

    暗号化することで, 近くにいるコンピュータがあなたのネットワークを勝手に使用することができなくなる. 最新の暗号方法は WPA2 である. WPA2 を使用可能であればこれを選択するべきである. WPA でも十分だが, WEP は使用するべきでない.

    ルータのファームウェアが最新か

    ルータのファームウェアが最新か確認する. セキュリティ上の問題が修正されている可能性があるので, ファームウェアを最新にしておく.

    2011-10-27

    Linux で動く ARIB B25 復号プログラム

    ARIB STD-B25 仕様確認テストプログラムソースコード が, 配布されているが, これは Microsoft Visual C++ 2005 で開発されている. しかし, 移植性のあるコードであったため, Linux への移行は簡単だった. Linux への移行とあわせて, 同時に複数のストリームを復号する機能を追加した. これにより, HDP2 のような2つ以上のチューナをもつハードウェアを使用していても, 同時に復号しながら録画することが可能である. 以前はソースを公開していたが, 現在は見合わせている. 使用方法を載せておく.
    • ソースを展開した後, ビルド
      $ cd arib_std_b25_linux/src
      $ make
      
    • 起動時にデーモンを開始: /etc/rc.localへ以下の1行を追加する.
      # echo $PWD/b25m -f >>/etc/rc.local
    • 復号 (dvbstream でディバイスからストリームを取得し, 復号して, ファイルへ保存する例)
      dvbstream ... | .../src/b25m -c > decrypted.ts

    2011-10-08

    Buffalo Wifi Comparision

    Buffalo AirStation の比較

    Buffalo は AirStation のブランドで様々な WiFi アクセスポイント製品を販売しているが, 比較が難しい. そこで, いくつかのアクセスポイントについて表を作った.

    複数の NIC を束ねて使用 (SL6)

    NIC の冗長設定

    Linux kernel の bonding モジュールを利用することで, 複数の NIC (eth0, eth1, ...) をまとめて使用することができる. これにより, NIC 関連の障害 (ハブの故障やケーブルの切断) に対する耐故障性, 負荷分散を実現できる.

    設定方法

    ここでは, Scientific Linux 6.1 を例に設定を説明する. CentOS 5.5 でも, 同様に設定することができる. RHEL 5, RHEL 6, CentOS 6 などでも同様に設定できるだろう.
  • /etc/modprobe.d/bond0.conf を作成する. 以下の1行を記述する.
    alias bond0 bonding
    
    オプションはここに書かず, ifcfg-bond0 へ記述する.
  • /etc/sysconfig/network-scripts/ifcfg-bond0 を記述する. 例を以下に示す.
    DEVICE=bond0
    ONBOOT=yes
    BOOTPROTO=none
    IPADDR=192.168.254.137
    NETMASK=255.255.255.0
    NM_CONTROLLED=no
    BONDING_OPTS='miimon=1000 mode=6'
    
  • BONDING_OPTS で設定可能な項目については, /usr/share/doc/kernel-doc-*/Documentation/networking/bonding.txt が参考になる. ここ も参考になる.
  • ifcfg-ethNの設定を行う. (複数の NIC を使用するので, 毎数分のファイルを設定する.) /etc/sysconfig/network-scripts/ifcfg-ethN に以下のような記述を行う. (ethN の部分は eth0, eth1, ... に置き換えること.)
    DEVICE="ethN"
    HWADDR="01:12:34:56:78:9A"
    NM_CONTROLLED=no
    MASTER=bond0
    SLAVE=yes
    
  • 最後に, システムを再起動または, 新しい設定を反映させる.
    # depmod -a
    # /etc/init.d/network restart
    

    送信速度

    複数のNFSサーバへ書き込むときの速度を測定してみた. NIC (1000BASE-T) 2枚, mode=6 の構成で, dd if=/dev/zero bs=8192 ... を同時に実行して書き込むと, 最大で 1.8Gbps となった. (8秒間隔で ifconfig bond0 を実行し, 送信バイトの増分を求めた.)
  • 2011-07-29

    Fujitsu fi-5110EOX を Linux で使用する

    Fujitsu の Scan Snap fi-5110EOX は, 最近の sane では完全にサポートされるようになっている.
    両面スキャンなどは, ディバイス特有のオプションになるが,
    sane-fujitsu を参考にして,
    以下のようなコマンドで両面スキャンができた.
    なお, 枚数を指定する --batch-count は, 両面で 2 と数えるようだ.
    scanimage --batch --mode Color --batch-count 2 --source 'ADF Duplex'
    
    スキャンした画像をPDFに変換するには, 以下のように pnmtopsps2pdf を使用する.
    pnmtops -width 8.27 -height 11.69 out1.pnm | ps2pdf - out1.pdf

    2011-05-16

    iimc

    とあるサイトでおこったできごと.
    パスワードを入力したわけではないのに, このメッセージが出てきた. HTMLのソースや Cookie にはパスワードが含まれていなかったけれども, サイト間でパスワードのやりとりをしているのだろうか? 操作手順は以下の通り:
  • ポータルサイトにログイン
  • パスワード変更サイトへログインしてパスワードの変更
  • ポータルサイトに再ログイン (なぜか古いパスワードでないとログインできない. パスワードがキャッシュされているのだろうか?)
  • ポータルサイトからメールサイトへ移動
  • 2011-05-07

    PCA-DAV2 を Linux で使ってみる

    USB 接続のキャプチャディバイス PCA-DAV2 を Linux で使用することを試みた.
    映像はキャプチャできたが, 音声を取り込む方法はよく分からない.

    ひとまず, dmesg の結果に

    [49225.628910] em28xx #0: Here is a list of valid choices for the card= insmod option:
    [49225.628913] em28xx #0:     card=0 -> Unknown EM2800 video grabber
    [49225.628917] em28xx #0:     card=1 -> Unknown EM2750/28xx video grabber
    [49225.628921] em28xx #0:     card=2 -> Terratec Cinergy 250 USB
    [49225.628924] em28xx #0:     card=3 -> Pinnacle PCTV USB 2
    [49225.628928] em28xx #0:     card=4 -> Hauppauge WinTV USB 2
    [49225.628931] em28xx #0:     card=5 -> MSI VOX USB 2.0
    [49225.628934] em28xx #0:     card=6 -> Terratec Cinergy 200 USB
    [49225.628938] em28xx #0:     card=7 -> Leadtek Winfast USB II
    [49225.628941] em28xx #0:     card=8 -> Kworld USB2800
    [49225.628945] em28xx #0:     card=9 -> Pinnacle Dazzle DVC 90/100/101/107 / Kaiser Baas Video to DVD maker / Kworld DVD Maker 2
    [49225.628949] em28xx #0:     card=10 -> Hauppauge WinTV HVR 900
    [49225.628953] em28xx #0:     card=11 -> Terratec Hybrid XS
    [49225.628956] em28xx #0:     card=12 -> Kworld PVR TV 2800 RF
    [49225.628960] em28xx #0:     card=13 -> Terratec Prodigy XS
    [49225.628963] em28xx #0:     card=14 -> SIIG AVTuner-PVR / Pixelview Prolink PlayTV USB 2.0
    [49225.628967] em28xx #0:     card=15 -> V-Gear PocketTV
    [49225.628970] em28xx #0:     card=16 -> Hauppauge WinTV HVR 950
    [49225.628974] em28xx #0:     card=17 -> Pinnacle PCTV HD Pro Stick
    [49225.628978] em28xx #0:     card=18 -> Hauppauge WinTV HVR 900 (R2)
    [49225.628981] em28xx #0:     card=19 -> EM2860/SAA711X Reference Design
    [49225.628985] em28xx #0:     card=20 -> AMD ATI TV Wonder HD 600
    [49225.628988] em28xx #0:     card=21 -> eMPIA Technology, Inc. GrabBeeX+ Video Encoder
    [49225.628992] em28xx #0:     card=22 -> EM2710/EM2750/EM2751 webcam grabber
    [49225.628996] em28xx #0:     card=23 -> Huaqi DLCW-130
    [49225.628999] em28xx #0:     card=24 -> D-Link DUB-T210 TV Tuner
    [49225.629002] em28xx #0:     card=25 -> Gadmei UTV310
    [49225.629006] em28xx #0:     card=26 -> Hercules Smart TV USB 2.0
    [49225.629009] em28xx #0:     card=27 -> Pinnacle PCTV USB 2 (Philips FM1216ME)
    [49225.629013] em28xx #0:     card=28 -> Leadtek Winfast USB II Deluxe
    [49225.629017] em28xx #0:     card=29 -> EM2860/TVP5150 Reference Design
    [49225.629020] em28xx #0:     card=30 -> Videology 20K14XUSB USB2.0
    [49225.629024] em28xx #0:     card=31 -> Usbgear VD204v9
    [49225.629027] em28xx #0:     card=32 -> Supercomp USB 2.0 TV
    [49225.629030] em28xx #0:     card=33 -> Elgato Video Capture
    [49225.629034] em28xx #0:     card=34 -> Terratec Cinergy A Hybrid XS
    [49225.629038] em28xx #0:     card=35 -> Typhoon DVD Maker
    [49225.629041] em28xx #0:     card=36 -> NetGMBH Cam
    [49225.629044] em28xx #0:     card=37 -> Gadmei UTV330
    [49225.629047] em28xx #0:     card=38 -> Yakumo MovieMixer
    [49225.629050] em28xx #0:     card=39 -> KWorld PVRTV 300U
    [49225.629054] em28xx #0:     card=40 -> Plextor ConvertX PX-TV100U
    [49225.629057] em28xx #0:     card=41 -> Kworld 350 U DVB-T
    [49225.629061] em28xx #0:     card=42 -> Kworld 355 U DVB-T
    [49225.629064] em28xx #0:     card=43 -> Terratec Cinergy T XS
    [49225.629068] em28xx #0:     card=44 -> Terratec Cinergy T XS (MT2060)
    [49225.629071] em28xx #0:     card=45 -> Pinnacle PCTV DVB-T
    [49225.629075] em28xx #0:     card=46 -> Compro, VideoMate U3
    [49225.629078] em28xx #0:     card=47 -> KWorld DVB-T 305U
    [49225.629081] em28xx #0:     card=48 -> KWorld DVB-T 310U
    [49225.629085] em28xx #0:     card=49 -> MSI DigiVox A/D
    [49225.629088] em28xx #0:     card=50 -> MSI DigiVox A/D II
    [49225.629092] em28xx #0:     card=51 -> Terratec Hybrid XS Secam
    [49225.629095] em28xx #0:     card=52 -> DNT DA2 Hybrid
    [49225.629098] em28xx #0:     card=53 -> Pinnacle Hybrid Pro
    [49225.629102] em28xx #0:     card=54 -> Kworld VS-DVB-T 323UR
    [49225.629105] em28xx #0:     card=55 -> Terratec Cinnergy Hybrid T USB XS (em2882)
    [49225.629109] em28xx #0:     card=56 -> Pinnacle Hybrid Pro (2)
    [49225.629112] em28xx #0:     card=57 -> Kworld PlusTV HD Hybrid 330
    [49225.629116] em28xx #0:     card=58 -> Compro VideoMate ForYou/Stereo
    [49225.629119] em28xx #0:     card=59 -> (null)
    [49225.629123] em28xx #0:     card=60 -> Hauppauge WinTV HVR 850
    [49225.629126] em28xx #0:     card=61 -> Pixelview PlayTV Box 4 USB 2.0
    [49225.629130] em28xx #0:     card=62 -> Gadmei TVR200
    [49225.629133] em28xx #0:     card=63 -> Kaiomy TVnPC U2
    [49225.629136] em28xx #0:     card=64 -> Easy Cap Capture DC-60
    [49225.629139] em28xx #0:     card=65 -> IO-DATA GV-MVP/SZ
    [49225.629143] em28xx #0:     card=66 -> Empire dual TV
    [49225.629146] em28xx #0:     card=67 -> Terratec Grabby
    [49225.629149] em28xx #0:     card=68 -> Terratec AV350
    [49225.629153] em28xx #0:     card=69 -> KWorld ATSC 315U HDTV TV Box
    [49225.629156] em28xx #0:     card=70 -> Evga inDtube
    [49225.629160] em28xx #0:     card=71 -> Silvercrest Webcam 1.3mpix
    [49225.629163] em28xx #0:     card=72 -> Gadmei UTV330+
    [49225.629166] em28xx #0:     card=73 -> Reddo DVB-C USB TV Box
    [49225.629170] em28xx #0:     card=74 -> Actionmaster/LinXcel/Digitus VC211A
    [49225.629174] em28xx #0:     card=75 -> Dikom DK300
    [49225.629177] em28xx #0:     card=76 -> KWorld PlusTV 340U or UB435-Q (ATSC)
    [49225.629181] em28xx #0:     card=77 -> EM2874 Leadership ISDBT
    
    が含まれていたので, EM2860/TVP5150 Reference Design だろうと当たりをつけて
    rmmod em28xx
    modprobe em28xx card=29
    
    としてみました. tvtime で画像は出るようにはなったが, 音声はさらに設定が必要そうだ.

    FFmpegへ入力するには, -f video4linux2でフォーマットを指定し, /dev/video0を入力にすればよい.

    ffmpeg -f video4linux2 -i /dev/video0 output.mpeg
    
    追記: 音声の入力方法は, コメント参照.

    このページによると, card=40 を使ったが, 音声はクリップ (飽和する?) してキャプチャできなかったらしい.
    このページによると, card=13 (Terratec Prodigy XS) を使用したらしい. 音声は試していないらしい.

    2011-05-05

    CentOS エラッタ (更新情報)

    CentOS のエラッタはメーリングリストで入手可能なのですが, これをウェブページに変換したサイトを作成しました.

    http://centoserrata.nagater.net/

    I-O DATA GV-USB2 を Linux で使いたい

    I-O DATA GV-USB2Fedora 14 のマシンに接続してみた.

    snd-usb-audio としては認識されたが, 映像は取りこめなさそう. これに労力をつぎ込みたくはないので諦めた.

    dmesg の結果:

    [ 3438.892061] usb 2-1.2: new high speed USB device using ehci_hcd and address 3
    [ 3439.008484] usb 2-1.2: New USB device found, idVendor=04bb, idProduct=0532
    [ 3439.008491] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=10
    [ 3439.008496] usb 2-1.2: Product: I-O DATA GV-USB2
    [ 3439.008499] usb 2-1.2: Manufacturer: I-O DATA
    [ 3439.008502] usb 2-1.2: SerialNumber: 000000000000001
    [ 3439.510572] ALSA sound/usb/clock.c:219: 3:2:1: endpoint lacks sample rate attribute bit, cannot set.
    [ 3439.511184] usbcore: registered new interface driver snd-usb-audio
    

    /proc/bus/usb/devicesの一部:

    T:  Bus=02 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#=  3 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=04bb ProdID=0532 Rev= 0.05
    S:  Manufacturer=I-O DATA
    S:  Product=I-O DATA GV-USB2
    S:  SerialNumber=000000000000001
    C:* #Ifs= 3 Cfg#= 1 Atr=80 MxPwr=500mA
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    E:  Ad=81(I) Atr=03(Int.) MxPS=   0 Ivl=2ms
    E:  Ad=82(I) Atr=01(Isoc) MxPS=   0 Ivl=125us
    I:  If#= 0 Alt= 1 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=2ms
    E:  Ad=82(I) Atr=01(Isoc) MxPS= 768 Ivl=125us
    I:  If#= 0 Alt= 2 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=2ms
    E:  Ad=82(I) Atr=01(Isoc) MxPS=1020 Ivl=125us
    I:  If#= 0 Alt= 3 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=2ms
    E:  Ad=82(I) Atr=01(Isoc) MxPS=1024 Ivl=125us
    I:  If#= 0 Alt= 4 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=2ms
    E:  Ad=82(I) Atr=01(Isoc) MxPS=2048 Ivl=125us
    I:  If#= 0 Alt= 5 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=2ms
    E:  Ad=82(I) Atr=01(Isoc) MxPS=3072 Ivl=125us
    I:* If#= 1 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=00 Driver=snd-usb-audio
    I:* If#= 2 Alt= 0 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    E:  Ad=84(I) Atr=05(Isoc) MxPS=   0 Ivl=125us
    I:  If#= 2 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
    E:  Ad=84(I) Atr=05(Isoc) MxPS= 256 Ivl=1ms
    

    2011-04-24

    LVM 上の EXT3 パーティションを縮小

    EXT3 の縮小の方法などを紹介する.

    ここでは, いろいろと理由があって, /dev/sda 上にある /dev/VolGroup00/LogVol00 を 縮小して /dev/sdb 上に移動させる必要がでてきた. ext3 でフォーマットしてルートにマウントしているので, とりあえず runlevel 1 でスナップショット /dev/VolGroup00/snap1 を取ってから, パーティションを縮小, 新しいパーティションに dd でコピーする. やや複雑な手順になってしまった.

    ファイルシステムのチェックと, ジャーナルの削除を行う. (ジャーナルの削除は不要かもしれない.)

    # fsck /dev/VolGroup00/snap1
    fsck 1.39 (29-May-2006)
    e2fsck 1.39 (29-May-2006)
    /dev/VolGroup00/snap1: clean, 502353/134217728 files, 18419731/134217728 blocks
    
    # fsck -n /dev/VolGroup00/snap1
    fsck 1.39 (29-May-2006)
    e2fsck 1.39 (29-May-2006)
    /dev/VolGroup00/snap1: clean, 502353/134217728 files, 18419731/134217728 blocks
    
    # tune2fs -O ^has_journal /dev/VolGroup00/snap1
    
    # e2fsck -f /dev/VolGroup00/snap1
    e2fsck 1.39 (29-May-2006)
    Pass 1: Checking inodes, blocks, and sizes
    Pass 2: Checking directory structure
    Pass 3: Checking directory connectivity
    Pass 4: Checking reference counts
    Pass 5: Checking group summary information
    /dev/VolGroup00/snap1: 502353/134217728 files (0.6% non-contiguous), 18386929/134217728 blocks
    

    ファイルシステムの縮小. 操作が完了したら, 何ブロックになったか出力されるので, この数値を確認する. この例では, ちょうど 50331648 × 4096 = 192 × 10243 なので OK.

    # resize2fs /dev/VolGroup00/snap1  192G
    resize2fs 1.39 (29-May-2006)
    Resizing the filesystem on /dev/VolGroup00/snap1 to 50331648 (4k) blocks.
    sudo tune2fs -O has_journal /dev/VolGroup00/snap1 
    The filesystem on /dev/VolGroup00/snap1 is now 50331648 blocks long.
    

    ジャーナルを戻す.

    # tune2fs -O has_journal /dev/VolGroup00/snap1
    tune2fs 1.39 (29-May-2006)
    Creating journal inode: done
    This filesystem will be automatically checked every -1 mounts or
    0 days, whichever comes first.  Use tune2fs -c or -i to override.
    

    縮小した領域を別のパーティションにコピーする.

    # lvcreate -L 192G -n root1 VolGroup00 /dev/sdb2
    
    # dd if=/dev/VolGroup00/snap1 of=/dev/VolGroup00/root1 bs=4096 count=50331648
    (全てのブロックが書き込まれたか確認する.)
    

    この操作中 (とくに resize2fs の間に), スナップボリュームの COW テーブルはかなりたくさん使用された. (もともとの /dev/VolGroup00/LogVol00 は 496GB 中 55 GB だけが使用されていた.)

      --- Logical volume ---
      LV Name                /dev/VolGroup00/snap1
      VG Name                VolGroup00
      LV UUID                ZBrQlU-Xhut-Efbu-uDmV-VG3n-yobg-tC0l9Y
      LV Write Access        read/write
      LV snapshot status     active destination for /dev/VolGroup00/LogVol00
      LV Status              available
      # open                 0
      LV Size                512.00 GB
      Current LE             16384
      COW-table size         64.00 GB
      COW-table LE           2048
      Allocated to snapshot  28.12% 
      Snapshot chunk size    4.00 KB
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:3
    

    2011-04-23

    LVM 論理ボリュームを別の物理ボリュームへ移動

    複数のハードディスクドライブを使用して LVM のボリュームグループ (VG) を構成した場合, VG 上の論理ボリューム (LV) は内部では物理ボリューム (PV) 上に割り当てられる. どの PV が割り当てられているかは
    $ lvdisplay -m 
    で知ることができる.

    通常は1つの PV から順に確保されてゆくため, アクセスの多い LV が 1 台の HDD へ偏ってしまうことが起こりうる. このような状況になった場合でも, LV を使用中に使用する PV を変更することができる.

    この手順は以下のようになる.

    • 別の PV へ複製 (ミラー) を作成する.
    • 元の PV の割り当てを削除する.

    例えば, VG VolGroup00 上の LV LogVol01/dev/sda2 上に割り当てられている時に /dev/sdb2 へ移動する場合は, 以下のコマンドになる.

    # lvconvert -m 1 --alloc anywhere /dev/VolGroup00/LogVol01 /dev/sdb2
    # lvconvert -m 0 /dev/VolGroup00/LogVol01 /dev/sda2

    2011-04-08

    HDP2 Gold を Linux から使用したい

    SKNETMonster TV HD シリーズ の一部の機種では, コピー制御機能を破る方法が発見された. Linux からでもディジタルテレビを視聴することできるようだ.

    暗号チップ ASIE5606 の暗号は復号方法が公開された. (有志による解読が成功したのか, メーカから情報がもれたのか, 経路は不明.)
    しかし, HDP2 Gold と呼ばれるボードからは ASIE5607 に交換され, まだ復号方法が公開されていない.
    だた, ASIE5607 は TSSOP なので, ピンまわりにジャンパーを設ければ TS を取り出せるだろう. そのために必要な情報をまとめた.

    HDP2 Gold ジャンパ

    まず, チューナの出力ピン配置を以下のように番号づける. (背面から見た図)
    +-----+
    |    4|
    |    3|
    |    2|
    |  1  |
    +-----+
    

    チューナ, ASIE5607, 5211 の対応するピン番号は以下のようになる.

    Tuner5607入力5607出力5211 (1)5211 (2)
    349306212
    450296311
    15128913
    252316110

    ASIE5607 の出力と 5211 の入力との間をカットし, チュナーの出力と 5211 の入力とをジャンパすればよい. ビットレートは 23Mbps 程度なので, 綺麗にジャンパする必要はないが, パターン幅が細い部分もあるので, 注意してほしい. ポリウレタン線 (直径 0.26mm) などでジャンパすれば問題ないだろう.

    Linux ドライバ

    Linux では,
    • v4l-dvb とそのパッチ + dvbstream
    • recfriio
    のいずれかによって Monster TV HD シリーズからディジタルテレビの TS を取りこめる. v4l-dvb を使用すると, ダブルチューナにも対応できる. しかし, ASIE5607 には対応していない.

    リンク

    1. MonsterTV HDUS改造 その2: ASIE5606のジャンパー方法
    2. ボクにもわかる地上デジタル - 地デジ資料編 - チャンネル表
    3. DVB Tools
    4. Linuxで『24時間ワンセグ野郎』と同等の環境を作る方法 ~ ドライバのコンパイルから dvbstream でのストリームキャプチャまで

    2011-03-14

    昇圧 DC-DC コンバータ付き LED ドライバ

    乾電池 4 本で, 3.6V の LED 直列 4 個を駆動する回路です.
    インダクタと MOSFET によって昇圧し, LED を駆動します. 0.33 オームの抵抗で電流をモニタし, 非反転増幅器で増幅した電圧を, シュミットトリガ回路へ入力します. 最大電流がおよそ 30mA となるように設計しています.
    LED は OSPW5111A-Z3 を4個直列.

    2011-02-14

    ビジーなデバイスをアンマウントする

    Linux では, だれかが使用中のファイルシステムをアンマウントしようとすると
    umount: /: device is busy.
    umount /: デバイスがビジーです。
    というメッセージが表示されてアンマウントできない.

    このようなときには, umount-l オプションをつけるとよい.

    lazy アンマウントとよばれ, ファイルシステム階層構造からはすぐに切り離されるが, ファイルシステムへのビジーな参照がなくなった時点でアンマウントされる.

    すなわち, lazy アンマウントしたファイルシステムへの新たなアクセスはできなくなるが, 既に開いているファイルへのアクセスは中断されない.

    2011-01-20

    XFCE4 をセッションにした VNC サーバが起動しない

    端末で XFCE を使用していて, その中で VNC サーバを起動すると, 以下のエラーが出て VNC は起動するが XFCE のセッションが起動しないことがある.
    xfce4-session: Another session manager is already running

    これは, VNC サーバを起動するときに, 端末の XFCE セッションが設定した環境変数が, VNC 中の XFCE セッションに伝わってしまって, 既にセッションが起動済みであると判断してしまっているためだろう.

    こんなときには一度ローカルマシンに SSH などでログインして, その中で VNC サーバを起動すればよい.

    $ ssh localhost vncserver

    2011-01-15

    SELinux における共有ライブラリのコンテキスト

    共有ライブラリ (*.so) は, プログラムの実行時に ld.so によって自動的にリンクされるオブジェクトです. しかし, SELinux を使用していると,
    error while loading shared libraries: *.so:
    cannot restore segment prot after reloc: Permission denied
    といったエラーが出ることがあります.

    例えば, Firefox などのようにバイナリをダウンロードし展開して使用すると, このようなエラーに遭遇することがあるでしょう.

    このときには, chcon を使用して, 問題の共有ライブラリのセキュリティコンテキストの種類を textrel_shlib_t に変更しましょう.

    chcon -t textrel_shlib_t *.so
    もし, 共有ライブラリがたくさんあるのであれば, find を使用して,
    find -name '*.so*' | xargs echo chcon -t textrel_shlib_t
    とすると, サブディレクトリにある共有ライブラリのセキュリティコンテキストも変えることができます.

    2011-01-06

    安全な rm

    Linux では, rm で削除したファイルを復元する機能が提供されていません. そこで, rm をゴミ箱に移動するコマンドに置き換える方法を紹介します. ここで紹介する機能は,
    • ゴミ箱ディレクトリを作る
    • 削除するファイルがゴミ箱ディレクトリと同じファイルシステム上にあればゴミ箱に移動する.
    • 削除するファイルのあるファイルシステム上にゴミ箱ディレクトリがなければ, プロンプトを出して削除する.
    を備えています.

    ファイルを削除する代わりに, 同じファイルシステムにあるゴミ箱ディレクトリに移動させます. その副作用として, 削除が高速になります. ファイルの移動は, ファイルの実体への参照を書き換えるだけで行える実装になっているファイルシステムがほとんどだからです.

    function rms
    {
     # safe rm
     local rm_opt='-v -i'
     local mv_opt=''
     OPTIND=0
     while getopts firv flag; do
      case $flag in
       f) mv_opt="$mv_opt -f";;
       i) mv_opt="$mv_opt -i";;
       r) rm_opt="$rm_opt -r";;
       v) mv_opt="$mv_opt -v";;
       *) OPT_ERROR=1; break;;
      esac
     done
     if [[ $OPT_ERROR ]]; then
      echo "usage: $0 -firv files..." >&2
      exit $OPT_ERROR
     fi
     shift $((OPTIND-1))
    
     local trashes=(
      ~/.trash
      /tmp/trash-$USER
      )
     mkdir "$trashes" &>/dev/null
     local i t
     local date=$(date +'%Y%m%d-%H%M%S')
     for i in "$@"; do
      local found=''
      for t in ${trashes[@]}; do
       if test "$(stat -c '%D' "$i")" = "$(stat -c '%D' "$t")"; then
        local tt=$t/$date/
        mkdir $tt &>/dev/null
        mv $mv_opt "$i" $tt && local found=1
       fi
       test -n "$found" && break
      done
      test -z "$found" && /bin/rm $rm_opt "$i"
     done
    }
    alias rm=rms
    

    K-9 Mail で Courier-IMAP サーバのメールが表示されなくなる

    Android の K-9 mail は, Courier IMAP とともに使用すると, いくつかのメッセージが K-9 mail 上に表示されないことがある. とくに, 新しいメールが受信されないようで, 使用していて困る.

    どうも, K-9 Mail のスレッドによると Courier IMAP 側の問題といわれていて, 対策はまだ見付かっていない模様.

    とりあえず, K-9 Mail で, Recreate data (Last Resort!) を行うと, サーバからメッセージを取得しなおすことができるので, 当分は問題がないようだが, 私の経験ではしばらくするとまた再発する.

    Courier IMAP 側の問題といわれているので, 別の IMAP サーバ dovecot に代えてみたところ, 同様の問題は起こらなくなった.

    参考

    2011-01-05

    Linux におけるファイルの排他制御

    Linux でのファイルロックの実装はいくつかある. ここでは,
    • flock
    • lockf
    • fcntl
    を紹介する.

    ロック機構の指標

    ファイルのロック機構を比較する上で, 指標になる項目は, たとえば,
    • 強制力: アドバイザリロック, 強制ロック
    • 範囲: ファイル全体, バイト単位, など
    • 種類: 排他, 共有
    • 所有者: プロセスがロックを所有, ファイルディスクリプタ毎にロックを所有
    • ファイルディスクリプタの複製時の振舞
    このうち, 強制力については, Linux でのデフォルトはアドバイザリロックで, 強制ロックに変更するにはマウントオプションに mandを追加しなければならない. アドバイザリロックでは, ファイルが「ロック」されていても, 他のプロセスが読み書きなどのアクセスを行うことができる.

    比較

    機構種類範囲所有者
    fcntl排他, 共有バイト単位で範囲指定プロセス
    flock排他, 共有ファイル単位ファイルディスクリプタ
    lockf排他のみバイト単位で範囲指定

    flock では, ファイルディスクリプタがロックを所有し, 複製 (fork, dup などで作成されるもの) は同じロックを参照する. 複製したファイルディスクリプタのうちいずれかに対して明示的にアンロック操作をした場合か, ロックを参照する全てのファイルディスクリプタが閉じられたときにロックが開放される. ひとつのプロセスが同じファイルに対する複数のファイルディスクリプタを取得した場合には, それぞれに対して独立したロックが生成される.

    Linux では, lockffcntl へのインターフェイスとして実装されている.

    fcntl では, プロセスがロックを所有し, fork で作成された子プロセスには継承されないが, execve の前後ではロックが保存される. ひとつのプロセスが同じファイルに対して複数のファイルディスクリプタを取得している場合には, ロックは共通している. ロックが適用されているファイルを参照しているファイルディスクリプタのいずれかが閉じられたとき, ロックが開放される. すなわち, 例えば /etc/passwd のロックを所有しているときに, あるライブラリ関数がそのファイルを open, close すると, そのファイルへのロックが開放される.

    参考

    2011-01-04

    Samba サーバを SELinux 環境で使用する

    Fedora 14 で smb サービスを起動し, Windows から Linux 上のホームディレクトリを読み出そうとすると,
    smbd/notify_inotify.c:421(inotify_watch) inotify_add_watch returned Permission denied
    といったログが出力され, Windows からディレクトリ内のファイル一覧を取得できないことがある.

    このとき, SELinux がファイルへのアクセスを妨げている可能性がある.

    SELinux のマニュアルはいくつかあるが, samba_selinux(8) に samba を使用する際の操作方法などが例を交えてかかれている.

    これにしたがって,

    sudo setsebool -P samba_enable_home_dirs 1
    と命令すると, Windows からホームディレクトリを読み出せるようになるだろう.

    VIM で Emacs 的な字下げ

    Emacs の標準的な字下げは 2 文字で, さらにブロック{ }の前後で 2 文字づつ字下げするようになっています. 以下の例のような字下げです.
    int
    func (int a)
    {
      if (a==0)
        return 0;
      else
        {
          if (a>0)
            return 1;
          else
            return -1;
        }
    }
    
    VIM でこの字下げに対応するには,
    sw=4 cino={.5s,n-2
    と設定すると良いようです.

    ちなみに, このインデントは, GCC のソースコードでも採用されているようです.

    2011-01-03

    マウスカーソルの移動でアクティブウィンドウの切替

    Linux 上の X では, マウスカーソルが上にあるウィンドウをフォーカスし, 全面に移す機能がある. タスクリストから目的のウィンドウを選択したりタイトルバーをクリックしなくても, 別のウィンドウを選択できるので, 便利なことがある.

    Windows でも同様の機能がないかと探して見たところ, よく似た機能が備わっていることが分かった. このページ Activate a window by hovering over it with the mouse にかかれていた.

    これによると, マウスカーソルが上にくると (1秒くらい経ってから), ウィンドウがアクティブになる. すなわち, ウィンドウにフォーカスが移り, 全面に表示される.

    X と違い Windows では, フォーカスが移ると同時に全面に表示される.

    X では, マウス移動からウィンドウがフォーカス取得までの時間を短くし, フォーカス取得から全面に移動するまでの時間を長くしておくことで, マウスを文献からエディタへ移動してすぐプログラムをタイプし始めるといった使い方ができた. しかし, Windows で同じように操作すると. アクティブになる前に 最初の数文字をタイプして思い通りの動作をしなかった.

    X と Windows とで動作がやや異なるが, それでもこの機能は便利であると思う.