FreeBSD の ndis で Windows のドライバを使う2016年09月03日 12時37分14秒

NDIS 自体はかなり昔から実装されていた機能。Windows のドライバを利用し、コンパイルして作成するので FreeBSD のリリースバージョンに依存する。ドライバを無くさないようにするのが、大切だ。

eMachines eM250-1915 の bwn ドライバが不安定で、ndis を試したら、こちらの方が安定していた。今回 11.0-RELEASE に向けて準備をしようとしたら、ドライバが見付からなくて、手間取った。折角なので、手順も記録。

$ tar xvf Broadcom_BCM43xx_5.100.235.19_win5x.exe
x [wikidrivers.com] Broadcom_BCM43xx_5.100.235.19_win5x/SilentInstall_Driver_Only_XP.bat
x [wikidrivers.com] Broadcom_BCM43xx_5.100.235.19_win5x/Notes.txt
x [wikidrivers.com] Broadcom_BCM43xx_5.100.235.19_win5x/bcm43xx.cat
x [wikidrivers.com] Broadcom_BCM43xx_5.100.235.19_win5x/bcm43xx64.cat
x [wikidrivers.com] Broadcom_BCM43xx_5.100.235.19_win5x/bcmwl5.inf
x [wikidrivers.com] Broadcom_BCM43xx_5.100.235.19_win5x/setup.iss
x [wikidrivers.com] Broadcom_BCM43xx_5.100.235.19_win5x/setup.exe
x [wikidrivers.com] Broadcom_BCM43xx_5.100.235.19_win5x/bcmwlcoi.dll
x [wikidrivers.com] Broadcom_BCM43xx_5.100.235.19_win5x/bcmwlcoi64.dll
x [wikidrivers.com] Broadcom_BCM43xx_5.100.235.19_win5x/bcmwl5.sys
x [wikidrivers.com] Broadcom_BCM43xx_5.100.235.19_win5x/bcmwl564.sys
x [wikidrivers.com] Broadcom_BCM43xx_5.100.235.19_win5x/
$ cd \[wikidrivers.com]\ Broadcom_BCM43xx_5.100.235.19_win5x
ドライバを展開して .inf と .sys ファイルを見付ける。
$ ndisgen bcmwl5.inf bcmwl5.sys
        ==================================================================
        ------------------ Windows(r) driver converter -------------------
        ==================================================================

                        INF file validation

        This .INF file appears to be Unicode.
        Trying to convert to ASCII...
        Done.

        Press return to continue...



        ==================================================================
        ------------------ Windows(r) driver converter -------------------
        ==================================================================

                        Driver file validation

        This .SYS file appears to be in Windows(r) PE format.

        Press return to continue...
リターンキーを押すと次の画面になる。
        ==================================================================
        ------------------ Windows(r) driver converter -------------------
        ==================================================================

                        Driver file conversion

        The script will now try to convert the .INF and .SYS files
        using the ndiscvt(1) utility. This utility can handle most
        .INF files; however, occasionally it can fail to parse some files
        due to subtle syntax issues: the .INF syntax is very complex,
        and the Windows(r) parser will sometimes allow files with small
        syntax errors to be processed correctly which ndiscvt(1) will
        not. If the conversion fails, you may have to edit the .INF
        file by hand to remove the offending lines.

        Press enter to try converting the files now: 

        Conversion was successful.

        Press enter to continue... 
更にリターンキーを押す。
        ==================================================================
        ------------------ Windows(r) driver converter -------------------
        ==================================================================

                        Firmware file conversion

        If your driver uses additional firmware files, please list them
        below. When you're finished, just press enter to continue. (If your
        driver doesn't need any extra firmware files, just press enter
        to move to the next step.)

        > 
他のドライバは要らないので、そのままリターンキー。
        ==================================================================
        ------------------ Windows(r) driver converter -------------------
        ==================================================================


        List of files converted firmware files:


        Press enter to continue... 
次が最後のステージ。コンパイルが始まるので FreeBSD のソースが必要。
        ==================================================================
        ------------------ Windows(r) driver converter -------------------
        ==================================================================

                        Kernel module generation


        The script will now try to generate the kernel driver module.
        This is the last step. Once this module is generated, you should
        be able to load it just like any other FreeBSD driver module.

        Press enter to compile the stub module and generate the driver
        module now:



        Cleaning up... done.

        The file bcmwl5_sys.ko has been successfully generated.
        You can kldload this module to get started.

        Press return to exit.
