Tuesday, September 23, 2014, 09:45 - OS / Unix, *BSD, Solaris
Posted by ELIN
検索しても同じ問題に直面しているという情報はあれど"これだ"というような明確な回答が見当たらなかったので、普通にやったら何の問題も無く解決できるような簡単な話なのかなあ、と思いつつ似たようなことをやっている情報を見付ける
http://dokuosan.net/zousan/nikki277.html
http://uenomemo.blog31.fc2.com/blog-entry-405.html
http://www.ellinikonblue.com/blosxom/UNIX/NAS4Free/20140312NAS4FreeCompile.html
これらを読む限りは至って普通の方法で動かすことが出来そうではある

pfSense 2.1.5はhttps://doc.pfsense.org/index.php/PfSense_and_FreeBSD_Versionsによると8.3-RELEASE-p16であるので、その環境を作成する
これには8.3のインストールの"Choose Distributions"で"5 Kern-Developer"を選択し、インストール完了後に
# freebsd-update fetch
# freebsd-update install

とし、再起動すればよい (実際には再起動せずともソースコードは8.3p16になっているのでその必要はないが)

もし
# freebsd-update install
Installing updates...install: ///usr/src/crypto/openssl/ssl/s3_cbc.c: No such file or directory
done.

このようなエラーが出る場合は
# mkdir -p /usr/src/crypto/openssl/ssl/
ディレクトリを作成することで回避できるので、作成後にもう一度実行する

さて、8111Gのドライバはこれを書いている現在最新が186なのだが
# cp rtl_bsd_drv_v186 /usr/src/sys/dev/re
# make -C /usr/src/sys/dev/re
Warning: Object directory not changed from original /usr/src/sys/dev/re
@ -> /usr/src/sys
machine -> /usr/src/sys/amd64/include
:> opt_bdg.h
awk -f @/tools/makeobjops.awk @/kern/device_if.m -h
awk -f @/tools/makeobjops.awk @/kern/bus_if.m -h
awk -f @/tools/makeobjops.awk @/dev/pci/pci_if.m -h
cc -O2 -pipe -fno-strict-aliasing -Werror -D_KERNEL -DKLD_MODULE -nostdinc -I. -I@ -I@/contrib/altq -finline-limit=8000 --param inline-unit-growth=100 --param large-function-growth=1000 -fno-common -fno-omit-frame-pointer -mcmodel=kernel -mno-red-zone -mfpmath=387 -mno-sse -mno-sse2 -mno-sse3 -mno-mmx -mno-3dnow -msoft-float -fno-asynchronous-unwind-tables -ffreestanding -fstack-protector -std=iso9899:1999 -fstack-protector -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef -Wno-pointer-sign -fformat-extensions -c if_re.c
if_re.c: In function 're_attach':
if_re.c:2983: error: 'PCIER_LINK_CAP' undeclared (first use in this function)
if_re.c:2983: error: (Each undeclared identifier is reported only once
if_re.c:2983: error: for each function it appears in.)
if_re.c:2984: error: 'PCIEM_LINK_CAP_ASPM' undeclared (first use in this function)
if_re.c:2986: error: 'PCIER_LINK_CTL' undeclared (first use in this function)
*** Error code 1

Stop in /usr/src/sys/dev/re.

雑な方法だがともかく、コケてしまう

少なくともこの定数は
# find /usr/src/sys|xargs grep PCIER_LINK_CAP
というようなことをしても見付からないのでどうしようもない

このようなとき、別のバージョンを試すというのが定石だが、Realtekは最新版の186しか配布していない
ところがダウンロードの際のFTPをちょっと覗いてみると、実は172-186の各種を見付けることができる
全ては試していないが、ともかく結果としてmakeが通せる最も新しいバージョンは184であることがわかっているので184を手に入れる
ただFTPを覗くのは少々面倒なので……
http://b.mikomoe.jp/download/1411430971/attach/rtl_bsd_drv_v184.tgz

