2015年12月29日火曜日

ThinkPad G41 で Debian Jessie へのアップグレード失敗

年末を控えて、Debian Wheezy のマシンを Debian Jessie へアップグレードしています。

今日は ThinkPad G41 の Debian Wheezy を Debian Jessie へアップグレードしました。しかし再起動させたところ "Failed to start to Switch Root." のエラー表示と共に起動を中断してしまいました。

起動の冒頭部で停止した ThinkPad G41 の Debian Jessie です。

ネット上をいろいろと検索して対策を探していましたが、最適な答えは見つかりませんでした。そこで Debian Jessie を新規インストールすることとしました。

ネットインストールの Debian インストーラを起動させたところです。

この ThinkPad G41 のハードディスクのパーティションは個人ファイルの存在する /home ディレクトリが他のシステム関連のディレクトリと別のパーティションと分けられていたことから簡単に再インストールすることができました。もちろん以前使用していた個人ファイルはそのまま残しています。Gnome3 のデスクトップの設定などもそのまま流用されるので、以前の状態に戻すのもそれほど大変なことではありませんでした。そしてシステム関連のディレクトリが入っているパーティションを Ext3 から Ext4 へ変更してフォーマットもしておきました。/home ディレクトリは、以前の Ext3 のままです。この部分はハードディスクの交換の時にでもフォーマットを入れ替える予定です。

パーティション設定で /home ディレクトリを再利用するように設定しました。
/home 以外のシステム関連のディレクトリは Ext4 でフォーマットし直しました。



Debian Iceweasel 43.0.2 へアップデート

mozilla.debian.net で提供している最新版の Debian Iceweasel (Firefox) がアップデート(43.0.1 から 43.0.2 へ)しました。

Iceweasel 43.0.2 のアップデート通知
Iceweasel 43.0.2 のクレジット表示

2015年12月28日月曜日

HP dc5800 SFF も Debian Jessie 64bit 版へアップグレード

昨日、富士通 ESPRIMO D5350 のシステムを 32bit 版の Debian Wheezy から 64bit 版の Debian Jessie へアップグレードしましたが、本日は HP dc5800 SFF のシステムを 64bit 版の Debian Jessie へアップグレードしました。

どちらかと言えば、この dc5800 SFF が一番仕事で使用するマシンでしたので、アップグレードには慎重でした。しかし Debian Wheezy のメンテナンス期間の終了(2016年4月25日まで)も近いことから今回アップグレードを行いました。

アップグレードの方法は、個人ファイルが収録されている /home のディレクトリが保存されているパーティションを再利用する形で、Debian Jessie を新規インストールしました。その他のパーティションは Ext4 でフォーマットしました。

システムのインストールの後、以前使用していたアプリケーション・ソフトウェアを順次インストールして作業を終了しました。

昨日の富士通 ESPRIMO D5350 でのアップグレードが予行演習という形となったため、作業はスムーズに終了しました。もちろん 32bit 版のドライバを使用したブラザーのプリンタも快調に動作させることができました。

Debian Jessie amd64 へ ブラザー MFC-695CDN をインストール

仕事用に使用していたデスクトップ・パソコン(富士通 ESPRIMO D5350)の 32bit 版の Debian wheezy を 64bit 版の Debian Jessie へアップグレードしました。

アップグレード作業は、個人データが保存されている /home ディレクトリが存在するパーティションを再利用する方法で 64bit 版 Debian Jessie amd64 を新規インストールしました。

システムのインストールが終了した後、以前使用していたアプリケーション・ソフトウェアを順次インストールして、アップグレード作業を終了しました。この追加のインストールで少し苦労したのがプリンタ・ドライバでした。苦労した理由は、32bit 版のドライバしか用意されていなかったためです。

lib32stdc++6 のインストール

64bit 版のシステムへ 32bit 版のプリンタ・ドライバをインストールするポイントは C++ プログラム用のランタイムライブラリ lib32stdc++6 を事前にインストールしておくことでした。
# aptitude install lib32stdc++6

以下の新規パッケージがインストールされます:
  lib32gcc1{a} lib32stdc++6 libc6-i386{a}
更新: 0 個、新規インストール: 3 個、削除: 0 個、保留: 0 個。
2,699 k バイトのアーカイブを取得する必要があります。展開後に 11.2 M バイトのディスク領域が新たに消費されます。
先に進みますか? [Y/n/?]  Y

32bit 版プリンタ・ドライバのダウンロード

brotherのサイトからドライバをダウンロードしました。
http://support.brother.co.jp/j/s/support/index.html

以下の 32bit 版のプリンタ・ドライバをダウンロードしました。
mfc695cdnlpr-1.1.3-1.i386.deb (lpdドライバ)
mfc695cdncupswrapper-1.1.3-1.i386.deb (cupsラッパ)

32bit 版プリンタ・ドライバ(lpd)のインストール

lpd ドライバを dkpg コマンドでインストールしました。
# mkdir -p /usr/lib/cups/filter/
# mkdir -p /var/spool/lpd/
# dpkg -i --force-all mfc695cdnlpr-1.1.3-1.i386.deb

/etc/printcap の内容を確認しました。
MFC695CDN:\
       :mx=0:\
       :sd=/var/spool/lpd/mfc695cdn:\
       :sh:\
       :lp=/dev/usb/lp0:\
       :if=/opt/brother/Printers/mfc695cdn/lpd/filtermfc695cdn:

CUPS Wrapper ドライバのインストール

CUPS Wrapper ドライバは lpd ドライバを CUPS ドライバとして動作させるものなので、lpd ドライバを必ず先にインストールしておく必要があります。
# dpkg -i --force-all mfc695cdncupswrapper-1.1.3-1.i386.deb

CUPS の設定

ブラウザで localhost:631 へアクセスして CUPS の設定を行いました。

2015年12月26日土曜日

CISCO WAP4410N へ OpenWrt をインストール(失敗)

シスコの無線 LAN アクセスポイント WAP4410N へ OpenWrt Chaos Calmer 15.05 をインストールしました。しかし起動の途中でカーネル・パニックとなって停止する状況でした。どうもインストールに失敗しているようでした。

OpenWrt のインストール作業は、OpenWrt の公式 Wiki に解説してある手法で行いました。
Cisco Linksys WAP4410N [OpenWrt Wiki]
https://wiki.openwrt.org/toh/linksys/wap4410n