コンパイルが終ってカーネルモジュールが作成されている。
$ ls *ko
bcmwl5_sys.ko
$ cp bcmwl5_sys.ko /boot/modules
カーネルを再構築しても、なくならない /boot/modules に移動する。

FreeBSD で msdosfs を小文字で2015年11月27日 16時43分53秒

msdosfs、つまり FAT ファイルシステムを FreeBSD でマウントすると全てが大文字で出てくる。この動作は FAT ファイルシステムの長いファイル名と大文字小文字の区別が無い為のようだが、小文字で表示した方が見やすい。

取り敢えず、-s オプションを使うと良いようだ。

$ mount_msdosfs -s /dev/da0s1 /mnt/msdos
$ ls /mnt/msdos
dcim

FreeBSD で NTFS を UTF-8 でマウント2015年11月18日 13時10分51秒

NTFS は元々、UTF-16 でファイル名が保存されている。ntfs-3g は内部で UTF-8 に変換してくれる。そのため、FreeBSD で NTFS を UTF-8 で扱うのには、mount 自体には特別な処理は必要ない。
# kldload fuse
# ntfs-3g /dev/da0s1 /mnt/ntfs
kldload で fuse を読み込んで、そのまま ntfs-3g にてマウントをする。

ここから先は、表示側の設定になる。xterm を UTF8 に設定し、ls も UTF-8 で実行するだけ。

% xterm -en UTF-8
% env LANG=ja_JP.UTF-8 ls /mnt/ntfs/dir
ディレクトリ
dir の中に作っておいたディレクトリが見える。
% env LANG=ja_JP.UTF-8 xterm -en UTF-8 &
どうせ、xterm 自体が UTF-8 用に起動されているので、この中の環境については全て ja に指定した方が楽。

前回

夏時間が終った2015年11月03日 08時30分55秒

アメリカでは、夏時間が十一月一日に終った。時間の針を一時間戻し、遅くなってきている夜明けに合わせる。夏の間に日の出ている時間を長く過ごせるので、夏時間は気に入っている。ここニューヨーク市でも、北海道ぐらいの緯度にあるので、昼間と夜の差が結構大きい。また、気温も低めで、日本から来た人は既に寒いと言っていた。

コンピュータの時刻が Windows と共有するために現地時間に設定されている FreeBSD では Windows の再起動が必要。FreeBSD 側や BIOS で直してしまうと、Windows が次に起動するときに更に更新されて一時間ずれてしまう。

既に恒例の行事。

マウスパッドの故障ではなく設定がおかしくなった2015年09月17日 10時53分23秒

マウスパッドが故障したのかと落胆していたが、以前にも似たような症状を経験したのを思い出した。

「コントロールパネル」を開き、「マウス」を選択。この機種は、その中に、「ELAN」というマウスパッドの設定がある。「コントロールパネル」からも「Multi-Finger」という項目で、直接操作できる。

記憶によれば、前回もこの設定が意図せずに変わってしまい、右クリックがおかしくなっていた。そこで、この「Elan Smart-Pad」を開き、「Default」に戻す。

これで、左クリックが出来ないのが直った。

前回

Samsung RV515 の左クリックが故障したみたい2015年09月16日 11時25分53秒

Samsung RV515 の左クリックが故障したみたいだ。この機種は Windows として使うことが多い。

使い始めは動いていたのに、一旦スリープにしたら、左クリックが使えなくなっていた。右クリックは問題なく動いている。最初はウイルスを疑った。そこで、他のアカウントで試すもこちらでも動かない。そこで、FreeBSD も起動。X を起動して試すも、こちらでも左クリックは使えなかった。

昔、マッキントッシュを使っていた時に、コントロールパネルの読み込み時に動作し始めるウイルスに当たったことがあった。System 7 の PowerPC 603 ぐらいの時代の事だ。

そのうちに USB 接続のマウスでも買うか、倉庫で見付けるかしなくては。

次回

Windows XP を復旧2015年01月16日 14時49分01秒

先日壊した Windows XP の復旧を行った。

何度か再起動を行い、どの様に起動できないかを探る。記憶を辿ると、fdisk 実行前には Windows XP は起動した。MBR とパーティションテーブルはディスク復旧の鍵となる情報なので、バックアップは取ってある。