makeの前に必要ならばバックアップし
# find /usr/src/sys/dev/re -type f|xargs -I % mv % %.bak
実際にmakeする
# fetch http://b.mikomoe.jp/download/1411430971/attach/rtl_bsd_drv_v184.tgz
# tar zxvf rtl_bsd_drv_v184.tgz
# cp rtl_bsd_drv_v184/* /usr/src/sys/dev/re
# make -C /usr/src/sys/dev/re

と、して完成
バイナリは/usr/src/sys/dev/re/if_re.koなので、これをpfSenseのほうへ移動する

if_re.koは/boot/kernel/if_re.koに配置し、そしてドライバをロード
# kldload /boot/kernel/if_re.ko
これで8111Gがきちんと認識され、動作するようになる (たぶん)

そして最後に/boot/defaults/loader.confの
if_re_load="NO" # RealTek 8139C+/8169/8169S/8110S
この項目を"YES"に変更する
ちなみにYesやyesではなく、確実に大文字で"YES"とすること

またNanoBSD版では/がroであるため、この作業の前後に
# /etc/rc.conf_mount_rw
...
# /etc/rc.conf_mount_ro

として、一時的に書き込めるようにする必要がある
add comment ( 4953 views )
Wednesday, January 15, 2014, 18:13 - OS / Unix, *BSD, Solaris
Posted by ELIN
どうもDD-WRTでの需要も一定数ありそうなので、テスト環境が闇に葬られないうちに試すことにした

検証したFirmwareはr23320

DD-WRTはOpenWRTとは異なり、パッケージ管理システムは名残のようなものがあるものの、事実上存在しないと言える
従ってOpenWRTのように1パッケージとして組み込むことは不可能で、面倒な若干の手間が発生するし、綺麗に収まらない

そうなるとDD-WRTのバイナリを作成してしまうのが最もスマートだが、ここではまず力技でもなんでも動作させることを優先する

まずWebコンソールからAdministration/ManagementのJFFS2 Supportを有効にする
これはDD-WRTのシステムに書き換え可能な領域を確保するために必要で、/dev/mtdblock/3が/jffs以下に割り当てられ、ここへ書き込んだデータは再起動しても失われなくなる
これが無効だと何もできない

次にOpenWRTのリポジトリから必要になるパッケージを持ってきてインストール
# cd /tmp
# wget http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/packages/libc_0.9.33.2-1_ar71xx.ipk
# wget http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/packages/zlib_1.2.7-1_ar71xx.ipk
# wget http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/packages/libpthread_0.9.33.2-1_ar71xx.ipk
# wget http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/packages/librt_0.9.33.2-1_ar71xx.ipk
# wget http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/packages/libreadline_5.2-2_ar71xx.ipk
# wget http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/packages/libncurses_5.7-5_ar71xx.ipk
# wget http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/packages/libiconv-full_1.11.1-1_ar71xx.ipk
# ipkg install *.ipk;rm *.ipk

エラーが出るものの、何の問題もない
これらは/jffs以下に保存され、DD-WRTのシステムとは干渉しない

最後にOpenWRT用にmakeしたバイナリのインストール
# wget http://b.mikomoe.jp/download/1389215611/attach/libopenssl_1.0.1e-1_ar71xx.ipk
# wget http://b.mikomoe.jp/download/1389215570/attach/softethervpnserver_4.03-9408_ar71xx.ipk
# ipkg install *.ipk;rm *.ipk


またこの時点までの違う方法としてopkgを使用する方法もある
# cd /tmp
# wget http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/packages/opkg_618-3_ar71xx.ipk
# ipkg install *.ipk