以下は OpenWrt のインストールの様子を記録したものです。作業はシリアルコンソールから U-Boot 上で行いました。

LAN 設定

まず最初に LAN ポートの設定を行いました。WAP4410N の初期値のままで、周囲のパソコンの IP アドレスを設定する方法が一般的ですが、我が家にはすでに TFTP サーバを組み込んだ家庭内サーバ(192.168.24.100)が存在していることもあり、WAP4410N を家庭内の LAN に参加させるようにしました。

今回の設定では WAP4410N に 192.168.24.149 の IP アドレスを設定しています。そして TFTP サーバに 192.168.24.100 を設定しています。
ar7100> setenv ipaddr 192.168.24.149
ar7100> setenv serverip 192.168.24.100

ping コマンドで LAN の動作確認をしました。
ar7100>ping 192.168.24.100
Trying eth0
dup 1 speed 1000
Using eth0 device
host 192.168.24.100 is alive

フラッシュメモリの消去

ar7100> erase 0xbf050000 0xbf7cffff
First 0xc last 0x83
 100%
Erased 120 sectors

カーネル(uImage)のインストール

TFTP サーバへ事前にカーネル・イメージ(openwrt-15.05-ar71xx-generic-uImage-gzip.bin)を保存しておきます。この TFTP サーバから tftpboot コマンドで WAP4410N のメモリ上へデータを転送させた後、フラッシュメモリへ書き込み(cp.b コマンド)を行いました。
ar7100> tftpboot 0x81000000 openwrt-15.05-ar71xx-generic-uImage-gzip.bin
Trying eth0
Using eth0 device
TFTP from server 192.168.24.101; our IP address is 192.168.24.149
Filename 'openwrt-15.05-ar71xx-generic-uImage-gzip.bin'.
Load address: 0x81000000
Loading: checksum bad
checksum bad
checksum bad
checksum bad
#######################################################
     ##################################################
     ##################################################
     ##################################################
     ########################################
done
Bytes transferred = 1530928 (175c30 hex)


ar7100> cp.b 0x81000000 0xbf050000 0x175c30
Copy to Flash... done

ルート・ファイルシステムのインストール

TFTP サーバへ事前にカーネル・イメージ(openwrt-15.05-ar71xx-generic-root.squashfs)を保存しておきます。 この TFTP サーバから tftpboot コマンドで WAP4410N のメモリ上へデータを転送させた後、フラッシュメモリへ書き込み(cp.b コマンド)を行いました。
ar7100> tftpboot 0x81000000 openwrt-15.05-ar71xx-generic-root.squashfs
Trying eth0
Using eth0 device
TFTP from server 192.168.24.101; our IP address is 192.168.24.149
Filename 'openwrt-15.05-ar71xx-generic-root.squashfs'.
Load address: 0x81000000
Loading: checksum bad
checksum bad
checksum bad
checksum bad
#######################################################
     ##################################################
     ##################################################
     ##################################################
     ##################################################
     ##################################################
     ##################################################
     ################################
done
Bytes transferred = 2490368 (260000 hex)


ar7100> cp.b 0x81000000 0xbf1e0000 0x260000
Copy to Flash... done

U-Boot の環境変数の変更

U-Boot の環境変数を変更して OpenWrt のカーネルが起動できるように設定しました。
ar7100> setenv bootargs console=ttyS0,115200 init=/sbin/init board=WAP4410N mem=32M
ar7100> setenv bootcmd bootm 0xbf050000

U-Boot の環境変数の保存

U-Uoot の環境変数を saveenv コマンドを使用して保存しました。
ar7100> saveenv
Saving Environment to Flash...
copy old content: sect_addr: BF040000  env_addr: BF040000  offset: 00000000
Protect off BF040000 ... BF04FFFF
Erasing Flash...First 0xb last 0xb
 100%
Erased 1 sectors
Writing to Flash... done

再起動と動作確認

電源の再投入、または reset コマンドで WAP4410N を再起動させました。
ar7100> reset

しかし残念ながら次のメッセージを出力して起動は停止してしまいました。どうもカーネルがルート・ファイルシステムをマウント出来ないようです。原因を調査の上、再度挑戦を行いたいと思います。
[    0.290000] VFS: Cannot open root device "(null)" or unknown-block(0,0): error -6
[    0.300000] Please append a correct "root=" boot option; here are the available partitions:
[    0.310000] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)




CISCO WAP4410N フラッシュメモリのバックアップ

シスコの無線 LAN アクセスポイント WAP4410N のフラッシュメモリのバックアップを行いました。

JTAG によるフラッシュメモリのバックアップは断念しました。そこで OpenWrt のファームウェアをインストールする前にバックアップができないものかと検討していたところ、下記の OpenWrt Wiki を参考にしながら行うことができました。
Generic Backup [OpenWrt Wiki]
https://wiki.openwrt.org/doc/howto/generic.backup

フラッシュメモリの状態確認

シスコのオリジナル・ファームウェアで起動させたあと、シリアルコンソール上で作業を行いました。

まず最初にフラッシュメモリのパーティションの様子を確認しました。
[VAP0 @ wapb2f5d4]# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00040000 00010000 "u-boot"
mtd1: 00010000 00010000 "u-boot-env"
mtd2: 00650000 00010000 "rootfs"
mtd3: 00140000 00010000 "uImage"
mtd4: 00010000 00010000 "nvram"
mtd5: 00010000 00010000 "calibration"

各パーティションデータの読み出し

六つに分かれているパーティションのデータを読み出しました。読み出し先は /tmp ディレクトリとしました。なお作業では dd コマンドが存在しないため、cat コマンドを使用しました。
# cat /dev/mtdblock0 > /tmp/u-boot.img
# cat /dev/mtdblock1 > /tmp/u-boot-env.img
# cat /dev/mtdblock2 > /tmp/rootfs.img
# cat /dev/mtdblock3 > /tmp/uImage.img
# cat /dev/mtdblock4 > /tmp/nvram.img
# cat /dev/mtdblock5 > /tmp/calibration.img

パーティションのデータの転送

