自宅のリビングになにかしら端末が必要なのですが、たいしたことをするわけではないのでお金をかけるのもめんどうだし、Windows XP時代のラップトップであるnx6120を使えるようにしようかと。
まあ、なんだかんだと理由をつけてはいますが、ただ古いコンピュータを動かして遊びたいだけです・・・。
無線でインターネットにつながってネットサーフィンと電子メール、ときどき仕事の用事をそのまますませられれば必要にして十分、というくらいの使いかたを想定しています。
もちろんWindowsで動かすわけにはいかないので、オペレーションシステムはLinuxにするとして、まずは軽くて日本語環境のととのったRed Hat系ディストリビューション「Vine Linux」をインストールしてみることにしました。
なにしろ古い機械のこと、ハードウェア互換性などの問題が発生することも想定されるので、いろいろためしてみてけっきょくべつのディストリビューションになるかもしれませんが。
代替オペレーションシステムの候補としては、やっぱりUbuntu(というかLubuntu)ということになるんでしょうね。
まずはWindows上での準備作業から。
「https://vinelinux.org/」画面で「ダウンロード」ボタンをクリック、「PC/AT互換機(32bit)」を選択してから、「ダウンロード」ボタンを押下します。
「Vine65-DVD-i686.iso」ファイルをダウンロードしたら、ダウンロードしたフォルダへ移動して、イメージファイルの拡張子を「iso」から「img」へ変更のうえ保存します。
「Win32DiskImager」で「Vine65-DVD-i686.img」を選択、インストールに使用するUSBメモリを接続したDeviceを指定して「Write」ボタンを押します。
これでUSBメモリに「Vine Linux 6.5 (32 bit)」のインストールイメージが書き込まれます。
nx6120にUSBメモリを挿入、電源を入れてすぐ「F10」を押してBIOS設定画面へいき、USBドライブからブートします。
インストール手順は標準的で、言語とキーボードの選択→パーティションとネットワークの設定→タイムゾーンの選択→ユーパーユーザのパスワードと一般ユーザの設定→インストールパッケージの選択、という流れです。
インストールメディアを抜いてから再起動するように指示されるので、UBSメモリを取りはずしてから「Enter」キーを押下して、コンピュータをリブートさせます。
オープニング画面で登録したユーザを選び、設定したパスワードを入力すれば、Vine Linuxのデスクトップがあらわれます。
そのあと、hatakazuの使用形態にあわせて設定した部分を、以下に列挙しておきます。
Google Chromeは32ビット版の提供を終了しているので、どこかで古いrpmファイルを入手できればインストール可能ですが、依存関係に問題が発生するかも。
$ sudo apt-get install google-chrome-stable_current_i386.rpm
Chromeがインストールできない場合はChromiumをインストールすることになりますが、JAVA(JRE)インストールのうえ、Chromiumプラグインフォルダ「/usr/lib/chromium/plugins」から「/usr/java/jreXXX/lib/i386/libnpjp2.so」へシンボリックリンクをはることで、ChromiumからJavaを利用できるようになります。
まずは「https://www.java.com/en/download/linux_manual.jsp」から「jre-8u151-linux-i586.rpm」を取得、以下のコマンドでインストールします。
$ sudo apt-get install jre-8u151-linux-i586.rpm
つづいて、Chromiumプラグインフォルダ「/usr/lib/chromium/plugins」へ移動、「/usr/java/jreXXX/lib/i386/libnpjp2.so」へシンボリックリンクをはります。
$ cd /usr/lib/chromium/plugins
$ sudo ln -s /usr/java/jreXXX/lib/i386/libnpjp2.so
USBディスクから起動するChromium OSと共存するなどの場合は、「システム」→「システム管理」→「日付と時刻」の「タイムゾーン」タブで、「システムクロックでUCTを使用」にチェックをいれておかないと、時計がどんどんずれていってしまいます。
ついでにNTPサーバを指定、「time.google.com」「s2csntp.miz.nao.ac.jp」「ntp.jst.mfeed.ad.jp」「ntp.ring.gr.jp」「ntp.nict.jp」あたりを使えば、まちがいないと思います。
7z圧縮形式に対応するため、「p7zip」「p7zip-plugins」をインストールします。
$ sudo apt-get install p7zip p7zip-plugins
exfatフォーマットに対応するため、「fuse-exfat」「exfat-utils」をインストールします。
「mkfs.exfat /dev/sdx」のようなコマンドで、exfat形式でフォーマットすることもできるようになります。
$ sudo apt-get install fuse-exfat exfat-utils
無線LAN:BCM4306用ファームウェア「b43-openfwwf」インストール ← 以前のバージョンのVine Linuxなら、「sudo apt-get install b43-openfwwf」コマンド一発で無線LAN接続できるようになっていたのですが、カーネルがバージョンアップしたせいか、Vine Linux 6.5ではこの方法はうまくいきませんでした。
BroadcomのBCM4306チップ用の適切なファームウェアをインストールする必要があり、nx6120でVine Linux 6.5を使ううえでいちばん手間のかかる部分ですが、やはりきちんと無線LAN接続できるようにしておかないと不便です。
まずは、以下のコマンドを実行し、チップ型式を確認します。
$ lspci -vnn -d 14e4:
かえってきた値は「14e4:4320」なので、legacyではないほうのb43でサポートされる「BCM4306/3」チップということになります。
準備として、BroadcomのドライバからLinux用ファームウェアを切り出してくるツール、「b43-fwcutter」をインストールします。
$ wget http://bues.ch/b43/fwcutter/b43-fwcutter-018.tar.bz2 http://bues.ch/b43/fwcutter/b43-fwcutter-018.tar.bz2.asc
$ gpg --verify b43-fwcutter-018.tar.bz2.asc
$ tar xjf b43-fwcutter-018.tar.bz2
$ cd b43-fwcutter-018
$ make
$ sudo make install
あるいは、「b43-fwcutter-018」ディレクトリにコマンドを保存しておいて、このディレクトリから直接実行してもO.K.です。
つづいて、適切なバージョンのドライバをダウンロードして、「b43-fwcutter」でファームウェアを切り出します。
「$ uname -r」で確認したカーネルのバージョンが3.2以降なら「broadcom-wl-5.100.138」を、それより古い場合は「broadcom-wl-5.10.56.27.3」を使うことになります。
「Vine Linux 6.5」では「4.4.92-1vl6」という値がかえってきたので、前者に該当します。
カーネルのバージョンが3.2以降
$ export FIRMWARE_INSTALL_DIR="/lib/firmware"
$ wget http://www.lwfinger.com/b43-firmware/broadcom-wl-5.100.138.tar.bz2
$ tar xjf broadcom-wl-5.100.138.tar.bz2
$ sudo b43-fwcutter -w "$FIRMWARE_INSTALL_DIR" broadcom-wl-5.100.138/linux/wl_apsta.o
カーネルのバージョンがそれより古い場合
$ export FIRMWARE_INSTALL_DIR="/lib/firmware"
$ wget http://mirror2.openwrt.org/sources/broadcom-wl-5.10.56.27.3_mipsel.tar.bz2
$ tar xjf broadcom-wl-5.10.56.27.3_mipsel.tar.bz2
$ sudo b43-fwcutter -w "$FIRMWARE_INSTALL_DIR" broadcom-wl-5.10.56.27.3/driver/wl_apsta/wl_prebuilt.o
export関数をつかって「lib/firmware」ディレクトリに書き込むよりも、ホームディレクトリに書き出してから「lib/firmware」ディレクトリに移動させたほうが、操作としてはかんたんかもしれません。
ここまででBroadcomチップが認識され、Wi-Fi接続が可能になりそうなものなのですが、「Wireless is disabled by hardware switch」と表示されてWi-Fi接続がアクティブになりません。
「Wireless is disabled by hardware switch」状態になり、Wi-Fiを有効化できない場合は、「rfkill」コマンドが必要になることがあります。
「https://www.kernel.org/pub/software/network/rfkill/」から「rfkill-0.5.tar.bz2」を取得、解凍のうえ、「make」→「make install」でインストールします。
$ tar xjf rfkill-0.5.tar.bz2
$ cd rfkill-0.5
$ make
$ sudo make install
あるいは、「rfkill-0.5」ディレクトリにコマンドを保存しておいて、このディレクトリから直接実行してもO.K.です。
$ sudo rfkill list (Wi-Fiデバイスがブロックされているかどうか確認)
$ sudo rfkill unblock all (ブロックされているデバイスのブロック解除)
きちんとロック解除されたら、以下のコマンドでネットワークを起動します。
$ sudo /etc/init.d/network start
起動時に自動的にネットワークに接続したい場合は、以下のコマンドを実行しておきます。
$ sudo chkconfig network on
Wi-Fiデバイスをめぐるモジュールの競合を回避するため、ブラックリストを整備します。
どうやらb43で動いているようなので、「/etc/modprobe.d/modprobe.conf」ファイルを開き、それ以外のモジュールをブラックリストに追加します。
--
# to avoid b43 conflict
blacklist brcmsmac
blacklist wl
--
※いろいろやってはみたものの、けっきょく現時点でWi-Fiがブロックされてしまう状態を回避することができなかったので、とりあえず起動スクリプトにrfkillコマンドを書き込んで起動時にブロック解除しています。
「/etc/rc.d/rc.local」に以下の行を追加しました。
--
# enable Wi-Fi
rfkill unblock all
--
なんとかしてブロックされる原因をつきとめて、もうすこしスマートに起動できるようにしたいですね。
でもまあ、いちおうふつうに使える環境はととのったので、とりあえずこのまま「Vine Linux 6.5」でいろいろやってみようと思っています。
参考ウェブページ一覧表(順不同)
http://blog.indeep.xyz/2015/05/setup_wlan_on_lubuntu_to_compaq6710b/
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/923usebcm43xx.html
http://mkserver.dip.jp/vinelinux/perform/hardware/0013.html
http://d.hatena.ne.jp/sutara_lumpur/20130124/1359015882
https://wireless.wiki.kernel.org/en/users/Drivers/b43#Other_distributions_not_mentioned_above
http://linuxwireless.sipsolutions.net/en/users/Drivers/b43/
https://wiki.archlinux.jp/index.php/Broadcom_%E3%83%AF%E3%82%A4%E3%83%A4%E3%83%AC%E3%82%B9
https://wireless.wiki.kernel.org/en/users/Documentation/rfkill
https://www.kernel.org/pub/software/network/rfkill/
https://git.kernel.org/pub/scm/linux/kernel/git/jberg/rfkill.git
https://wiki.archlinux.jp/index.php/Broadcom_%E3%83%AF%E3%82%A4%E3%83%A4%E3%83%AC%E3%82%B9