So-net無料ブログ作成

PT2での2番組同時録画 [FreeBSD]

BSの視聴が出来るようになったので、FreeBSDとPT2での録画環境もBSに対応させようと環境を整えたところ、地デジとBSの同時録画は出来るが、BS同士、地デジ同士の同時録画が出来ない事が判明。
原因は、FreeBSDのPT2ドライバに付属している録画用のスクリプトに問題があったようで、以下のように修正した所、正常に同時録画が出来た。
修正箇所は、このスクリプトのリリースバージョンから変わっていないので、うちの環境のみの問題なのかなぁ。

・環境
FreeBSD8.3-RELEASE
perlv5.10.1

・PT2ドライバ
https://code.google.com/p/ptx-kmod/

・修正スクリプト
recptx.pl

・修正前
#
# select device
#
#  TODO: multicard (/dev/ptx1, /dev/ptx2, ...)
#
open($t, "<", "/dev/ptx0.${tuner}0");
if ($t) {
    $dev = "/dev/ptx0.${tuner}0";
    $mib = "dev.ptx.0.${tuner}0";
} else {
    open($t, "<", "/dev/ptx0.${tuner}1");
    if ($t) {
        $dev = "/dev/ptx0.${tuner}1";
    $mib = "dev.ptx.0.${tuner}1";
    } else {
        die("device busy");
    }
}


・修正後
#
# select device
#
#  TODO: multicard (/dev/ptx1, /dev/ptx2, ...)
#
if(!open($t,"<","/dev/ptx0.${tuner}0")){
    if(!open($t,"<","/dev/ptx0.${tuner}1")){
        die("device busy");
    } else {
        $dev = "/dev/ptx0.${tuner}1";
        $mib = "dev.ptx.0.${tuner}1";
    }
} else {
    $dev = "/dev/ptx0.${tuner}0";
    $mib = "dev.ptx.0.${tuner}0";
}


アースソフト PT2

アースソフト PT2

  • 出版社/メーカー: アースソフト
  • メディア: エレクトロニクス



SCM ICカードリーダー/ライター B-CAS・住基カード対応 SCR3310/v2.0 【簡易パッケージ品】

SCM ICカードリーダー/ライター B-CAS・住基カード対応 SCR3310/v2.0 【簡易パッケージ品】

  • 出版社/メーカー: SCM Microsystems
  • メディア: エレクトロニクス


タグ:FreeBSD PT2

FreeBSDへの3TBHDDの追加 [FreeBSD]

3TBのHDDが1万円程になってきたので、1個程購入し追加した時の備忘録
・環境
M/BIntel D525MW
HDDSeagate ST3000DM001
OSFreeBSD 8.3-RELEASE

・HDDを接続
ada1として認識された。
# dmesg
ada1 at ahcich1 bus 0 scbus1 target 0 lun 0
ada1: ATA-8 SATA 3.x device
ada1: 300.000MB/s transfers (SATA 2.x, UDMA6, PIO 8192bytes)
ada1: Command Queueing enabled
ada1: 2861588MB (5860533168 512 byte sectors: 16H 63S/T 16383C)

・パーテーションの作成
3TBのHDDでは、MBR形式のパーテーションを作成する事が出来ない為、
GPT形式のパーテーションを作成する。
# gpart create -s GPT ada1
ada1 created

# gpart show ada1
=> 34 5860533101 ada1 GPT (2.7T)
34 5860533101 - free - (2.7T)

・BSDパーテーションの作成
一つのHDD丸ごと1つをBSDパーテーションとする。
4kセクタのアライメントを揃える為に-aオプションを付けたが、
このオプションについての詳細な説明が記載されているHPを見た事がない。
# gpart add -a 4k -t freebsd-ufs ada1
ada1p1 added

# gpart show ada1
=> 34 5860533101 ada1 GPT (2.7T)
34 6 - free - (3.0k)
40 5860533088 1 freebsd-ufs (2.7T)
5860533128 7 - free - (3.5k)

# ls /dev/ada1*
/dev/ada1 /dev/ada1p1

・ファイルシステムの作成
# newfs -U /dev/ada1p1

・マウント確認
# mount /dev/ada1p1 /mnt
# umount /mnt

・fstabへの記述
# vi /etc/fstab

・/etc/fstabの内容
# Device Mountpoint FStype Options Dump Pass#
/dev/ada0s1b none swap sw 0 0
/dev/ada0s1a / ufs rw 1 1
/dev/ada0s1e /tmp ufs rw 2 2
/dev/ada0s1f /usr ufs rw 2 2
/dev/ada0s1d /var ufs rw 2 2
/dev/ada1p1 /usr/local/data ufs rw 2 2


