screen+zshな環境を作るためにurxvtをインストールしたりする人もいるようですが,
とりあえずはMac10.6付属のターミナルでscreenを動かしてみました.
以下の点が問題になったので,それの解決メモ.
・screenのタブ(?)とターミナルのタブが独立して動作しない
・ファンクションキーが効かない
2つ目の問題点は,自分がscreenのタブをファンクションキーで切り替える設定をしているのですが,
ファンクションキーがscreenに送られていないようで,タブが切り替わらなかったのです.
以下,解決法
1.ターミナルの環境設定を開く
2.設定 -> 起動 の「開くシェル」はデフォルトか,sh,bash,zshなどのシェルを指定する.screenは指定しない(1つ目の問題点)
3.設定 -> シェル の「コマンドを実行」に screen と書く(1つ目の問題)
4.設定 -> 詳細 の「ターミナルの宣言方法」に xterm を選ぶ(2つ目の問題)
これで,ターミナルの各タブで「開くシェル」で指定したシェルが走り,
そのシェルの上でscreenが走ります.
また,開くシェルのTERM環境変数にxtermが設定されることでファンクションキーが効くようになります.デフォルトのxterm-colorでは効かない様子.
2009年12月27日日曜日
2009年12月22日火曜日
NTEmacs23.1 + IME.patch をビルドする
いろんなところに同じような記事があるが、自分用覚え書き。
注意点はmake-3.80を使わなければならないところ。
Cygwinでは3.81しか準備されていないので、自分でmakeをインストールする必要がある。
GnuWin32から以下のようなDLLとヘッダーファイルを用意する。
以下のようなzipファイルをダウンロードして展開し、中から.dllや.hファイルだけを抜き出す。
つぎに、TaijiからIMEパッチをダウンロードし展開、パッチを当て、コンパイルする。
Gygwinの/usr/bin/gccがシンボリックリンクなのでコマンドが見つからない問題を回避するため、
configure.batファイルでgccを参照しているところをgcc-3に書き換える。
以下のパッチを当ててもOK.(参考サイト)
上のパッチを当てる
ビルド、インストールを行う。
cygwinのターミナルから
参考サイト
・プログラム番長のヲボエガキ
・u-ch
注意点はmake-3.80を使わなければならないところ。
Cygwinでは3.81しか準備されていないので、自分でmakeをインストールする必要がある。
1. 必要なパッケージの準備
以下のようなパッケージ群をsetup.exeを使ってインストールしておく$ cygcheck -s | egrep '^(gcc|mingw|make)'
gcc 3.4.4-999
gcc-core 3.4.4-999
gcc-g++ 3.4.4-999
gcc-mingw 20040810-1
gcc-mingw-core 20050522-1
gcc-mingw-g++ 20050522-1
make 3.81-2
mingw-bzip2 1.0.5-3
mingw-libbz2-devel 1.0.5-3
mingw-libbz2_1 1.0.5-3
mingw-runtime 3.17-1
mingw-zlib 1.2.3-3
mingw-zlib-devel 1.2.3-3
mingw-zlib0 1.2.3-3
gcc 3.4.4-999
gcc-core 3.4.4-999
gcc-g++ 3.4.4-999
gcc-mingw 20040810-1
gcc-mingw-core 20050522-1
gcc-mingw-g++ 20050522-1
make 3.81-2
mingw-bzip2 1.0.5-3
mingw-libbz2-devel 1.0.5-3
mingw-libbz2_1 1.0.5-3
mingw-runtime 3.17-1
mingw-zlib 1.2.3-3
mingw-zlib-devel 1.2.3-3
mingw-zlib0 1.2.3-3
2. make-3.80のインストール
make-3.80を自前インストールする$ mkdir ~/src
$ cd ~/src
$ wget ftp://ftp.gnu.org/gnu/make/make-3.80.tar.bz2
$ tar jxvf make-3.80.tar.bz2
$ cd make-3.80
$ ./configure --prefix=/usr --program-suffix=-3.80
$ make
$ make install
$ ls /usr/bin/make-3.80
/usr/bin/make-3.80
$ cd ~/src
$ wget ftp://ftp.gnu.org/gnu/make/make-3.80.tar.bz2
$ tar jxvf make-3.80.tar.bz2
$ cd make-3.80
$ ./configure --prefix=/usr --program-suffix=-3.80
$ make
$ make install
$ ls /usr/bin/make-3.80
/usr/bin/make-3.80
3. 画像サポートのための準備
まず、画像サポートを有効にするための準備。GnuWin32から以下のようなDLLとヘッダーファイルを用意する。
以下のようなzipファイルをダウンロードして展開し、中から.dllや.hファイルだけを抜き出す。
\ls -Rgo
.:
合計 3528
drwx------+ 3 0 Nov 29 22:10 DLL
-rwx------+ 1 1793 Nov 29 22:06 get.sh
-rw-r--r-- 1 189242 May 15 2005 jpeg-6b-4-bin.zip
-rw-r--r-- 1 38186 May 15 2005 jpeg-6b-4-lib.zip
-rw-r--r-- 1 401037 Jun 5 05:53 libpng-1.2.37-bin.zip
-rw-r--r-- 1 134939 Jun 5 05:55 libpng-1.2.37-lib.zip
-rw-r--r-- 1 285963 Mar 2 2007 libungif-4.1.4-1-bin.zip
-rw-r--r-- 1 12272 Mar 2 2007 libungif-4.1.4-1-lib.zip
-rw-r--r-- 1 928480 Mar 2 2007 libungif-4.1.4-1-src.zip
-rw-r--r-- 1 687244 Mar 31 2006 tiff-3.8.2-1-bin.zip
-rw-r--r-- 1 38372 Mar 31 2006 tiff-3.8.2-1-lib.zip
-rw-r--r-- 1 35884 Feb 15 2005 xpm-3.5.1-1-bin.zip
-rw-r--r-- 1 42484 Feb 15 2005 xpm-3.5.1-1-lib.zip
-rw-r--r-- 1 622191 Feb 15 2005 xpm-3.5.1-1-src.zip
-rw-r--r-- 1 99777 Jul 26 2005 zlib-1.2.3-bin.zip
-rw-r--r-- 1 71569 Jul 26 2005 zlib-1.2.3-lib.zip
./DLL:
合計 1613
drwx------+ 2 0 Nov 29 22:09 X11
-rwx------+ 1 16189 Oct 25 2005 gif_lib.h
-rwx------+ 1 1800 May 15 2005 jconfig.h
-rwx------+ 1 14488 May 15 2005 jerror.h
-rwx------+ 1 14567 May 15 2005 jmorecfg.h
-rwx------+ 1 127488 May 15 2005 jpeg62.dll
-rwx------+ 1 46359 May 15 2005 jpeglib.h
-rwx------+ 1 260096 Jun 5 05:48 libpng12.dll
-rwx------+ 1 260096 Jun 5 05:48 libpng3.dll
-rwx------+ 1 376832 Mar 28 2006 libtiff3.dll
-rwx------+ 1 31232 Mar 2 2007 libungif4.dll
-rwx------+ 1 153839 Jun 5 05:40 png.h
-rwx------+ 1 45382 Jun 5 05:40 pngconf.h
-rwx------+ 1 33725 Dec 27 2005 tiff.h
-rwx------+ 1 2968 Mar 24 2006 tiffconf.h
-rwx------+ 1 23216 Mar 28 2006 tiffio.h
-rwx------+ 1 410 Mar 23 2006 tiffvers.h
-rwx------+ 1 52224 Feb 14 2005 xpm4.dll
-rwx------+ 1 9544 Jul 21 2005 zconf.h
-rwx------+ 1 66188 Jul 18 2005 zlib.h
-rwx------+ 1 75264 Jul 21 2005 zlib1.dll
./DLL/X11:
合計 16
-rwx------+ 1 16286 Jan 25 2004 xpm.h
.:
合計 3528
drwx------+ 3 0 Nov 29 22:10 DLL
-rwx------+ 1 1793 Nov 29 22:06 get.sh
-rw-r--r-- 1 189242 May 15 2005 jpeg-6b-4-bin.zip
-rw-r--r-- 1 38186 May 15 2005 jpeg-6b-4-lib.zip
-rw-r--r-- 1 401037 Jun 5 05:53 libpng-1.2.37-bin.zip
-rw-r--r-- 1 134939 Jun 5 05:55 libpng-1.2.37-lib.zip
-rw-r--r-- 1 285963 Mar 2 2007 libungif-4.1.4-1-bin.zip
-rw-r--r-- 1 12272 Mar 2 2007 libungif-4.1.4-1-lib.zip
-rw-r--r-- 1 928480 Mar 2 2007 libungif-4.1.4-1-src.zip
-rw-r--r-- 1 687244 Mar 31 2006 tiff-3.8.2-1-bin.zip
-rw-r--r-- 1 38372 Mar 31 2006 tiff-3.8.2-1-lib.zip
-rw-r--r-- 1 35884 Feb 15 2005 xpm-3.5.1-1-bin.zip
-rw-r--r-- 1 42484 Feb 15 2005 xpm-3.5.1-1-lib.zip
-rw-r--r-- 1 622191 Feb 15 2005 xpm-3.5.1-1-src.zip
-rw-r--r-- 1 99777 Jul 26 2005 zlib-1.2.3-bin.zip
-rw-r--r-- 1 71569 Jul 26 2005 zlib-1.2.3-lib.zip
./DLL:
合計 1613
drwx------+ 2 0 Nov 29 22:09 X11
-rwx------+ 1 16189 Oct 25 2005 gif_lib.h
-rwx------+ 1 1800 May 15 2005 jconfig.h
-rwx------+ 1 14488 May 15 2005 jerror.h
-rwx------+ 1 14567 May 15 2005 jmorecfg.h
-rwx------+ 1 127488 May 15 2005 jpeg62.dll
-rwx------+ 1 46359 May 15 2005 jpeglib.h
-rwx------+ 1 260096 Jun 5 05:48 libpng12.dll
-rwx------+ 1 260096 Jun 5 05:48 libpng3.dll
-rwx------+ 1 376832 Mar 28 2006 libtiff3.dll
-rwx------+ 1 31232 Mar 2 2007 libungif4.dll
-rwx------+ 1 153839 Jun 5 05:40 png.h
-rwx------+ 1 45382 Jun 5 05:40 pngconf.h
-rwx------+ 1 33725 Dec 27 2005 tiff.h
-rwx------+ 1 2968 Mar 24 2006 tiffconf.h
-rwx------+ 1 23216 Mar 28 2006 tiffio.h
-rwx------+ 1 410 Mar 23 2006 tiffvers.h
-rwx------+ 1 52224 Feb 14 2005 xpm4.dll
-rwx------+ 1 9544 Jul 21 2005 zconf.h
-rwx------+ 1 66188 Jul 18 2005 zlib.h
-rwx------+ 1 75264 Jul 21 2005 zlib1.dll
./DLL/X11:
合計 16
-rwx------+ 1 16286 Jan 25 2004 xpm.h
4. NTEmacs-23.1のインストール
まずemacs-23.1のソースコードを公式ページからダウンロードします。$ mkdir ~/usr
$ cd ~/usr
$ wget http://ftp.gnu.org/pub/gnu/emacs/emacs-23.1.tar.bz2
$ cd ~/usr
$ wget http://ftp.gnu.org/pub/gnu/emacs/emacs-23.1.tar.bz2
つぎに、TaijiからIMEパッチをダウンロードし展開、パッチを当て、コンパイルする。
$ wget
$ tar jxvf emacs-23.1.tar.bz2
$ cd emacs-23.1
$ patch -p1 < ../Emacs-23.1-IME.patch
$ tar jxvf emacs-23.1.tar.bz2
$ cd emacs-23.1
$ patch -p1 < ../Emacs-23.1-IME.patch
Gygwinの/usr/bin/gccがシンボリックリンクなのでコマンドが見つからない問題を回避するため、
configure.batファイルでgccを参照しているところをgcc-3に書き換える。
以下のパッチを当ててもOK.(参考サイト)
--- ../emacs-23.1.org/nt/configure.bat 2009-08-06 13:29:05.061912900 +0900
+++ nt/configure.bat 2009-08-06 13:30:23.116085200 +0900
@@ -141,7 +141,7 @@
goto again
rem ----------------------------------------------------------------------
:withgcc
-set COMPILER=gcc
+set COMPILER=gcc-3
shift
goto again
rem ----------------------------------------------------------------------
@@ -293,11 +293,11 @@
rem Auto-detect compiler if not specified, and validate GCC if chosen.
:checkcompiler
if (%COMPILER%)==(cl) goto compilercheckdone
-if (%COMPILER%)==(gcc) goto checkgcc
+if (%COMPILER%)==(gcc-3) goto checkgcc
echo Checking whether 'gcc' is available...
echo main(){} >junk.c
-gcc -c junk.c
+gcc-3 -c junk.c
if exist junk.o goto checkgcc
echo Checking whether 'cl' is available...
@@ -316,10 +316,10 @@
echo #include "cygwin/version.h" >junk.c
echo main(){} >>junk.c
echo gcc -c junk.c >>config.log
-gcc -c junk.c >>config.log 2>&1
+gcc-3 -c junk.c >>config.log 2>&1
if not exist junk.o goto chkapi
echo gcc -mno-cygwin -c junk.c >>config.log
-gcc -mno-cygwin -c junk.c >>config.log 2>&1
+gcc-3 -mno-cygwin -c junk.c >>config.log 2>&1
if exist junk.o set nocygwin=Y
:chkapi
@@ -348,10 +348,10 @@
set cf=%usercflags% -mno-cygwin
:chkapi2
echo on
-gcc %cf% -c junk.c
+gcc-3 %cf% -c junk.c
@echo off
@echo gcc %cf% -c junk.c >>config.log
-gcc %cf% -c junk.c >>config.log 2>&1
+gcc-3 %cf% -c junk.c >>config.log 2>&1
set cf=
if exist junk.o goto gccOk
echo The failed program was: >>config.log
@@ -367,14 +367,14 @@
goto end
:gccOk
-set COMPILER=gcc
+set COMPILER=gcc-3
echo Using 'gcc'
rm -f junk.c junk.o
Rem It is not clear what GCC version began supporting -mtune
Rem and pentium4 on x86, so check this explicitly.
echo main(){} >junk.c
echo gcc -c -O2 -mtune=pentium4 junk.c >>config.log
-gcc -c -O2 -mtune=pentium4 junk.c >>config.log 2>&1
+gcc-3 -c -O2 -mtune=pentium4 junk.c >>config.log 2>&1
if not errorlevel 1 goto gccMtuneOk
echo The failed program was: >>config.log
type junk.c >>config.log
@@ -389,7 +389,7 @@
rem Check for DWARF-2 debug info support, else default to stabs
echo main(){} >junk.c
echo gcc -c -gdwarf-2 -g3 junk.c >>config.log
-gcc -c -gdwarf-2 -g3 junk.c >>config.log 2>&1
+gcc-3 -c -gdwarf-2 -g3 junk.c >>config.log 2>&1
if not errorlevel 1 goto gccdwarf
echo The failed program was: >>config.log
type junk.c >>config.log
@@ -588,7 +588,7 @@
rem ----------------------------------------------------------------------
:genmakefiles
echo Generating makefiles
-if %COMPILER% == gcc set MAKECMD=gmake
+if %COMPILER% == gcc-3 set MAKECMD=gmake
if %COMPILER% == cl set MAKECMD=nmake
rem Pass on chosen settings to makefiles.
+++ nt/configure.bat 2009-08-06 13:30:23.116085200 +0900
@@ -141,7 +141,7 @@
goto again
rem ----------------------------------------------------------------------
:withgcc
-set COMPILER=gcc
+set COMPILER=gcc-3
shift
goto again
rem ----------------------------------------------------------------------
@@ -293,11 +293,11 @@
rem Auto-detect compiler if not specified, and validate GCC if chosen.
:checkcompiler
if (%COMPILER%)==(cl) goto compilercheckdone
-if (%COMPILER%)==(gcc) goto checkgcc
+if (%COMPILER%)==(gcc-3) goto checkgcc
echo Checking whether 'gcc' is available...
echo main(){} >junk.c
-gcc -c junk.c
+gcc-3 -c junk.c
if exist junk.o goto checkgcc
echo Checking whether 'cl' is available...
@@ -316,10 +316,10 @@
echo #include "cygwin/version.h" >junk.c
echo main(){} >>junk.c
echo gcc -c junk.c >>config.log
-gcc -c junk.c >>config.log 2>&1
+gcc-3 -c junk.c >>config.log 2>&1
if not exist junk.o goto chkapi
echo gcc -mno-cygwin -c junk.c >>config.log
-gcc -mno-cygwin -c junk.c >>config.log 2>&1
+gcc-3 -mno-cygwin -c junk.c >>config.log 2>&1
if exist junk.o set nocygwin=Y
:chkapi
@@ -348,10 +348,10 @@
set cf=%usercflags% -mno-cygwin
:chkapi2
echo on
-gcc %cf% -c junk.c
+gcc-3 %cf% -c junk.c
@echo off
@echo gcc %cf% -c junk.c >>config.log
-gcc %cf% -c junk.c >>config.log 2>&1
+gcc-3 %cf% -c junk.c >>config.log 2>&1
set cf=
if exist junk.o goto gccOk
echo The failed program was: >>config.log
@@ -367,14 +367,14 @@
goto end
:gccOk
-set COMPILER=gcc
+set COMPILER=gcc-3
echo Using 'gcc'
rm -f junk.c junk.o
Rem It is not clear what GCC version began supporting -mtune
Rem and pentium4 on x86, so check this explicitly.
echo main(){} >junk.c
echo gcc -c -O2 -mtune=pentium4 junk.c >>config.log
-gcc -c -O2 -mtune=pentium4 junk.c >>config.log 2>&1
+gcc-3 -c -O2 -mtune=pentium4 junk.c >>config.log 2>&1
if not errorlevel 1 goto gccMtuneOk
echo The failed program was: >>config.log
type junk.c >>config.log
@@ -389,7 +389,7 @@
rem Check for DWARF-2 debug info support, else default to stabs
echo main(){} >junk.c
echo gcc -c -gdwarf-2 -g3 junk.c >>config.log
-gcc -c -gdwarf-2 -g3 junk.c >>config.log 2>&1
+gcc-3 -c -gdwarf-2 -g3 junk.c >>config.log 2>&1
if not errorlevel 1 goto gccdwarf
echo The failed program was: >>config.log
type junk.c >>config.log
@@ -588,7 +588,7 @@
rem ----------------------------------------------------------------------
:genmakefiles
echo Generating makefiles
-if %COMPILER% == gcc set MAKECMD=gmake
+if %COMPILER% == gcc-3 set MAKECMD=gmake
if %COMPILER% == cl set MAKECMD=nmake
rem Pass on chosen settings to makefiles.
上のパッチを当てる
$ patch -p1 < ../emacs-23.1-gcc3.patch
ビルド、インストールを行う。
cygwinのターミナルから
$ LANG=C ./configure.bat --enable-w32-ime --with-gcc --no-cygwin --no-debug --cflags -D_UNICODE --cflags -DRECONVERSION --cflags=-I/usr/local/include --cflags=-I~/src/dlls --prefix=c:/path/to/install
$ make bootstrap
$ make install
$ cp =/src/dlls/*.dll c:/path/to/install/bin
$ make bootstrap
$ make install
$ cp =/src/dlls/*.dll c:/path/to/install/bin
参考サイト
・プログラム番長のヲボエガキ
・u-ch
2009年12月15日火曜日
バッファの文字コードに従ってplatexに-kanjiオプションを渡す
ここで書かれていたコードが非常に便利だったので紹介です.
自分はWindows, Ubuntu, Solaris, Macな人間なので,.texファイルをマシン間でコピーした際に,platexが「文字コードが不明!」とかってエラーを吐きます.
platexに -kanji=eucjp のようにオプションを渡せばいいのですが,いちいち設定するのがめんどくさい.
Auctexを使ってるんだから,C-c C-cしただけでちゃんとコンパイルしてほしい.
そんなときに見つけたのが上記のコードです.
そのままだと,バッファの文字コード認識部分が正常に動かなかったのでちょっと修正してます.
自分はWindows, Ubuntu, Solaris, Macな人間なので,.texファイルをマシン間でコピーした際に,platexが「文字コードが不明!」とかってエラーを吐きます.
platexに -kanji=eucjp のようにオプションを渡せばいいのですが,いちいち設定するのがめんどくさい.
Auctexを使ってるんだから,C-c C-cしただけでちゃんとコンパイルしてほしい.
そんなときに見つけたのが上記のコードです.
そのままだと,バッファの文字コード認識部分が正常に動かなかったのでちょっと修正してます.
(add-hook 'LaTeX-mode-hook '(lambda () (let* ((kcode (symbol-name buffer-file-coding-system)) (opt (cond ((string-match "^utf-8" kcode) " -kanji=utf8") ((string-match "^shift_jis" kcode) " -kanji=sjis") ((string-match "shift-jis" kcode) " -kanji=sjis") ((string-match "^euc-jp" kcode) " -kanji=euc") ((string-match "^japanese-iso-8bit" kcode) " -kanji=euc") ((string-match "^iso-2022-jp" kcode) " -kanji=jis") (t "")))) (if (boundp 'japanese-TeX-command-list) (progn (message "pLaTeX %s inserted" opt) (setcar (cdr (assoc "pLaTeX" japanese-TeX-command-list)) (concat "%(PDF)platex" opt " %`%S%(PDFout)%(mode)%' %t")) (setcar (cdr (assoc "jBibTeX" japanese-TeX-command-list)) (concat "%(PDF)jbibtex" opt " %s")) (message "pLaTeX UTF-8 flag enabled")) (message "pLaTeX UTF-8 flag disabled")))))
2009年12月13日日曜日
macでドットファイルを表示する
windowsでいう隠しファイルのこと。ファイルに隠し設定を施すのではなく、ドットから始まるファイル名にすれば勝手に隠しファイルになる。
で、Windowsなら「隠しファイルを表示する」オプションがあるけど、Macにはない。。。
調べたら以下の方法が見つかりました。
コンソールで以下のコマンドを入力
非表示に戻す場合は
ほかにも、AutomasterとかTinkerTook(Mac版窓の手)を使う方法とかあるようです。
で、Windowsなら「隠しファイルを表示する」オプションがあるけど、Macにはない。。。
調べたら以下の方法が見つかりました。
コンソールで以下のコマンドを入力
$ defaults write com.apple.finder AppleShowAllFiles TRUE
$ killall Finder
Finderが再起動されて、隠しファイルが表示される。$ killall Finder
非表示に戻す場合は
$ defaults write com.apple.finder AppleShowAllFiles FALSE
$ killall Finder
とすればよい。$ killall Finder
ほかにも、AutomasterとかTinkerTook(Mac版窓の手)を使う方法とかあるようです。
2009年12月7日月曜日
2009年12月2日水曜日
tscreen 0.9.4 on Cygwin
GNU Screenは古いの?
に書かれているように,screenの開発が滞っているため,カッとなってforkさせたtscreenというものがあるらしい.
とりあえず何も考えずにCygwinにインストールしてみるが,configureエラーとコンパイルエラーが発生するので,
screen-4.0.2へのCygwinパッチを参考にパッチを作成してみた.
参考ページ
cygwinのscreen
参考パッチ
Re: 1.5.17: problem building GNU screen
Re: screen
上のパッチはconfigureできないバグを,下のパッチはmakeできないバグを修正するモノらしい.
tscreen-0.9.4用に作ったパッチを置いておきます.
tscreen-0.9.4-cygwin.patch
使い方は以下の通り.
起動確認はできたが,詳細な動作確認はしていないので,正常に動くかどうかは不明...
に書かれているように,screenの開発が滞っているため,カッとなってforkさせたtscreenというものがあるらしい.
とりあえず何も考えずにCygwinにインストールしてみるが,configureエラーとコンパイルエラーが発生するので,
screen-4.0.2へのCygwinパッチを参考にパッチを作成してみた.
参考ページ
cygwinのscreen
参考パッチ
Re: 1.5.17: problem building GNU screen
Re: screen
上のパッチはconfigureできないバグを,下のパッチはmakeできないバグを修正するモノらしい.
tscreen-0.9.4用に作ったパッチを置いておきます.
tscreen-0.9.4-cygwin.patch
使い方は以下の通り.
$ ls
tscreen-0.9.4.tgz tscreen-0.9.4-cygwin.patch
$ tar zxvf tscreen-0.9.4.tgz
$ cd tscreen-0.9.4
$ patch -p1 < ../tscreen-0.9.4-cygwin.patch
$ ./configure --enable-colors256
$ make
$ make install
$ tscreen
tscreen-0.9.4.tgz tscreen-0.9.4-cygwin.patch
$ tar zxvf tscreen-0.9.4.tgz
$ cd tscreen-0.9.4
$ patch -p1 < ../tscreen-0.9.4-cygwin.patch
$ ./configure --enable-colors256
$ make
$ make install
$ tscreen
起動確認はできたが,詳細な動作確認はしていないので,正常に動くかどうかは不明...
2009年11月30日月曜日
linux + usb radio + peercast
がんばったのでメモ。
何をやりたいのかはコマンドから察してください。
Peercastの設定はすでに完了しているものとしています。
構成
・Ubuntu 9.04 からアップグレードした Ubuntu 9.10 (カーネル2.6.31)
・PeercastVP
・SUNTEC RDPC-101 (USB AM/FM tuner)
・SUNTEC RDPC-101 (USB AM/FM tuner) ドライバ カーネルパッチ for Linux (Driver Labo. 製)
コンパイル用のディレクトリを作成。
カーネルパッチから、radio-rdpc101.cの部分だけを抜き出し、radio-rdpc101.cとして保存する。
ただし、2.6.31系カーネル(新しめのカーネル)のときには
RDPC-101のカーネルモジュールを作成。カーネルまるまる再構築はめんどくさいのでモジュールだけ。
モジュールの組み込み。
ここでRDPC-101をUSBポートに挿す。
先に変なところで挿しちゃってたら、違うドライバ(radio-si470x)が使われてしまいエラーになる。
そのときは
再生確認。
ここで、スピーカーから音が聞こえればOK
うちのマシンでは音声が再生されない仕様(?)なので、サウンドレコーダーでラジオを録音したファイルを他PCに転送して再生を確認した。
以下のコマンドでoggストリーミング。
以上で、配信ができました。
文章量は少ないけど、いろんな試行錯誤で、再生できるまでに缶詰丸5日もかかった。。。
追記
何をやりたいのかはコマンドから察してください。
Peercastの設定はすでに完了しているものとしています。
構成
・Ubuntu 9.04 からアップグレードした Ubuntu 9.10 (カーネル2.6.31)
・PeercastVP
・SUNTEC RDPC-101 (USB AM/FM tuner)
・SUNTEC RDPC-101 (USB AM/FM tuner) ドライバ カーネルパッチ for Linux (Driver Labo. 製)
1. RDPC-101をLinuxで使えるようにする
まず、以下のような手順でドライバを組み込みます。コンパイル用のディレクトリを作成。
$ mkdir ~/module
$ cd ~/module
$ cd ~/module
カーネルパッチから、radio-rdpc101.cの部分だけを抜き出し、radio-rdpc101.cとして保存する。
ただし、2.6.31系カーネル(新しめのカーネル)のときには
#include <linux/smp_lock.h>
を書き加える必要がある。RDPC-101のカーネルモジュールを作成。カーネルまるまる再構築はめんどくさいのでモジュールだけ。
$ vi Makefile # 内容は「モジュールのみコンパイル」の記事を参照。
$ ls
Makefile radio-rdpc101.c radio-rdpc101.ko .........
$ ls
Makefile radio-rdpc101.c radio-rdpc101.ko .........
モジュールの組み込み。
$ sudo /sbin/modprobe videodev #radio-rdpc101が依存しているので
$ sudo /sbin/insmod radio-rdpc101.ko
$ sudo /sbin/insmod radio-rdpc101.ko
ここでRDPC-101をUSBポートに挿す。
先に変なところで挿しちゃってたら、違うドライバ(radio-si470x)が使われてしまいエラーになる。
そのときは
$ sudo /sbin/rmmod radio-si470x
として、モジュールを除去してから上の作業を行えばOK。再生確認。
$ sudo /sbin/modprobe snd-pcm-oss # alsaの疑似oss機能を追加(/dev/dsp*が作成される)
$ sudo /dev/dsp1 > /dev/dsp
$ sudo /dev/dsp1 > /dev/dsp
ここで、スピーカーから音が聞こえればOK
うちのマシンでは音声が再生されない仕様(?)なので、サウンドレコーダーでラジオを録音したファイルを他PCに転送して再生を確認した。
2. ffmpeg + vlc media player でPeercastにストリーム配信
以下のコマンドでoggストリーミング。
$ ffmpeg -f oss -ac2 -i /dev/dsp1 -ar 44100 -f wav - | cvlc -vvv - --sout '#transcode{acodec=vorb,ab=256,channels=2}:duplicate{dst=std{access=shout,mux=ogg,dst=[user]:[passwd]@[host]:[port]/}} --sout-keep'
[user],[passwd],[host],[port]は、Peercastへ配信するためのユーザー名、パスワード、Peercastが動いているホスト、ポートを指定する。
[user],[passwd],[host],[port]は、Peercastへ配信するためのユーザー名、パスワード、Peercastが動いているホスト、ポートを指定する。
以上で、配信ができました。
文章量は少ないけど、いろんな試行錯誤で、再生できるまでに缶詰丸5日もかかった。。。
追記
# スピーカーで聞きながら配信
$ ffmpeg -f oss -ac2 -i /dev/dsp1 -ar 44100 -f wav - | cvlc -vvv - --sout '#duplicate{dst=display,dst=transcode{acodec=vorb,ab=256,channels=2}:std{access=shout,mux=ogg,dst=[user]:[passwd]@[host]:[port]/}} --sout-keep'
#これだとうまくいかない
$ ffmpeg -f oss -ac2 -i /dev/dsp1 -ar 44100 -f wav - | cvlc -vvv - --sout '#transcode{acodec=vorb,ab=256,channels=2}:duplicate{dst=display,dst=std{access=shout,mux=ogg,dst=[user]:[passwd]@[host]:[port]/}} --sout-keep'
$ ffmpeg -f oss -ac2 -i /dev/dsp1 -ar 44100 -f wav - | cvlc -vvv - --sout '#duplicate{dst=display,dst=transcode{acodec=vorb,ab=256,channels=2}:std{access=shout,mux=ogg,dst=[user]:[passwd]@[host]:[port]/}} --sout-keep'
#これだとうまくいかない
$ ffmpeg -f oss -ac2 -i /dev/dsp1 -ar 44100 -f wav - | cvlc -vvv - --sout '#transcode{acodec=vorb,ab=256,channels=2}:duplicate{dst=display,dst=std{access=shout,mux=ogg,dst=[user]:[passwd]@[host]:[port]/}} --sout-keep'
2009年11月29日日曜日
Linuxのカーネルモジュールだけコンパイル・インストール
以下の内容のMakefileを作成する
makeする
モジュールの組み込み・除去は次のようにする
参考
Linux Kernel 2.6.x プログラミングガイド
Loadable Kernel Moduleの作り方
LS-GLのiptablesによるルーター化(insmodできないときの解決法)
obj-m := hello.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
makeする
$ make
モジュールの組み込み・除去は次のようにする
$ su
$ /sbin/insmod hello.ko
$ /sbin/rmmod hello.ko
次のようなコマンドで確認
$ dmesg
$ /sbin/modprobe -l | grep hello
$ /sbin/insmod hello.ko
$ /sbin/rmmod hello.ko
次のようなコマンドで確認
$ dmesg
$ /sbin/modprobe -l | grep hello
参考
Linux Kernel 2.6.x プログラミングガイド
Loadable Kernel Moduleの作り方
LS-GLのiptablesによるルーター化(insmodできないときの解決法)
Fedora11でカーネル再構築
カーネル再構築に必要なパッケージをインストール
パッケージ構築用のディレクトリ構造を作る
カーネルソースをダウンロードする。特定のバージョンがほしい場合はどっかから持ってくる。
カーネルソース再構築に必要なパッケージをインストール
カーネルソース展開と準備
カスタムカーネル作成準備
コンパイル(時間かかる)
インストール
ちなみに、パッケージを削除するには
参考文献
Fedora 10でカーネルを再構築するには
FC4 私的MEMO カーネル再構築とrpmの作成
RPM
$ su
$ yum install rpmdevtools yum-tuils
$ exit
$ yum install rpmdevtools yum-tuils
$ exit
パッケージ構築用のディレクトリ構造を作る
$ cd
$ rpmdev-setuptree
$ rpmdev-setuptree
カーネルソースをダウンロードする。特定のバージョンがほしい場合はどっかから持ってくる。
$ yumdownloader --source kernel
カーネルソース再構築に必要なパッケージをインストール
$ su
$ yum-builddep kernel-.fc11.rpm
$ exit
$ yum-builddep kernel-
$ exit
カーネルソース展開と準備
$ rpm -Uhv kernel-.fc11.src.rpm
$ cd ~/rpmbuild/SPECS
$ rpmbuild -bp --target=`uname -m` kernel.spec
$ cd ~/rpmbuild/SPECS
$ rpmbuild -bp --target=`uname -m` kernel.spec
カスタムカーネル作成準備
ここでパッチを当てる(※はずだが、コンパイル時にソースが再展開されるのでパッチは無効になる)
$ cd ~/rpmbuild/BUILD/kernel-/linux-
$ cp configs/kernel-.config .config
$ make oldconfig
$ make menuconfig
$ make xconfig
$ cd ~/rpmbuild/SPECS
$ vi kernel.spec
#% define buildid .local
↓
%define buildid .test
$ cd ~/rpmbuild/BUILD/kernel-
$ cp configs/kernel-
$ make oldconfig
$ make menuconfig
$ make xconfig
$ cd ~/rpmbuild/SPECS
$ vi kernel.spec
#% define buildid .local
↓
%define buildid .test
コンパイル(時間かかる)
$ rpmbuild -bb --target=`uname -m` kernel.spec
インストール
$ cd ~/rpmbuild/RPMS/i686
$ su
$ rpm -ihv kernel-.test.fc11.i686.rpm
$ su
$ rpm -ihv kernel-
ちなみに、パッケージを削除するには
$ su
$ rpm -ehv kernel-.test.fc11.i686
$ rpm -ehv kernel-
参考文献
Fedora 10でカーネルを再構築するには
FC4 私的MEMO カーネル再構築とrpmの作成
RPM
登録:
投稿 (Atom)