各パーティションのデータを ftpput コマンドで転送しました。WAP4410N は DHCP 機能によって家庭内の LAN に接続することが出来ていました。またデータ転送で活躍する nc や scp などのコマンドが存在しなかったため、ftpput を使用しています。 ftpput を使用するに当たっては、作業パソコンに ftp サーバを稼動させておく必要があります。ftp サーバを稼動させる方法は本記事では紹介していません。

コマンドは、転送先の ftp サーバ(192.168.24.50)のユーザ:user、パスワード:password と仮定して記述しています。
# ftpput -v -u 'user' -p 'password' 192.168.24.50 u-boot.img /tmp/u-boot.img
# ftpput -v -u 'user' -p 'password' 192.168.24.50 u-boot-env.img /tmp/u-boot-env.img
# ftpput -v -u 'user' -p 'password' 192.168.24.50 rootfs.img /tmp/rootfs.img
# ftpput -v -u 'user' -p 'password' 192.168.24.50 uImage.img /tmp/uImage.img
# ftpput -v -u 'user' -p 'password' 192.168.24.50 nvram.img /tmp/nvram.img
# ftpput -v -u 'user' -p 'password' 192.168.24.50 calibration.img /tmp/calibration.img

以上で六つのパーティションのデータのバックアップが出来ました。


2015年12月24日木曜日

CISCO WAP4410N の分解(シリアルコンソール、JTAG)

シスコの無線LANアクセスポイントの WAP4410N を分解しました。そしてシリアルコンソールでログインを試みました。さらに JTAG でもアクセスを試みました。

分解作業

分解は比較的簡単でした。底面にある四つのゴム足を引き剥がして、その中にあるネジ(4本)を取り外して、天板を持ち上げました。天板と側面の間に小さなフックが各面一箇所ずつありましたが、爪が小さいこともあって、簡単に外すことができました。

WAP4410N の底面の様子です。
ゴム足を剥がすとネジが見えてきます。
四本のネジを外すと、天板を外すことができます。
天板を外して、内部のボードが見えてきました。

ボードの観察

搭載されている主要チップは次の通りでした。
  • Atheros AR9132-BC1E
  • MX29LV640EBTI-70G (8MB, Flash)
  • NT5DS16M16DS-5T (32MB, RAM)
シリアルコンソールの端子には、すでに 4 ピンのピンヘッダが取り付けられていました。JTAG の端子は、スルーホールの状態でした。

シリアルコンソールと JTAG 端子の様子

裏面を観察すると、部品の配置は少なめでした。意外とボードが汚れていたのががっかりでした。

WAP4410N のボードの裏面

JTAG へピンヘッダ

JTAG 端子のスルーホールへピンヘッダをハンダ付けしました。これが結構苦労しました。
GND 端子の部分は放熱が良好なため、ハンダを抜き取ることができませんでした。信号端子の部分だけハンダを抜き去りました。そして信号端子の部分を先にハンダ付けした後、残りの GND 端子は、 1 ピンずつスルーホールを 100 ワットの大型ハンダゴテで温めながらピンヘッダを押し込むようにしてハンダ付けしました。

JTAG 用ピンヘッダをハンダ付けしたところです。

電源ジャックのセンターピン対策

最近我が家の定番となった電源ジャックのセンターピン対策を行なっておきました。センターピンへリード線をハンダ付けをして、裏面にある Vcc パターンへハンダ付けしておきました。

電源ジャックのセンターピンへリード線をハンダ付けしたところです。

シリアルコンソールの動作確認

シリアルコンソールのピンヘッダへシリアルケーブルを接続して動作確認をしました。接続速度は 115200bps でした。
U-Boot が起動しました。しかし U-Boot へログインするタイミンが不明で、そのままシステムが起動してしまいました。何度かログインを試みたところ、起動する冒頭部分からリターンキーを連打しているとログインできるようです。

シリアルケーブルを接続したところです。
--- U-Boot の起動画面 ---
U-Boot 1.1.4 (Aug 19 2009 - 14:53:37)

AP83 (ar9100) U-boot 0.0.11
32 MB
Top of RAM usable for U-Boot at: 82000000
Reserving 294k for U-Boot at: 81fb4000
Reserving 192k for malloc() at: 81f84000
Reserving 44 Bytes for Board Info at: 81f83fd4
Reserving 36 Bytes for Global Data at: 81f83fb0
Reserving 128k for boot params() at: 81f63fb0
Stack Pointer at: 81f63f98
Now running in RAM - U-Boot at: 81fb4000
Name: MXIC-29LV640DBTC Flash id: 0xC222CB, Size: 8388608 bytes.
Flash:  8 MB
In:    serial
Out:   serial
Err:   serial
Net:   ATHRF1E: Port 0, Neg Success
Link is Down !!!

### main_loop entered: bootdelay=4

### main_loop: bootcmd="bootm 0xbf6A0000"
WAP4410N - Loader Version 1.08
gpio_init called.
cold start!!!
cold_start flag removed.
mac in flash:    64:00:f1:b2:f5:d4
mac in env :    64:00:f1:b2:f5:d4
Hit any key to stop autoboot:  0
ar7100> 

JTAG でアクセス

DLC-5 ケーブルで接続して動作確認をしました。プローブ動作はできましたが、フラッシュメモリのバックアップはできませんでした。バックアップ動作は行うのですが、吸い上げるデータが特定の決まったパターンのデータが連続している状態でした。

--- JTAG のプローブ動作 ---
# ./tjtag3 -probeonly /cable:DLC5

================================================
 EJTAG Debrick Utility v3.0.2.1 Tornado-MOD
================================================

Detected IR chain length = 5
Number of device(s) = 1

IDCODE for device 1 is 0x00000001

Probing bus ... Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000001 (00000001)
*** Found a Atheros AR531X/231X CPU chip ***

    - EJTAG IMPCODE ....... : 01100000010000010100000000000000 (60414000)
    - EJTAG Version ....... : 3.1
    - EJTAG DMA Support ... : No
    - EJTAG Implementation flags: R4k ASID_8 MIPS16 NoDMA MIPS32

Intial value of Control register is 0000000C
Intial value of status register is  0000007F
01111111 (0000007F)

Status bit 7 Busy Inverted pin 11 = 1
Status bit 6 *Ack          pin 10 = 1
Status bit 5 Paper-out     pin 12 = 1
Status bit 4 Select        pin 13 = 1
Status bit 3 *Error        pin 15 = 1
* means low = true, e.g., *Error