Intel M/B Essential mini-ITX DDR3-800 GMA3150 VGA GbE LAN PCI x1 BOXD525MW

Intel M/B Essential mini-ITX DDR3-800 GMA3150 VGA GbE LAN PCI x1 BOXD525MW

  • 出版社/メーカー: インテル
  • メディア: Personal Computers






各種コーディックのインストール - opencode-amr 編 - [FreeBSD]

ライブラリopencode-amr
公式ページhttp://sourceforge.net/projects/opencore-amr/

AMRは、DoCoMoのFORMで着うたのファイルフォーマットとして使用されているものです。
AMRは、AMR-NBとAMR-WBがありますが、opencode-amrは、両方のライブラリを含んでいます。
FreeBSDのportsには、見つからなかったので、ソースよりコンパイルし、インストールします。

●準備
公式ページよりアーカイブを取得し、解凍します。


●./configure
解凍したディレクトリに移動し、./configureでコンパイルオプションを指定します。
./configure --helpでオプションを確認しても特に指定するオプションが無かったため、
オプションなしで実行します。
> cd opencore-amr-0.1.2
> ./configure



checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... yes
checking for memset... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating amrnb/Makefile
config.status: creating amrwb/Makefile
config.status: creating test/Makefile
config.status: creating amrnb/opencore-amrnb.pc
config.status: creating amrwb/opencore-amrwb.pc
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands

特に問題なく終了しました。

●コンパイル
コンパイルします。
> make



libtool: link: gcc -g -O2 -o .libs/amrnb-enc amrnb-enc.o ../amrnb/.libs/libopencore-amrnb.so -lm -Wl,-rpath -Wl,/usr/local/lib
g++ -DHAVE_CONFIG_H -I. -I.. -I../amrnb -I../amrwb -g -O2 -MT amrwb-dec.o -MD -MP -MF .deps/amrwb-dec.Tpo -c -o amrwb-dec.o amrwb-dec.cpp
mv -f .deps/amrwb-dec.Tpo .deps/amrwb-dec.Po
/bin/sh ../libtool --tag=CXX --mode=link g++ -g -O2 -o amrwb-dec amrwb-dec.o wav.o ../amrwb/libopencore-amrwb.la -lm
libtool: link: g++ -g -O2 -o .libs/amrwb-dec amrwb-dec.o wav.o ../amrwb/.libs/libopencore-amrwb.so -lm -Wl,-rpath -Wl,/usr/local/lib
gcc -DHAVE_CONFIG_H -I. -I.. -I../amrnb -I../amrwb -g -O2 -MT linkboth.o -MD -MP -MF .deps/linkboth.Tpo -c -o linkboth.o linkboth.c
mv -f .deps/linkboth.Tpo .deps/linkboth.Po
/bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -static -o linkboth linkboth.o ../amrnb/libopencore-amrnb.la ../amrwb/libopencore-amrwb.la -lm
libtool: link: gcc -g -O2 -o linkboth linkboth.o ../amrnb/.libs/libopencore-amrnb.a ../amrwb/.libs/libopencore-amrwb.a -lm

これも特に問題なく終了しました。今回は、なんだか順調です。

チェック用のスクリプトが用意されているので、チェックします。
> make check
Making check in amrnb
Making check in amrwb
Making check in test

成功か失敗かよくわからないメッセージが表示されましたが、
エラーメッセージでは無いようなので、成功にしておきます。

rootになって、インストールします。
> su # make install



----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,-rpath -Wl,LIBDIR' linker flag

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
test -z "/usr/local/include/opencore-amrwb" || .././install-sh -c -d "/usr/local/include/opencore-amrwb"
/usr/bin/install -c -m 644 dec_if.h if_rom.h '/usr/local/include/opencore-amrwb'
test -z "/usr/local/lib/pkgconfig" || .././install-sh -c -d "/usr/local/lib/pkgconfig"
/usr/bin/install -c -m 644 opencore-amrwb.pc '/usr/local/lib/pkgconfig'
Making install in test

無事インストールされました。
今回は、特に躓く箇所も無く、素直にインストールできました。
なんだか、ちょっと拍子抜けです。


各種コーディックのインストール - Theora編 - [FreeBSD]

ライブラリtheora
公式ページhttp://www.theora.org/

