メッセージ

2012年08月12日の記事

2012/08/12(日)JETWAY PA74M2-LF では FreeBSD 9.0R は使えない?

2017/10/12 5:00 サーバ運営・管理
以下のマザーボードに見覚えがある方(数少ないと思うが・・・)に要注意な情報。
20120812.jpg

JETWAY 社 PA74M2-LF という サイズが microATX のマザーボード。
こちらで FreeBSD 8.3R-p1 から FreeBSD 9.0R-p4 へアップデートしようとしたが、
FreeBSD 9.0R-p4 は起動しない。

どうやら ACPI まわりの問題です。
現在、実運用しているサーバなので、いろいろ調べることもできず、とりあえず FreeBSD 8.3R に戻しました。設定が一部消えたので難儀しました。
9.1R がリリースされたときに再挑戦しようと思います。

起動オプションにて、ACPI サポートをOFF にするといけそうなのですが、
このマザーボードで FreeBSD 9.0R が使用できたという奇特な方が居られたら、コメントお願いします。

2012/08/12(日)samba 3.6.7 は FreeBSD 8.3R でソースコードからそのまま構築できない

2017/10/12 5:01 サーバ運営・管理
今日は、珍しく連投です。

samba は、構築に難儀するサーバアプリケーションのひとつで、個人的にはどうも好きにはなれません。Windows 絡みというものもあるが(爆)

samba 3.6.7 をソースコードから構築しようとすると、以下のような md5 部分のコンパイルエラーで途中で停止します:
../lib/crypto/md5.c:142: error: 'struct MD5Context' has no member named 'bits'
../lib/crypto/md5.c:144: error: 'struct MD5Context' has no member named 'buf'
../lib/crypto/md5.c:144: error: 'struct MD5Context' has no member named 'in'
../lib/crypto/md5.c:145: error: 'struct MD5Context' has no member named 'buf'
../lib/crypto/md5.c:146: error: 'struct MD5Context' has no member named 'buf'
The following command failed:
gcc -O -I. -I/usr/local/src/samba-3.6.7/source3
-I/usr/local/src/samba-3.6.7/source3/../lib/popt
-I/usr/local/src/samba-3.6.7/source3/../lib/iniparser/src
-Iinclude -I./include -I. -I. -I./../lib/replace
-I./../lib/tevent -I./librpc -I./.. -I./../lib/talloc -I../lib/tdb/include
-DHAVE_CONFIG_H -Iinclude -I./include -I. -I. -I./../lib/replace
-I./../lib/tevent -I./librpc -I./.. -I./../lib/popt -I/usr/local/include
-I/usr/local/src/samba-3.6.7/source3/lib -I.. -D_SAMBA_BUILD_=3
-D_SAMBA_BUILD_=3 -fPIC -DPIC -c ../lib/crypto/md5.c -o ../lib/crypto/md5.o
gmake: *** [../lib/crypto/md5.o] エラー 1


これは、FreeBSD8.3R の場合、samba で意図している <md5.h> の構造体の定義が異なっているためで、lib/crypto/md5.h を下記のように一部をコメントアウトする必要があります:
#define MD5_H
#ifndef HEADER_MD5_H
/* Try to avoid clashes with OpenSSL */
#define HEADER_MD5_H
#endif
/* #ifdef HAVE_MD5_H */
/*
* Try to avoid clashes with Solaris MD5 implementation.
* ...where almost all implementations follows:
* "Schneier's Cryptography Classics Library"
*/
/* #include <md5.h> */
/* #else */

struct MD5Context {
uint32_t buf[4];
uint32_t bits[2];
uint8_t in[64];
};
typedef struct MD5Context MD5_CTX;
void MD5Init(struct MD5Context *context);
void MD5Update(struct MD5Context *context, const uint8_t *buf,
size_t len);
void MD5Final(uint8_t digest[16], struct MD5Context *context);


/* #endif !HAVE_MD5_H */

#endif /* !MD5_H */


赤文字部分のようにコメントアウトします。
さらに、lib/crypto/md5.c を以下のように変更します:
#include "replace.h"
#include "md5.h"
変更 → #include "../lib/crypto/md5.h"


これらの変更後、コンパイルすると上手くいくようです。