VCC connected
values of Control register after init 0x0000000C
value of status register after init   0x0000007F
system reset complete

Issuing Processor / Peripheral Reset ... Done
Enabling Memory Writes ... Skipped
Halting Processor ... ... Done
Init PrAcc ... Done
Clearing Watchdog ... Done

Enabling Atheros Flash Read/Write ... Done
Enter Flash Probe

Probing Flash at (Flash Window: 0x1fc00000) ...
Done

Flash Vendor ID: 00000000000000000000000011000010 (000000C2)
Flash Device ID: 00000000000000000010001011001011 (000022CB)
*** Found a MX29LV640B 4Mx16 BotB     (8MB) Flash Chip ***

    - Flash Chip Window Start .... : 1C000000
    - Flash Chip Window Length ... : 00800000
    - Selected Area Start ........ : 00000000
    - Selected Area Length ....... : 00000000

 *** REQUESTED OPERATION IS COMPLETE ***


2015年12月23日水曜日

CISCO WAP4410N を入手

シスコの無線 LAN アクセスポイントの WAP4410N をインターネット・オークションにて入手しました。

今回入手した CISCO WAP4410N です。

CISCO ブランドの製品は、元々の販売価格が高額であることもあり、インターネット・オークションにおいてもなかなか入手できる金額ではないことが多いのですが、今回は少し頑張って落札してきました。

外観

正方形の弁当箱のような形状をしており、その一角に三本のアンテナを取り付ける小箱が飛び出しています。そして特徴的なことは、本品と同じ形状の製品を積み重ねられるようにゴム足とそのゴム足に対応した窪みが筐体の天板に設けられていました。LINKSYS の無線 LAN ルータでも同じコンセプトの形状になっています。この積み重ねられるデザインが CISCO や LINKSYS の特徴だと思われました。

WAP4410N へスタンドを取り付けて、縦位置にしたものです。
WAP4410N の筐体底部の様子です。
四つのゴム足が天板の窪みに嵌り込む構造のようです。
アンテナ部分の様子です。
直角に三方向へ向かってアンテナを設置できるようになっていました。

動作確認

届いた商品はマニュアル類が欠品している他は、全ての部品が揃ったものでした。早速動作確認を行いました。

早速電源を接続して動作させてみました。私が入手したときには、WAP4410N の DHCP 機能が働いており、自動的に家庭内の LAN の設定が行われました。ユーザ名:admin、パスワード:admin でログインできました。

WAP4410N のステータス画面

無線LAN部分の設定は、一般的な無線 LAN ルータと同様のものでした。マニュアルを参照しなくてもすぐに設定をすることができました。そして CISCO オリジナルのファームウェアでは、四つまでの SSID を設定できるようになっていました。

無線LANの設定画面
日本向け設定もちゃんと用意されていました。

ただ気になったのは、無線 LAN の出力調整の項目が無かったことでした。我が家のように多数の無線LANルータを運用している場合には、出来るだけ無線LAN出力を抑制したいところです。そのため CISCO オリジナルのファームウェアから OpenWrt などのファームウェアへ切り替える予定です。

その他、有線 LAN ポートが IEEE802.3af の PoE に対応しているということでしたので、手持ちの PoE パワーインジェクタを接続して電源を供給してみました。確かに問題なく動作しました。

PoE で電源供給させているところです。
前面にある PoE ランプが点灯しました。

ファームウェア・バージョン

現在インストールされているバージョンは 2.0.4.2 となっていました。CISCO 公式ウェブサイトで最新のファームウェアを確認すると 2.0.7.8 となっていました。バージョンアップしておくか悩ましいところです。現在は日本語対応のファームウェアがインストールされていますが、公開されているファームウェアは英語版かもしれません。(注:2015-12-24 この項目を大きく書き換えました。)

予定

今後、筐体を分解してボードを確認したいと思います。シリアルコンソールと JTAG の端子を取り出せるスルーホールが用意されている模様ですので、ここへピンヘッダを取り付けてフラッシュメモリのバックアップなどを行う予定です。そしてファームウェアの入れ替えをしたいと思っています。

2015年12月22日火曜日

FreeBSD OpenVPN 2.3.9 へアップグレード

FreeBSD の ports へ OpenVPN のアップグレード(2.3.8 から 2.3.9 へ)が到着しました。

今回のアップグレードでは "Tunnelblick XOR Scramble patch" というオプションが追加されていました。Tunnelblick については不明なのですが、どうも Mac で使用されている OpenVPN のクライアント・ソフトウェアのようです。これに関連したパッチなのでしょうか?とりあえず不要なため、オプションに追加せずそのままビルドさせることとしました。

いつものように portmaster で他の ports のアップデートと一緒に更新しました。

OpenVPN 2.3.9 のビルド・オプション


2015年12月19日土曜日

冷却ファンに箱を作りました

パソコン部品の局所的な冷却のためにファンを使っています。我が家では、特にハードディスクの検査時において、長時間に亘って連続動作をすることからハードディスクがかなり高温になるからです。この冷却ファンはパソコンのシャーシ用のものを取り出して単純に机の上のおいて使用しているだけでした。厚みのある冷却ファンでも結構不安定でよく転倒していました。そこで今回は、この冷却ファンを安定させるために安定する箱を作って、その中に冷却ファンを収めるようにしました。

IBM のタワー型パソコンに取り付けられていた 12 センチの冷却ファンです。

箱の製作

写真は 12 センチ角の冷却ファンです。100 円ショップで購入した工作用の木材で箱を作ってその中に冷却ファンを入れ込んだ構造になっています。木材は木工用ボンドで接着して、表面をサンドペーパーで磨いただけの単純なものです。そして冷却ファンは羽根に偏心があるようで、回転を始めると揺れが生じてしまいます。この揺れを吸収するためにクッション材(隙間テープ)で冷却ファンのフレームを支えるようにしています。

木材で作った箱の中に設置した冷却ファンです。
周囲をクッション材で支えています。

さすがに立方体の状態になっていると安定感があります。これであれば冷却ファンが転倒する心配もありません。

安定感のある冷却箱?が出来ました。

冷却ファンのメンテナンス

今回はついでに冷却ファンを分解して羽根の軸のグリスアップをしました。