theoraは、Oggコンテナフォーマットの標準ビデオコーディックてして利用されるものです。
あまり利用する機会は無いような気がしますが、とりあえずインストールしておきます。
portsでは、バージョンが1.0だったので、最新バージョン1.1.1を公式ページより
取得してソースよりコンパイルします。

●準備
公式ページよりアーカイブを取得し、解凍します。
> fetch http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.bz2
> bzip2 -d libtheora-1.1.1.tar.bz2
> tar zxvf libtheora-1.1.1.tar

●./configure
解凍したディレクトリに移動し、./configureでコンパイルオプションを指定します。
./configure --helpでオプションを確認しても特に指定するオプションが無かったため、
オプションなしで実行します。
> cd libtheora-1.1.1
> ./configure

sdl-config が無いと怒られたので、portsよりインストールします。

アプリportsの場所
sdl-config/usr/ports/devel/sdl12

オプションを聞かれるので、デフォルトにします。
> cd /usr/ports/devel/sdl12
> su
# make
# make install
# make clean

再度、libtheoraを解凍したディレクトリに戻って、./configureを実行します。
> cd libtheora-1.1.1
> ./configure



------------------------------------------------------------------------
libtheora 1.1.1: Automatic configuration OK.

General configuration:

Encoding support: ........... yes
Floating point support: ..... yes
Assembly optimization: ...... no optimization for your platform, please send a patch
Debugging telemetry: ........ no
Build example code: ......... yes
API Documentation: .......... no
Format Documentation: ....... no

Installation paths:

libtheora: ................... /usr/local/lib
C header files: .............. /usr/local/include/theora
Documentation: ............... /usr/local/share/doc/libtheora

Building:

Type 'make' to compile libtheora.

Type 'make install' to install libtheora.

Type 'make check' to run test suite (Valgrind testing not enabled)

Example programs will be built but not installed.
------------------------------------------------------------------------

特に問題なく終了しました。
●コンパイル
メッセージどおりコンパイルします。
> make



source='dump_video.c' object='dump_video.o' libtool=no depfile='.deps/dump_video.Po' tmpdepfile='.deps/dump_video.TPo' depmode=gcc3 /bin/sh ../depcomp gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I/usr/local/include -Wall -Wno-parentheses -O3 -fforce-addr -fomit-frame-pointer -finline-functions -funroll-loops -c `test -f 'dump_video.c' || echo './'`dump_video.c
In file included from dump_video.c:43:
/usr/include/sys/timeb.h:43: error: expected specifier-qualifier-list before 'time_t'
dump_video.c: In function 'main':
dump_video.c:448: error: 'struct timeb' has no member named 'time'
dump_video.c:448: error: 'struct timeb' has no member named 'millitm'
dump_video.c:449: error: 'struct timeb' has no member named 'time'
dump_video.c:449: error: 'struct timeb' has no member named 'millitm'
dump_video.c:456: error: 'struct timeb' has no member named 'time'
dump_video.c:456: error: 'struct timeb' has no member named 'millitm'
dump_video.c:457: error: 'struct timeb' has no member named 'time'
dump_video.c:457: error: 'struct timeb' has no member named 'millitm'
*** Error code 1

Stop in /usr/local/home/hideki/build.d/libtheora-1.1.1/examples.
*** Error code 1

Stop in /usr/local/home/hideki/build.d/libtheora-1.1.1.
*** Error code 1

Stop in /usr/local/home/hideki/build.d/libtheora-1.1.1.

うーん、エラー発生です。timeb.hで使用されているtime_tが定義されていない為、エラーとなっているようです。
time_tは、/usr/include/time.hに定義されていますが、exsamples/dump_video.cには、インクルードされていないようです。
#include の前に、#include を追加します。
> vi exsamples/dump_video.c



#include
#include
#include <--- これを追加
#include
#include




再度make
> make