もしかしたらこの時点で後述するlibcが必要になる状況が発生するかもしれない
(参考:http://arouter.blogspot.jp/2011/07/software-installation-on-dd-wrt.html)

opkg.confを環境にあわせて変更し
# sed -i 's/ \(\(\/[[:alnum:]-]*\)\+\)$/ \/jffs\1/' /jffs/etc/opkg.conf
実行に必要になるディレクトリの作成
# mkdir -p /jffs//var/lock/

以降のインストールはlibc依存で引っかかるが、libcはなぜかPackages.gzに含まれていないため、手動でインストールする必要がある
# opkg -f /jffs/etc/opkg.conf install http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/packages/libc_0.9.33.2-1_ar71xx.ipk

あとはOpenWRTでシェルから作業する場合と同一
# opkg -f /jffs/etc/opkg.conf update
# opkg -f /jffs/etc/opkg.conf install zlib libpthread librt libreadline libncurses libiconv-full
# rm /jffs/var/opkg-lists/*
# opkg -f /jffs/etc/opkg.conf install http://b.mikomoe.jp/download/1389215570/attach/softethervpnserver_4.03-9408_ar71xx.ipk
# opkg -f /jffs/etc/opkg.conf install http://b.mikomoe.jp/download/1389215611/attach/libopenssl_1.0.1e-1_ar71xx.ipk


そしてLD_LIBRARY_PATHを与えて実行する
LD_LIBRARY_PATHを与えない場合、/usr/lib/libssl.so.1.0.0を読みに行ってしまい、これはOpenWRTと同様にno-sha0でmakeされているため動かない
# env LD_LIBRARY_PATH=/jffs/lib:/jffs/usr/lib vpnserver start
これで正常に動作する(ように見える)

しかし動作はするものの、このままだと起動時毎回シェルからコマンドを発行しなければならないので、自動で実行できるよう設定する必要がある

WebコンソールのAdministration/Commandで
env LD_LIBRARY_PATH=/jffs/lib:/jffs/usr/lib vpnserver start
としてSave Startup
env LD_LIBRARY_PATH=/jffs/lib:/jffs/usr/lib vpnserver stop
としてSave Shutdown

これで起動時に自動的に実行され、煩わしくなくなる
1 comment ( 2326 views )
Thursday, November 14, 2013, 12:36 - OS / Unix, *BSD, Solaris, Misc
Posted by ELIN
随分前の雑談の中で出た話なのだが、RS-232Cのクロスケーブルがなくてこれは中途半端にしか検証されていなかったが、物が手に入ったので結論が出た
もっとも予測はされていたのだが

一応世界で見れば最低でも1人は同じことをして遊ぼうとしている人がいるらしく、公式フォーラムで起動しないと言っているのを見付けることができる
それに対する回答としては普通にCDからインストールする(つまりNanoBSDを使わない)とか、HP t5720 PCI Expansion Moduleを買えとのことだが、これによって問題が解決するか否かは不明のままだ

雑談の続きは「動かないわけがない」ということなので結果試すことになった

そもそも上記問題は起動しないのではなく、起動はしているが、VGAへ出力されないため不明ということになる
雑談の中の予測は起動はしている、しかしVGAへ出力されないということを知らない

これは恐らくNanoBSDではないpfSenseを使うことで解決する
例えばUSB-FlashにCDからインストールしてそれを挿せば何の問題もない

さて、結論から言えば……
というか過程における問題は何もなかったので書くことがないが、ともかく

普通に直接フラッシュへイメージを書き込む
具体的なファイル名はpfSense-2.1-RELEASE-512mb-i386-nanobsd.img.gzになる

pfSenseを書き込んだ後、何の問題もなくブートローダが走る
前述の通り、NanoBSDを使っているイメージなのでここで出力が止まる
そしてコンソールへ出力が見える

1つ問題があるとするならばACPI関連で
ACPI Error: [RBYT] Namespace lookup failure, AE_NOT_FOUND (20101013/psargs-464)
ACPI Error: Method parse/execution failed [\RTMP] (Node 0xc3a21dc0), AE_NOT_FOUND (20101013/psparse-633)
ACPI Error: Method parse/execution failed [\_TZ_.THRM._TMP] (Node 0xc3a21c20), AE_NOT_FOUND (20101013/psparse-633)

のようなエラーが頻繁に出力される
これは素直にACPIを無効にすればよい (参考:https://doc.pfsense.org/index.php/Disable_ACPI)

ちなみに今現在はNanoBSDでもVGA版が存在しているので出力がどうこうの問題は発生しない
またVGA版で起動することも確認している
add comment ( 3219 views )

| 1 |