背面のシールを剥がすと軸を固定している C リングが見えました。

背面のシールを剥がしたところです。
羽根の軸を支えている C リングが見えます。

この C リングを取り外すと羽根を取り外すことができました。二本の時計ドライバ(マイナス)で C リングを開いて取り除きました。

取り外した C リングです。
冷却ファンのフレームから取り外した羽根の内側です。
積年のホコリが溜まっていました。
この機会なので、羽根の部分はしっかり水洗いをしました。


今回分解をして、この冷却ファンの軸受はオイルレスメタルなどではなく、二個のボールベアリングによって支えられていることを知りました。

羽根の軸を支えていたのは二個のボールベアリングでした。

もうボールベアリングの中のグリースはすっかり消耗している模様です。そこで、グリスアップをすることとしました。しかし小さなボールベアリングを分解する技術も技能もありません。そこで、ボールベアリングの僅かな隙間からグリースを注入することとしました。しかし単純にはグリースは入りそうにありません。そこで食品ラップの上にグリースを絞り出し、そこへ二個のボールベアリングを置いてラップで挟み込みました。指先でラップの上からグリースをボールベアリングの隙間に押しこむように揉んでみました。


 ハッキリ言ってグリースがどの程度ボールベアリングに注入されたのか疑問に残るものがありました。しかし私が今できることはこれだけです。このボールベアリングを元の場所へ取り付けて組み立てを行いました。

ボールベアリングを軸受に設置したところです。
二個のボールベアリングの間に存在する空間にグリースを詰めておきました。
最後に軸受の背面にシールで蓋をした後、試運転を行いました。やはりグリスアップの効果がありました。コロコロと鳴いていた冷却ファンが随分と静かになりました。

試運転中の冷却ファンです。





2015年12月18日金曜日

Debian Iceweasel が 43.0 へアップグレード

mozilla.debian.net で配布されている最新版の Iceweasel (Firefox) が 43.0 へアップグレードしました。


Iceweasel 42.0 よりもプライベート・ブラウジング機能が拡充されました。ブロックリストを選択できるようになりました。


そしてアドレス・バーの部分で検索するときにサジェストされるようになりました。


その他、細かな修正・改良が加えられているようです。


Debian Wheezy と Jessie でカーネルのアップデート

このところ Debian のアップデートが続いいています。 クリスマス休暇が近づいたためでしょうか?

今日は、Debian Wheezy と Jessie においてカーネルのアップデートが到着しました。
このカーネル・アップデートによってシステム・バージョンに変化はありませんでした。

Debian Wheezy 7.9
Debian Jessie 8.2

弊ブログにて公開している無線LANアダプタのドライバ・モジュールを使用している読者さんは、モジュールの再インストールが必要です。一緒に公開しているドライバ・モジュールのアップデート・スクリプトの modules-update.sh を使って更新してください。

Debian 用ドライバ保管庫
http://near-unix.blogspot.jp/p/debian.html
「カーネル・アップデート時の注意」をご覧ください。


Debian Wheezy のカーネルアップデート通知

2015年12月17日木曜日

FreeBSD 9.3 の p32 (BIND) アップデート

FreeBSD 9.3 へ p32 アップデート(1個)が到着しました。

名前の解決を行う BIND は着信した要求データを解析して、不正なデータクラスが存在すると応答を拒否します。この不正なデータクラスのキャッシュが残っていると、その後の要求も拒否される問題が存在するそうです。このバグを利用して攻撃者は正常な名前の解決の要求を拒否させることができるそうです。
FreeBSD-SA-15:27.bind
https://www.freebsd.org/security/advisories/FreeBSD-SA-15:27.bind.asc

/usr/src/UPDATING の内容

20151216        p32     FreeBSD-SA-15:27.bind
        Fix BIND remote denial of service vulnerability. [SA-15:27]

ソースツリーの更新

subversion でソースツリーを更新しました。
# svn update /usr/src
Updating '/usr/src':
G    /usr/src/UPDATING
U    /usr/src/contrib/bind9/lib/dns/include/dns/message.h
U    /usr/src/contrib/bind9/lib/dns/message.c
U    /usr/src/contrib/bind9/lib/dns/resolver.c
U    /usr/src/contrib/bind9/lib/dns/xfrin.c
U    /usr/src/sys/conf/newvers.sh
Updated to revision 292394.

ユーザランドの再ビルド

今回のアップデートでは、ユーザランドの再ビルドが必要です。
# cd /usr/src
# make buildworld

ユーザランドのインストール

# make installworld

マシンの再起動

# reboot


Debian Bind と GRUB でアップデート

Debian Jessie と Wheezy において Bind や GRUB や Iceweasel (38.4.0 から 38.5 へ)のアップデートが到着しました。

Debian Wheezy の場合のアップデート通知

玄人志向 玄箱(Debian Jessie)Courier-IMAP を SSL 対応へ

先日玄箱へインストールした IMAP メールサーバの Courier-IMAP を SSL へ対応しました。これで家庭内 LAN 内だけでなく、外部のインターネット回線経由でメールサーバへアクセスしたときも通信内容が秘匿化されます。安心して自宅の IMAP メールサーバへアクセスすることができます。

SSL 対応パッケージのインストール

apt-get で Courier-IMAP の SSL 対応パッケージをインストールしました。
# apt-get install courier-imap-ssl

依存関係で courier-imap-ssl の他に courier-ssl もインストールされました。

インストールの最後は SSL の証明書の作成が自動的に行われました。証明書は事前に定められた内容で作成されているようです。確かに自分自身で設定することがありませんでした。本格的に使用する場合には、別途証明書を作成する必要がありそうです。
Generating DH parameters, 768 bit long safe prime, generator 2
This is going to take a long time
......................................+...........................................+....+..................+..............................................................+......................................+.....................................................................+................................+...........................+..............................................................+...+.................................+.......................................+.............+.....+....................+...........++*++*++*++*
Setting up courier-imap-ssl (4.15-1.6) ...
Generating a 4096 bit RSA private key
...............................................................................++
...................................++
writing new private key to '/etc/courier/imapd.pem'
-----
subject= /C=US/ST=NY/L=New York/O=Courier Mail Server/OU=Automatically-generated IMAP SSL key/CN=localhost/emailAddress=postmaster@example.com
notBefore=Dec 16 16:41:24 2015 GMT
notAfter=Dec 15 16:41:24 2016 GMT
SHA1 Fingerprint=0C:7B:17:**:**:**:**:**:**:**:**:**:**:**:**:**:**:34:35:C6
Processing triggers for systemd (215-17+deb8u2) ...