source='player_example.c' object='player_example-player_example.o' libtool=no depfile='.deps/player_example-player_example.Po' tmpdepfile='.deps/player_example-player_example.TPo' depmode=gcc3 /bin/sh ../depcomp gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I/usr/local/include/SDL -I/usr/local/include -D_GNU_SOURCE=1 -D_REENTRANT -I/usr/local/include -I/usr/local/include -Wall -Wno-parentheses -O3 -fforce-addr -fomit-frame-pointer -finline-functions -funroll-loops -c -o player_example-player_example.o `test -f 'player_example.c' || echo './'`player_example.c
player_example.c:68:31: error: machine/soundcard.h: No such file or directory
player_example.c: In function 'open_audio':
player_example.c:166: error: 'audio_buf_info' undeclared (first use in this function)
player_example.c:166: error: (Each undeclared identifier is reported only once
player_example.c:166: error: for each function it appears in.)
player_example.c:166: error: expected ';' before 'info'
player_example.c:167: error: 'AFMT_S16_NE' undeclared (first use in this function)
player_example.c:178: error: 'SNDCTL_DSP_SETFMT' undeclared (first use in this function)
player_example.c:184: error: 'SNDCTL_DSP_CHANNELS' undeclared (first use in this function)
player_example.c:190: error: 'SNDCTL_DSP_SPEED' undeclared (first use in this function)
player_example.c:196: error: 'SNDCTL_DSP_GETOSPACE' undeclared (first use in this function)
player_example.c:196: error: 'info' undeclared (first use in this function)
player_example.c: In function 'audio_close':
player_example.c:205: error: 'SNDCTL_DSP_RESET' undeclared (first use in this function)
player_example.c: In function 'audio_write_nonblocking':
player_example.c:275: error: 'audio_buf_info' undeclared (first use in this function)
player_example.c:275: error: expected ';' before 'info'
player_example.c:278: error: 'SNDCTL_DSP_GETOSPACE' undeclared (first use in this function)
player_example.c:278: error: 'info' undeclared (first use in this function)
*** Error code 1

Stop in /usr/local/home/hideki/build.d/libtheora-1.1.1/examples.
*** Error code 1

Stop in /usr/local/home/hideki/build.d/libtheora-1.1.1.
*** Error code 1

Stop in /usr/local/home/hideki/build.d/libtheora-1.1.1.
また、エラー。 今度は、machine/soundcard.hが無いと怒られました。 examples/player_example.c を見てみると、以下のように、FreeBSD用にインクルードされています。
> cat examples/player_example.c



#if defined(__FreeBSD__)
#include
#define AUDIO_DEVICE "/dev/audio"
#elif defined(__NetBSD__) || defined(__OpenBSD__)



ここで、インクルードされているmachine/soundcard.hは、 FreeBSD 8.0では、sys/soundcard.h に存在しているので、 書き換えます。
> vi examples/player_example.c



#if defined(__FreeBSD__)
#include <-- ここを書き換え
#define AUDIO_DEVICE "/dev/audio"
#elif defined(__NetBSD__) || defined(__OpenBSD__)



再度 makeするとコンパイルが通ったので、make installでインストールします。
> make
> make install
テストスクリプトもあるようなので、実行します。
> make check



PASS: granulepos_theoraenc
---- + Checking granulepos generation ...
---- + Checking granulepos generation ...
---- + Checking granulepos generation ...
---- + Checking granulepos generation ...
---- + Checking granulepos generation ...
---- + Checking granulepos generation ...
PASS: granulepos_theora
==================
All 9 tests passed
==================
Making check in m4
Making check in examples
すべてのテストは、無事成功しました。 それにしても、素直にソースからコンパイルできるものは、なかなか無いものですね。

各種コーディックのインストール - x264編 - [FreeBSD]

ライブラリx264
公式ページhttp://www.videolan.org/developers/x264.html

H.264のエンコード、デコードを行うライブラリx264は、
ソースの更新頻度が高く、snapshotが毎日作成され公開されています。
FreeBSDのportsでは、2008年12月頃のバージョンで少々古い為、
最新版を取得して、導入します。

●準備
公開リポジトリからソースを取得する為に、gitやsvnといったツールを
portsよりインストールします。オプションを聞いてくるので、デフォルトで入れます。
アプリportsの場所
git/usr/ports/devel/git
svn/usr/ports/devel/svn

gitを使用して、最新ソースを取得します。
> git clone git://git.videolan.org/x264.git

●./configure
Unix系の大抵のアプリケーションやライブラリは、configureスクリプトで各種オプションを指定し、makeでコンパイル、make installでインストールできます。
x264も例外ではなく、この手順で導入できます。

まずは、指定できるオプションを確認。
>./configure --help
Usage: ./configure [options]

available options:

--help print this message
--disable-avis-input disables avisynth input (win32 only)
--disable-mp4-output disables mp4 output (using gpac)
--disable-pthread disables multithreaded encoding
--disable-asm disables assembly optimizations on x86 and arm
--enable-debug adds -g, doesn't strip
--enable-gprof adds -pg, doesn't strip
--enable-visualize enables visualization (X11 only)
--enable-pic build position-independent code
--enable-shared build libx264.so
--extra-asflags=EASFLAGS add EASFLAGS to ASFLAGS
--extra-cflags=ECFLAGS add ECFLAGS to CFLAGS
--extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS
--host=HOST build programs to run on HOST
--cross-prefix=PREFIX use PREFIX for compilation tools