変更前の fdisk の出力と比べると、Windows XP のパーティションの位置がずれている。fdisk でサイズを小さくしたときに、境界に合わせるかを聞かれて、はいとしておいた。その時に開始位置もずれた様だった。

fdisk -p の出力を用いてパーティションテーブルを更新したが、相変わらず起動しない。パーティションの開始位置の値は合っているが、シリンダの情報が起動していた時とはまだ違っている。そこで、fdisk -u にて対話式に古い値を入力していく。その後、Windows XP は無事に起動した。

FreeBSD の fdisk はあまり良くはない。man 等からすると gpart が MBR の編集も出来て、fdisk の置き換えに当たるようだ。Windows XP の復旧後、gpart で FreeBSD のスライスを追加しようとしたが、書き込みに失敗した為、結局 fdisk を用いて追加した。

前回

eM250 の Windows XP を壊した2015年01月14日 20時44分11秒

eMachines eM250-1915 が最近使われていなかったので、FreeBSD を入れようと準備をしていた。160 GB のハードディスクに Windows XP が入っている。使ってはいないのだが、ここにあるファイルなどが必要になった時に簡単に取り出せるように、起動できる状態は保つもりだった。

時おり、外付けハードディスクから FreeBSD を起動して、必要なドライバや、設定の準備はしていた。

ntfsresize で Windows XP の領域を 30GB まで減らして、再起動をした。ntfsresize で減るのは NTFS の大きさだけ。ディスクの MBR パーティションの大きさはまだ、およそ 140GB。ところで先頭 10GB に修理用のソフトウェアが入っている。この時はまだ、Windows は起動した。その後、FreeBSD の fdisk を用いて 30GB まで減らした後に起動しなくなった。

現在のところ、復旧ソフトウェアで再インストールは出来るみたいだが、それではファイルが保持できないので、選択肢からは外しているところ。これから、復旧方法を調べる。

次回

夏時間が終わったので Windows を一時起動2014年11月03日 06時04分40秒

夏時間が終わり、時計を一時間遅らせた。朝の七時はまだ暗かったのが、それなりの朝日が入ってくる時間に移った。

FreeBSD を使っている機器の時計は現地時間に合わせてあるので、一旦 Windows を起動し、時刻を修正させる。

FreeBSD を起動しっぱなしだったら、自動的に訂正されるのだが BIOS の時間は触らないので、次回起動時にずれてしまう。BIOS から直接替えると Windows が更に変更をしてしまう。

Eclipse ADT が多数のプロジェクトを壊した2014年01月07日 13時41分36秒

最近色々と実験をしている Android。プロジェクトも二桁位作ってあれこれと試している。そんな中、昨夜最悪の自体に見舞われた。

Eclipse ADT は「Search」関連の挙動がおかしい。時折、ポップアップウィンドウが出なくなって、検索できなくなる。そんな時は大体ほかの部分の動作も色々とおかしい。どこをクリックしてもなかなか反応が無かったり、プロジェクトやファイルをクリックしても開かなかったり。何度か見たのはコピーが正しく動作しないのも感度もあった。数行選択して「Ctrl-C]を押すのだが、指定部分をコピーしない。ペイスト出来なければ可愛い方で、まったく関係の無い部分をどこかからか持ってきたり、新しいファイルを作り始めたりもした。

最後に起きたのがプロジェクトがコンパイルできなくなった事。java.lang.Object が見付からないと言って失敗する。.classpath も問題ない。しかし、何もコンパイルは出来ない。諦めて、一日前の zip ファイルに復帰しようとしたら、Eclipse を起動中に zip ファイルのバックアップを作成したため、そのままでは起動出来なかった。それに思ったよりも、あちらこちらの変更が多く、単純には戻したくもなかった。

UNIX だったら find と tar で一気に .java と .xml を移して、.git も配置関係を維持したまま、一度に全て動かせるのだが、Windows ではそうもいかない。最終的には全て手作業で各々のファイルを移して復旧した。二時間位掛かったのだろうか。かなりの徒労だった。

Eclipse ADT の workspace のバックアップは、しっかり ADT を終了してから行う必要がある。ちょこちょこ壊れるのでマメなバックアップを行う予定だ。