Courier-IMAP の再起動と動作試験

Courier-IMAP の再起動(注:2015-12-20 起動方法を修正しました)
# /etc/init.d/courier-authdaemon restart
# /etc/init.d/courier-imap restart
# /etc/init.d/courier-imap-ssl restart

操作しているパソコンのメールソフトウェア(Thunderbird など)の設定を変更します。
サーバ設定の部分でセキュリティ設定の部分を以下のように変更しました。
セキュリティ設定
  接続の保護:SSL/TLS
  認証方式:通常のパスワード認証
 (ポート設定が 993 となっていれば正常です)
この状態でメールサーバのメールをランダムに読み出します。これで異常が発生しなければインストール成功です。パスワードの問い合わせがあった場合には、どこか間違えがあります。


2015年12月16日水曜日

FreeBSD php5-mbstring のアップデートで oniguruma もアップデート

FreeBSD の ports へ php5 の拡張モジュールの mbstring のアップデート(php5-mbstring-5.4.45 から php5-mbstring-5.4.45_1 へ)が到着していました。
===>>> The following actions will be taken if you choose to proceed:
    Upgrade php5-mbstring-5.4.45 to php5-mbstring-5.4.45_1
    Install devel/oniguruma5

portmaster で更新エラー

いつものように portmaster で更新しようとしたところ依存関係にある oniguruma のインストールエラーで停止してしまいました。

エラーの内容としては oniguruma4 がインストールされている場所へ oniguruma5 をインストールしようとしているということでした。oniguruma が 4 から 5 へアップグレードしていることが原因でした。

メタデータの変更で更新

そこでこの oniguruma のパッケージのメタデータを変更して portmaster で更新が行えるようにしました。

まずは現在インストールされているバージョンを確認しました。
# pkg info | grep oniguruma
oniguruma4-4.7.1_1             BSDL Regular Expressions library compatible with POSIX/GNU/Perl

oniguruma の ports ディレクトリを確認しました。
# whereis oniguruma4
oniguruma4: /usr/ports/devel/oniguruma4

oniguruma のパッケージのメタデータを 4 から 5 へ変更しました。注意 "set" のオプションは「小文字のオー」です。
# pkg set -o devel/oniguruma4:devel/oniguruma5
Change origin from devel/oniguruma4 to devel/oniguruma5 for oniguruma4-4.7.1_1? [y/N]: y

portmaster で更新を行いました。
# portmaster -ad
===>>> The following actions will be taken if you choose to proceed:
    Upgrade oniguruma4-4.7.1_1 to oniguruma5-5.9.6
    Upgrade php5-mbstring-5.4.45 to php5-mbstring-5.4.45_1
===>>> Proceed? y/n [y]
      ↓
      ↓
      ↓
===>>> The following actions were performed:
    Upgrade of oniguruma4-4.7.1_1 to oniguruma5-5.9.6
    Upgrade of php5-mbstring-5.4.45 to php5-mbstring-5.4.45_1

無事 portmaster で更新できました。

FreeBSD 9.3 の p31 (OpenSSL) アップデート

FreeBSD 9.3 へ p31 アップデート(1個)が到着しました。OpenSSL において不正な X509 のデータを送りつけられるとメモリリークが発生するそうです。
FreeBSD-SA-15:26.openssl
https://www.freebsd.org/security/advisories/FreeBSD-SA-15:26.openssl.asc

/usr/src/UPDATING の内容

20151205        p31     FreeBSD-SA-15:26.openssl

        Fix OpenSSL X509_ATTRIBUTE memory leak. [SA-15:26]

ソースツリーの更新

subversion でソースツリーを更新しました。
# svn update /usr/src
Updating '/usr/src':
G    /usr/src/UPDATING
U    /usr/src/crypto/openssl/crypto/asn1/tasn_dec.c
U    /usr/src/sys/conf/newvers.sh
Updated to revision 292310.

ユーザランドの再ビルド

今回のアップデートでは、ユーザランドの再ビルドが必要です。
# cd /usr/src
# make buildworld

ユーザランドのインストール

# make installworld

マシンの再起動

# reboot

2015年12月15日火曜日

玄人志向 玄箱(Debian Jessie)へ IMAP メールサーバを設置

Debian Jessie をインストールしている玄箱へ IMAP メールサーバ(Courier-imap)を設置しました。

我が家ではすでに自宅サーバ(FreeBSD 9)で IMAP メールサーバの Courier-imap を稼動させています。単純に FreeBSD から Debian への焼き直しという感じのつもりでしたが、実際にはいろいろと苦労がありました。

メールサーバの設置は結構奥深いものがあって、私自身も全てを体験したわけではありません。今回の記事では、プロバイダのメールサーバに届いているメールを受信して、パソコンのメールソフトウェアでメールを閲覧できる最低限の設定までです。玄箱経由のメール送信はまだできません。

Exim4 のインストール

メール転送ソフトウェア(MTA)の Exim4 をインストールしました。自宅サーバの FreeBSD 9 では MTA に Sendmail を使用していましたが、ここでは Debian 標準の Exim4を使用することとしました。なお今回の記事ではメール送信の部分を省略しますので、 Exim4 の設定も行なっていません。
# apt-get update
# apt-get install exim4

Courier-imap のインストール

単純に家庭内 LAN の中だけでアクセスする場合には、 SSL などによる秘匿化は無理に必要ありませんので、ここでは暗号化なしで設定を行いました。次の通り Courier-imap と gamin の二つをインストールするだけで動作可能です。インストールの途中で「ウェブベースでの管理ソフトウェアのためにディレクトリを作成するか」の問い合わせがありましたが、不要でしたので "NO" で応答しておきました。
# apt-get update
# apt-get install courier-imap gamin

ユーザ・アカウント