libx264.soを作成したいので、オプションに--enable-sharedを付けて実行。
>./configure --enable-shared
./configure: Command not found.

ファイルの存在、スペルの打ち間違い、パーミッションを調べても異常なし。
configureの中を見てみると、シェルにbashを使用していました。
> cat ./configure | more
#!/bin/bash
if test x"$1" = x"-h" -o x"$1" = x"--help" ; then

echo "Usage: ./configure [options]"
echo ""
echo "available options:"
echo ""
echo " --help print this message"




bashをportsを使用してインストールします。
アプリportsの場所
bash/usr/ports/shells/bash

/usr/local/binにインストールされるので、/binにシンボリックリンクを作ります。
ln -s /usr/local/bin/bash /bin/bash

再度、チャレンジ
>./configure --enable-shared
Found GNU assembler 2.15 [FreeBSD] 2004-05-23
Minimum version is binutils-2.17
Your compiler can't handle inline SSSE3 asm.
If you really want to compile without asm, configure with --disable-asm.

binutilsがバージョン2.15と古いので、SSSE3を有効にするなら、2.17以上にする必要があるようです。
portsよりインストールします。portsでインストールされるバージョンは、2.20です。
アプリportsの場所
bash/usr/ports/devel/binutils

x264でチェックしているのは、asコマンドのバージョンです。
デフォルトのもの(2.15)は、/usr/binにインストールされており、
portsでインストールしたもの(2.20)は、/usr/local/binにインストールされます。
参照の順番で/usr/binが先に参照されてしまうので、/usr/bin/asをリネームして/usr/local/bin/asへのシンボリックリンクを作成します。
# mv /usr/bin/as /usr/bin/as.2.15
# ln -s /usr/local/bin/as /usr/bin/as

再度チャレンジ
>./configure --enable-shared
Platform: X86_64
System: FREEBSD
asm: yes
avis input: no
mp4 output: no
pthread: yes
debug: no
gprof: no
PIC: yes
shared: yes
visualize: no

You can run 'make' or 'make fprofiled' now.

mp4 outputが有効になっていません。
./configure --helpでは、using gpac と記述されているので、gpacをportsからインストールします。
アプリportsの場所
gpac/usr/ports/multimedia/gpac-libgpac

gpacのライブラリ及びインクルードファイルは、/usr/local/libと/usr/local/includeにインストールされます。
そのため、./configureにて、これらを参照するようにオプションを追加します。
> ./configure --enable-shared --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib
Platform: X86_64
System: FREEBSD
asm: yes
avis input: no
mp4 output: yes
pthread: yes
debug: no
gprof: no
PIC: yes
shared: yes
visualize: no

You can run 'make' or 'make fprofiled' now.

やっと、./configureが無事とおりました。

●コンパイル
./configureでは、makeもしくは make fprofiledを実行せよと書かれていますが、
FreeBSDでは、gmakeを使います。makeでは、Makefileの構文エラーが出てしまいます。
> gmake

コンパイルが始まりますが、途中でlog2fが見つからないとコンパイルエラーが発生します。
確かに/usr/include/math.h の中には、定義されていませんでした。
ネット上の情報では、7.0-CURRENT i386には、あるような記事もありましたが、8.0-RELEASE amd64には、無いようです。
英語の情報では、log2fの使用部分を書き換えて対応しているものがありました。
また、日本語でも以下のような情報もありました。

-- http://www.fenix.ne.jp/~G-HAL/whatsnew/20094th.htmlより抜粋 ---
log2, log2f, log2l は C99 POSIX.1-2001 だとかで、 GNU/Linux方面だと GNU libc 2.1系にて実装済みだが、 *BSD系では未実装らしい。C99化それ自体に関しては、 GNU/Linux でも完了していないっぽい (ISO/IEC 9899:1999/Cor.3:2007 まで含めると Missing とか Broken とか言う項目が残っている)。 FreeBSD だと 8.X系にて一部は実装済みだが、完了まではまだまだらしい。 賽の河原? C++0x 出ちゃう……。そう言えば、FreeBSD の C99 対応に関して、 C99仕様の thread-safe な関数に仕様変更しようとして、 POSIX で非thread-safe と規定されている関数まで間違って thread-safe にしてしまっていらんバグが増えた、 とか言うウワサも聞いたような……。
ports を古い版にして x264 の 2008年版にしたら、 log2f() を使っていなかったのでインストールが通った。
最新版を使いたいなら、 log2f(i+1) → (logf(i+1)/logf(2)) する。
---------------------------------------------------------------

とりあえず、"log2f(i+1)"を
"(logf(i+1)/logf(2))" または、"logf(i+1)*2.8853900817779268f"のどちらかに書き換えれば良いようです。
log2fを使用しているソースは、encoder/analyse.c に一箇所あるので、それを書き換えます。

再度コンパイルするとコンパイルが通りました。
rootになりmake installでインストールし、make cleanで後始末します。
> gmake
> su
# gmake install
> gmake clean

Ubuntuでは、結構楽にコンパイル&インストール出来たのに、
OSが異なるとこんなに違うものだとは思わなかった。


各種コーディックのインストール -ports編- [FreeBSD]

FreeBSDで、PT2で録画したTSファイルをエンコードする為に
動画関係のコーディックをインストールしていきます。
C3(600MHz)のEDENなPCでは、1時間番組が17時間程かかってしまい、
実用的ではなかったので・・・。

方針としてportsにて最新版が提供されているものは、
portsでインストールし、最新版でないものはソースからコンパイルすることにしました。

portsでインストールしたもの
コーディックバージョン公式ページportsの場所
mp3lame3.98.2http://lame.sourceforge.net//usr/ports/audio/lame
faac1.28http://www.audiocoding.com/faac.html/usr/ports/audio/faac
faad22.7http://www.audiocoding.com/faad2.html/usr/ports/audio/faad
xvid1.2.2http://www.xvid.org//usr/ports/multimedia/xvid
Ogg1.1.4http://www.xiph.org//usr/ports/audio/libogg
Vorbis1.2.3http://www.vorbis.com//usr/ports/audio/libvorbis

ソースからコンパイルしたもの
コーディックバージョン公式ページ
x264http://www.videolan.org/developers/x264.html
Theora1.1.1http://www.theora.org/
opencode-amr0.1.2http://sourceforge.net/projects/opencore-amr/

まずは、最新のportsを取得します。
> fetch ftp://ftp.freebsd.org/pub/FreeBSD/ports/ports/ports.tar.gz
# tar -zxvf ./ports.tar.gz -C /usr/

/usr/ports がシンボリックリンクだった場合は、シンボリックリンクを上書きしてしまうので、
他のディレクトリに解凍した後に、mvコマンドで移動する方が良いようです。

portsからのインストールは、portsディレクトリに移動し、
rootになって、make、make install、make cleanの三点セットで、
インストールします。
オプションを選択する必要のあるものもありますが、
基本的にデフォルトでインストールします。
# cd [portsディレクトリ]
# make
# make install
# make clean

インストールに失敗し、オプションを選択し直したい場合は、
以下のディレクトリにあるportsに該当するディレクトリを削除します。
/var/db/ports

portsからのインストールは、非常に楽でした。
次回以降、いろいろと苦労したソースからのコンパイルをお届けします。


FreeBSD 8.0-RELEASE へのアップグレード [FreeBSD]

FreeBSD 8.0-RELEASEがリリースされたので、
FreeBSD 8.0-RC3からアップグレードしてみます。

といってもfreebsd-updateコマンドを実行するだけですが・・・。

rootになって、以下のコマンドを実行します。
# freebsd-update upgrade -r 8.0-RELEASE

以下のメッセージが表示されます。
インストールされているコンポーネントとインストールされていないコンポーネントが表示されて、
間違いないか? と聞かれます。
Looking up update.FreeBSD.org mirrors... 3 mirrors found.
Fetching public key from update5.FreeBSD.org... done.
Fetching metadata signature for 8.0-RC3 from update5.FreeBSD.org... done.
Fetching metadata index... done.
Fetching 2 metadata files... done.
Inspecting system... done.

The following components of FreeBSD seem to be installed:
kernel/generic src/base src/bin src/cddl src/contrib src/crypto src/etc
src/games src/gnu src/include src/krb5 src/lib src/libexec src/release
src/rescue src/sbin src/secure src/share src/sys src/tools src/ubin
src/usbin world/base world/dict world/doc world/info world/manpages
world/proflibs

The following components of FreeBSD do not seem to be installed:
world/catpages world/games world/lib32

Does this look reasonable (y/n)?

間違いないので、「y」を入力すると、
8.0-RELEASEのコンポーネントのダウンロードが始まります。

ダウンロード後、以下のコマンドでシステム関係のコンポーネントをインストールします。
# freebsd-update install

インストールが終わると再起動を促されるので、再起動します。
# reboot