IMAP メールサーバの個人データを保管するために、ユーザ・アカウントを玄箱へ作成します。Debian などの Linux マシンを使用している場合には、Linux マシンで使用しているユーザ名で登録するのが後で混乱を防ぐためには有効です。以下は mailuser というユーザ・アカウントを作成した様子を示します。対話式にアカウントを作成しました。
# adduser mailuser (mailuser でアカウントを作成)
Adding user `mailuser' ...
Adding new group `mailuser' (1001) ...
Adding new user `mailuser' (1001) with group `mailuser' ...
Creating home directory `/home/mailuser' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: (希望するパスワードを入力)
Retype new UNIX password: (再度パスワードを入力)
passwd: password updated successfully
Changing the user information for mailuser
Enter the new value, or press ENTER for the default
    Full Name []: IMAP Mailuser
    Room Number []:
    Work Phone []:
    Home Phone []:
    Other []:
Is the information correct? [Y/n] y

IMAP メールサーバ用ディレクトリ作成

一度玄箱からログアウトした後、再度上記で作成したユーザ・アカウントでログインし直します。ログイン出来た場所がユーザのホーム・ディレクトリです。このホームディレクトリへ IMAP メールサーバ用ディレクトリを作成することとなります。 su コマンドで特権ユーザへ昇格した後、maildirmake コマンドで IMAP メールサーバ用のディレクトリを作成します。
$ su
Password: (パスワードを入力)
# maildirmake Maildir
# chown mailuser:mailuser -R Maildir

IMAP メールサーバの動作確認

以上で IMAP メールサーバの最低限のインストールが終了しました。動作するか確認するために、手元のパソコンの IMAP 対応のメールソフトウェア(Thunderbirdなど)で玄箱の IMAP サーバへメール設定をしました。Thunderbird では対話式に玄箱の IP アドレスやユーザ・アカウントを入力すると、自動的に玄箱のポートを捜索してメール設定をしてくれるはずですが、何故か上手く設定できませんでした。そこで手動で設定しました。
(2016-01-03 追記:Thunderbird のバージョンによっては自動設定が正常にできるようです。)

 Thunderbaird の例
サーバの種類:IMAP サーバ
サーバ名:(玄箱の IP アドレス)
ユーザ名:(上記で作成したユーザ・アカウント)
ポート:143

セキュリティ設定
 接続の保護:なし
 認証方式:平文のパスワード認証

ユーザ名などを入力して設定を開始しました。
自動設定はできませんでした。手動で設定しました。
「接続する上での危険性を理解しました」へチェックを入れて「完了」ボタンで設定終了

Fetchmail と Procmail のインストール

上記で IMAP メールサーバへアクセスすることが出来たところで、プロバイダのメールサーバまでに到達しているメールを玄箱の IMAP メールサーバへ読み込むためのソフトウェアの Fetchmail と Procmail をインストールします。

なおメールの流れは次のようになります。
[プロバイダ] - [Fetchmail] - [Procmail] - [Courier-imap]

# apt-get install fetchmail
# apt-get install procmail

Fetchmail の設定

設定ファイル(.fetchmailrc)を次のように設定しました。なお定期的にメールを読みこませる方法は、Fetchmail のデーモン機能ではなく、cron で行わせるようにしました。ここでは Gmail からメールを受信することを前提に記述しています。
$ touch .fetchmailrc
$ chmod 600 .fetchmailrc
$ vi .fetchmailrc
--- .fetchmailrc の内容 ---
set nobouncemail

defaults
    uidl
    no mimedecode
    keep (メールをサーバへ残す場合)

poll pop.gmail.com
    protocol imap (または pop3)
    port 993    (または 995)
    username "(ユーザ名)@gmail.com"
    password "(パスワード)"
    ssl
#   fetchall (テスト時に再度全てのメールを読み出すとき)
    mda "/usr/bin/procmail"

Fetchmail の受信テスト中に発見した問題ですが、玄箱のホスト名 "kurobox" の名前の解決ができておらず、受信エラーとなっていました。そこで /etc/hosts を修正しました。
# vi /etc/hosts

127.0.0.1    localhost
127.0.1.1    kurobox (この部分を追加)
::1        localhost ip6-localhost ip6-loopback
ff02::1        ip6-allnodes
ff02::2        ip6-allrouters

/etc/default/fetchmail は、デーモン動作用のファイルです。今回は修正しません。
START_DAEMON=no (no のままにしておきます)
/etc/fetchmailrc もデーモン動作で必要ですが、ここでは必要ありません。

Procmail の設定

設定ファイル(.procmailrc)を次のように設定しました。Procmail は宛先や差出人などの条件によってメールを保存する場所を変更したり、余所へ転送させる機能があります。今回は基礎の基礎ということで、条件分岐(レシピ)を記述せず、全て Courier-IMAP で使用する Maildir へ転送させる内容です。
$ touch .procmailrc
$ chmod 600 .procmailrc
$ vi .procmailrc
--- .procmailrc の内容 ---
PATH=/bin:/usr/bin:/usr/local/bin
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/ (※)
LOGFILE=$MAILDIR/procmaillog
LOCKFILE=$HOME/.lockmail

(※)分岐条件(レシピ)に当てはまらないものは全て "DEFAULT="  で指定したディレクトリへ配送されます。ここでは条件分岐がありませんので、Maildir へ全て配送されます。

動作確認(単独動作)

以上で設定は終了です。単発で動作させて異常が発生しないか確認しました。もし問題があればネット上を検索して対処してください。
$ fetchmail
  ↓
プロバイダのメールサーバへ溜まっていたメールが次々と受信されるはずです。
  ↓
reading message (ユーザ名)@gmail.com@gmail-pop.l.google.com:324 of 324 (2402 header octets) (37578 body octets) not flushed

動作が終わったところで、操作するパソコンのメールソフト(Thunderbird など)で確認をしてください。「受信トレイ」の部分へメールが受信されていれば成功です。

下記のような結果となった場合には認証エラーですので設定を見直してください。
fetchmail: Authorization failure on (ユーザ名)@gmail.com@pop.gmail.com
fetchmail: For help, see http://www.fetchmail.info/fetchmail-FAQ.html#R15
fetchmail: Query status=3 (AUTHFAIL)

cron で定期受信

cron を使って fetchmail コマンドを定期的に実行させて、メールを受信させるようにしました。ここでは 5 分おきに受信するようにしました。
$ crontab -e

# m h  dom mon dow   command
*/5   *   *   *   *   /usr/bin/fetchmail >/dev/null 2>&1

動作確認(cron の定期受信)

上記の cron の設定が終了したら、既に Fetchmail による自動受信は開始されています。
Fetchmail メールで読み出しているサーバ(ここでは Gmail)へテストメールを送信します。送信して 5 分以内に IMAP メールサーバへ配送されていれば成功です。

FreeBSD Apache 2.4.18 へアップデート

長らく動きのなかったウェブサーバの Apache にアップデート(2.4.17 から 2.4.18 へ)が到着しました。


いつものように portmaster で更新を行なっておきました。

Apache 2.4.18 のビルドオプション

2015年12月13日日曜日

ThinkPad T30 へクロック制御(CPU Frequency Scaling)

Debian Jessie のデスクトップ Gnome3 (FlashBack mode) で運用を開始した ThinkPad T30 ですが、やはり動作が鈍いようです。Mobile Pentium4 プロセッサ(2GHz)を搭載していることもあり、クロック制御(CPU Frequency Scaling)が行われているはずなので、確認してみました。

現状確認

プロセッサ情報の確認
$ cat /proc/cpuinfo

プロセッサの情報の一覧の中から "cpu MHz" の項目を探しだしてみたところ 1200MHz となっていました。少し負荷が掛かっている状態でも 1200MHz と表示されました。これはクロック制御器(ガバナ)の動作が「オンデマンド(ondemand)」か「パワーセーブ(powersave)」のモードの時によく見かける状態でした。

cpufrequtils のインストール

そこでプロセッサのクロック制御を行う cpufrequtils をインストールして、クロックをより高速側で制御するように変更しました。
# aptitude update
# aptitude install cpufrequtils

cpufrequtils のインストールが終わったら、クロック制御(ガバナ)の定義を行いました。定義ファイル(/etc/default/cpufrequtils)は存在しませんので新規で作成します。そして編集します。
# touch /etc/default/cpufrequtils
# vi /etc/default/cpufrequtils

設定する内容はクロック制御(ガバナ)の選択です。以下の一行を記述します。私の場合は積極的に最高速度が出る「コンサバティブ(conservative)」にしました。プロセッサの冷却ファンの音が気にならない人は常時最高速の「パフォーマンス(performance)」とするとよいと思います。
GOVERNOR="conservative"
performance = 常時最高速
conservative = 積極的に最高速度
ondemand = 必要なときに最高速
powersave = 常時低速

クロック制御による効果

これが結構快適です。常に動作が一歩遅れる感じがありましたが、それが無くなりました。元々 Pentium4 2GHz のプロセッサなので、そこそこ遅いのは承知の上でしたが、より遅くなる感じが嫌でした。このクロック制御で少し快適に使えるようになりました。

手動で一時的に変更する場合

クロック制御(ガバナ)を一時的に変更するときには、特権ユーザとなって次のようにコマンドを実行します。
# cpufreq-set -g performance

参考ウェブサイト

CPU frequency scaling -  Debian Wiki
https://wiki.debian.org/HowTo/CpuFrequencyScaling

2015年12月12日土曜日

ThinkPad T30 へ WM3B2915ABG を装着

分解掃除の終わった ThinkPad T30 へ無線LANアダプタの WM3B2915ABG を装着しました。


無線 LAN カードの交換 

元々 IEEE 802.11b のカード(Cisco Aironet 350 シリーズ)が装着されていました。これの代わりに IEEE 802.11 a/b/g 対応の Intel WM3B2915ABG を装着しました。

右側が元々装着されていた無線LANカード(Aironet350)です。
WM3B2915ABG を装着したところです。

no-1802 の実行

WM3B2915ABG を装着した ThinkPad T30 を起動させてみると、いつもの 1802 エラーが発生していました。IBM 認定のカードでないとこの 1802 エラーが発生します。このエラーを解消しないと起動を開始してくれないという非常に厄介なエラーです。

1802 エラーが発生したところです。

過去の ThinkPad では、殆ど no-1802 による BIOS データの書き換えで対応していました。今回も no-1802 で対応することとしました。
Problem with unauthorized MiniPCI network card
http://thinkwiki.org/wiki/Problem_with_unauthorized_MiniPCI_network_card

ThinkPad 1802 Error Fix
http://www.command-tab.com/2006/02/26/thinkpad-1802-error-fix/

底面の Mini-PCI スロットへ装着した WM3B2915ABG を一時的に取り外します。フロッピー起動のプログラムで、立ち上がった後、"no-1802" と打ち込んでリターンキーで実行させると BIOS データの書き換えは終了します。電源を切った後、再び WM3B2915ABG を装着して電源を投入すると起動するはずです。

no-1802 をインストールしたフロッピーディスクです。
フロッピーから起動させて no-1802 を実行させたところです。

Debian Jessie で WM3B2915ABG を使う

この ThinkPad T30 には Debian Jessie がインストールしてあります。この Debian Jessie へ WM3B2915ABG を認識させて動作させました。設定方法は Debian Wiki に詳しく記述してありますので、そこを参考にして行いました。
ipw2200 - Debian Wiki
https://wiki.debian.org/ipw2200

まずは WM3B2915ABG が電気的に接続されているか lspci コマンドで確認しました。
# lspci
02:02.0 Network controller: Intel Corporation PRO/Wireless 2915ABG [Calexico2] Network Connection (rev 05)

/etc/apt/sourices.list の設定を行った後、aptitude でファームウェアのインストールを行いました。途中、ライセンスの確認などがありました。
# aptitude update
# aptitude install firmware-ipw2x00 wireless-tools

ライセンスの表示
ライセンスの許諾内容を認めるかどうか?の問い合わせ

ファームウェアのインストールが終わったところで、ファームウェアの再読み込み(リロード)を行います。
# modprobe -r ipw2200 ; modprobe ipw2200

動作確認

以上で無事 WM3B2915ABGを認識して動作を開始しました。もちろん使用した WM3B2915ABG は、Linux マシンで 5GHz 帯の IEEE 802.11a モードに対応するように EEPROM を修正したものです。
Intel WM3B2915ABG 無線 LAN アダプタが 5GHz 帯で動作しました
http://near-unix.blogspot.jp/2015/03/intel-wm3b2915abg-lan-5ghz.html