再起動後、再度rootになり、今度はユーザー側のコンポーネントのインストールを行います。
# freebsd-update install

念の為、もう一回再起動しておきます。
# reboot

RC3版のインストールからほとんど何もしていなかったので、
特に問題なく、RELEASE版へアップグレード出来ました。


Vistaのブートローダーを使用してFreeBSDを起動する。 [FreeBSD]

FreeBSD8.0-RC3をインストールしたばかりなのに、
本日、FreeBSD8.0-RELEASEがリリースされてました。
少し待っていれば良かった・・・。
近々アップデートしようっと。

さて、前回の続きです。
VistaとFreeBSDのデュアルブートの方法として、
Vistaブートローダーを使用してFreeBSDを起動するようにしました。
この方法は、Windows 7と他のOSとのデュアルブートにも
使用できると思います。

以下、手順です。
  1. FreeBSDの/boot/boot1を取得する。
  2. USBメモリを使用して、/boot/boot1をコピーし、
    Vistaから認識できる場所にコピーします。
    まず、PLoP Boot Managerを使用して、FreeBSD8.0-RC3を起動します。
    FAT32(またはFAT16)でフォーマットしてあるUSBメモリをPCに指します。
    FreeBSD8.0-RC3/amd64では、デフォルトでUSBメモリに対応しているようです。
    FreeBSDが認識すると以下のようなメッセージが表示されます。
    (もちろん /var/log/messages にも書かれる。)
    Nov 25 21:48:12 Athron64x2BSD kernel: da0 at umass-sim0 bus 0 target 0 lun 0
    Nov 25 21:48:12 Athron64x2BSD kernel: da0: Removable Direct Access SCSI-2 device
    Nov 25 21:48:12 Athron64x2BSD kernel: da0: 40.000MB/s transfers
    Nov 25 21:48:12 Athron64x2BSD kernel: da0: 3829MB (7843838 512 byte sectors:255H 63S/T 488C)

    da0で認識されたようなので、マウントポイントとなるディレクトリを作成しマウントします。
    # mkdir /mnt/usbmem
    # mount_msdosfs /dev/da0s1 /mnt/usbmem/

    /boot/boot1をUSBメモリにコピーします。
    # cp /boot/boot1 /mnt/usbmem

    USBメモリをアンマウントします。
    # umount /mnt/usbmem

  3. Vistaのブートローダーの設定
  4. Vistaでは、ブート関係の設定を行うbcdeditコマンドを使用して、
    ブートメニューにFreeBSDを追加し先ほどの/boot/boot1を
    呼び出すように設定します。

    Vistaを起動しコマンドプロンプトを管理者権限で開きます。
    ブートローダーに新しいエントリーを作成します。
    ここで表示される数桁の文字列($ID)は、作成されたエントリーを
    識別するものなのでメモしておきます。
    c:¥>bcdedit /create /d "FreeBSD" /application bootsector

    $IDを引数として与えて作成したエントリーをブートデバイスとして設定します。
    c:¥>bcdedit /set {$ID} device boot

    ブートローダーから呼び出すプログラム(/boot/boot1)を設定します。
    ここでは、FreeBSDの/boot/boot1をCドライブの直下に
    ファイル名を"freebsd.boot1"としてコピーした例です。
    c:¥>bcdedit /set {$ID} path \freebsd.boot1

    作成したエントリをブートメニューの一番上に表示するようにします。
    c:¥>bcdedit /displayorder {$ID} /addfirst

    Vistaブートメニューでのデフォルトの選択肢として設定します。
    c:¥>bcdedit /default {$ID}

    上記を実行したあとUSBメモリからFreeBSDから持ってきた/boot/boot1を
    設定したとおりに(C:\freebsd.boot1)コピーします。

    再起動すると、ブートメニューにFreeBSDが追加され、
    エンターキーで選択するか30秒待っていると
    FreeBSD8.0-RC3が起動するようになりました。



Windows VistaとFreeBSDのデュアルブート [FreeBSD]

  • 前段
  • メインマシンで使用しているWindows XPの起動が、最近遅くなってきたので、
    OSの入れ替えをすることにしました。

    一瞬、Windows 7の購入を考えましたが、値段が高いので、
    XPを購入した時のアップグレード権で手に入れたVistaを
    今更ながら導入しました。

    Vistaは、遅い、重いと大変不評なOSだったので、今まで興味はありませんでしたが、
    今一度、Wikipediaなどで調べると、UI(Windowsエアロ)の描画処理が
    GPUで処理されていたり、過去の起動時情報から起動時のパフォーマンスを
    あげる仕組みなど、それなりによさそうなことが書いてある。
    マシンのスペックさえ満足していれば、XPとと同様かそれ以上になりそう。
    また、FreeBSDの8.0が、RC3まで出ていて今月中には、RELEASE版が出そうなので、
    どうせなら、デュアルブートなマシンにしてみることにしました。

  • Windows Vistaのインストール
  • Vistaのインストールディスクから起動してインストールしようとしましたが、
    XP上からセットアップを起動しないとインストールできないらしい。
    (OEMのアップグレードパッケージなのでしょうがないか・・・)
    まっさらな状態のHDDからインストールしたかったので、
    XPを新規インストールし、そこからVistaをインストール。
    結構面倒でした。

  • FreeBSD 8.0-RC3のインストール
  • FreeBSD 8.0-RC3のDVDイメージをDVD-Rに焼いて、それからインストール。
    Windows VistaとFreeBSD のデュアルブートにするので、
    FreeBSD の Boot ManagerをMBRに設定してインストール。

  • 問題発生
  • XPまでのWindowsでは、これで素直にデュアルブートな環境ができていました。
    しかし、Vista以降ではWindowsの起動プロセスが変わったようで、
    Vistaが起動できません。
    エラーメッセージが表示されVistaのインストールディスクから修復しろいわれます。
    メッセージのとおり、修復を行いましたが、なにやら修復が失敗したらしく、
    起動時にパーティーションがありませんとエラーが発生するようになってしまいました。
    PLoP Boot Managerを使用して、Vistaをインストールしたパーティションから
    起動してみてもエラーが表示されて起動できませんでした。
    Ubuntu 9.04のLiveディスクで起動し、付属のGPartedで状態をみてみると、
    パーティーションが無い状態になっていました。

  • 原因
  • どうやら、MBRを壊してしまったようです。
    その後、WEB上でいろいろと調べると、以下のことがわかりました。

    • MBRに書き込まれるVistaのブートローダは、XP以前のものとは異なる事。
    • Vistaは、MBRにIDを書き込んでおり、起動時に参照している事。

    で、デュアルブートにするには、以下の三つの方法があるようです。

    1. Vistaのブートローダを使用してFreeBSDを起動する。
    2. GRUBをMBRにインストールして起動する。
    3. Vistaの起動時にMBRのIDを参照しないようにする。

    2.は、GRUBのサイズが小さく、Vistaの参照しているIDの位置まで書き換えられないため、
    Vistaが起動するようです。
    なんとなく、運任せな方法な気がするので、1か3の方法を取ることにします。

  • リトライ
  • とりあえず、XP→Vistaをインストールし、FreeBSDをMBRを書き換えないように
    インストールします。
    これで、PC起動するとVistaが起動するかと思ったらFreeBSDが起動 !?

    何で?

    どうやら、Vistaのパーティーションのbootフラグが落ちていました。
    PLoP Boot Manager で、Vistaのパーティションを選択して起動すると
    正常に起動しました。
    GPartedで、VistaとFreeBSDのパーティションのbootフラグを見ると、
    FreeBSDがついており、Vistaはついていなかったので、
    FreeBSDをはずし、Vistaにつけると
    正常にVistaが立ち上がるようになりました。

    あとは、上記の1または3の方法でデュアルブート環境にするだけです。
    もしくは、PLoP Boot Managerで選択するようにしてもいいかなぁ。
    とりあえず、今回はここまで。

  • 参考



セキュリティアップデート [FreeBSD]

FreeBSD 7.1のセキュリティパッチが今年に入ってから4つ出ていたため当ててみます。

2009-01-07 FreeBSD-SA-09:01.lukemftpd
2009-01-07 FreeBSD-SA-09:02.openssl
2009-01-13 FreeBSD-SA-09:03.ntpd
2009-01-13 FreeBSD-SA-09:04.bind

アナウンスの文章には、freebsd-updateを使用してパッチを適用するか、個々にパッチをダウンロード、コンパイルして適用すると記述されているので、簡単なfreebsd-updateで行うことにします。

  1. バイナリパッチを取得する。

  2. 公式サイトからセキュリティパッチの最新バイナリパッチが取得されます。
    # freebsd-update fetch
  3. インストール

  4. 上記で取得したパッチをインストールします。
    # freebsd-update install

ところで、この記事を書いている時点では、アップデートを行うと"7.1-RELEASE-p2"になったようだけど、この名前は、どこで確認するんだろう???



この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

この広告は180日新規投稿のないブログに表示されます