2010年3月21日日曜日

Ubuntu Server 9.10 で無線Lanの設定

サーバー版だとGUIが使えない(使えるけどインストールしない)ので、GUIで無線LANの設定をさくっと、という訳にはいかない。
以下のようにファイルをいじったり、コマンドをたたいたりした。

sudo ifconfig
sudo iwconfig
sudo wpa_passphrase ssid passphrase > /etc/wpa_supplicant.conf

/etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
network={
 ssid="ssid"
 scan_ssid=1
 proto=WPA
 key_mgmt=WPA-PSK
 pairwise=CCMP TKIP
 group=CCMP TKIP 
 #psk="XXXXX"
 psk=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
}

sudo wpa_supplicant -Dwext -iwoan0 -c/etc/wpa_supplicant.conf

/etc/network/interface
auto wlan0
iface wlan0 inet dhcp
pre-up wpa_supplicant -B -Dwext -iwlan0 -c/etc/wpa_supplicant.conf
post-down killall -q wpa_supplicant

2010年3月5日金曜日

Linux Soft Raid 5 で構築したHDDの復旧

Linux Soft Raid5で運用していたHDD群のある鯖が、停電によって起動しなくなってしまったので、それの普及ログ。

【症状】
Kernel panic - not syncing: Attempted to killinit!
が表示され、起動しない。
上の部分ではraid5(/dev/md0)がスタートできないらしいメッセージがちょこっと垣間見える。

【目的】
/home ディレクトリの救出
/etc/{passwd,shadow,group} ファイルの救出

【復旧手順】
1.ドライブをつないだまま(危険だが)KnoppixのCDROMから起動。

2.ターミナルから以下を入力、HDDの情報確認。
# fdisk -l                                                                                   g
bhhuhiuhiuhiutyfytftyfffffffffffffffffffffffffffffffffffffffffffffffffffffffdd
  メモる情報は、パーティションの開始・終了ブロック、シリンダ、ヘッダ、セクタサイズ、種類、HDD型番

3.HDDを別PCにつないで、データをコピーする。
  # dd if=/dev/sda of=sda.img bs=512M
  # dd if=/dev/sdb of=sdb.img bs=512M
  # dd if=/dev/sdc of=sdc.img bs=512M

4.今回はvmwareの固定サイズHDDとして認識させたいので、.img 2 .vmdk にする。
  以下の内容をsda.vmdkとして作成する。
# Disk DescriptorFile
version=1
encoding="Shift_JIS"
CID=27cbf516
parentCID=ffffffff
isNativeSnapshot="no"
createType="monolithicFlat"

# Extent description
RW XXX FLAT "sda-flat.vmdk" 0

# The Disk Data Base 
#DDB

ddb.adapterType = "ide"
ddb.geometry.sectors = "63"
ddb.geometry.heads = "255"
ddb.geometry.cylinders = "14593"
ddb.uuid = "60 00 C2 92 c5 2d 3a 82-1c 02 cf 54 6f 63 4b 2f"
ddb.longContentID = "518ac67ef7fe516d55287b9b27cbf516"
ddb.virtualHWVersion = "7"

  sda.img をsda-flat.vmdkにファイル名変更。
  XXXは ヘッダ*セクタ*シリンダ を計算した数値。
  ヘッダ、セクタ、シリンダの項目も書き換える。

5.vmwareで、既存のHDDとして追加。
6.仮想マシン起動し、soft raidデバイスを作成する。
  ## 状況確認
  # sudo mdadm --examine /dev/sda1
  # sudo mdadm --examine /dev/sda2
  # sudo mdadm --examine /dev/sda3
  # sudo mdadm --examine /dev/sdb1
  # sudo mdadm --examine /dev/sdc1

  ## raidデバイス作成
  # sudo mdadm --assemble /dev/md0 /dev/sda3 /dev/sdb1 /dev/sdc1

  ## dev/sdb1 が壊れているようで起動しない。Raid5なので、起動条件(n-1台は正常)を満たしているので強制起動。
  # sudo mdadm -R /dev/md0

  ## 起動しない。カーネルパラメータをいじる
  ## ubuntuだと、rootにならないとpermission deniedで変更できなかった
  # sudo su -
  # echo 1 > /sys/module/mc_mod/parameters/start_dirty_degraded

  ## 再び起動
  # sudo mdadm -R /dev/md0 # 起動できた  

  ## マウントしてHDDにアクセス
  # sudo mount /dev/md0 /mnt
  # cd /mnt

2010年3月1日月曜日

Bloggerでソースコードに色付けをする

http://jutememo.blogspot.com/2008/01/blogger.html
http://customize-your-blogger.blogspot.com/
http://degital-zakki.blogspot.com/2009/05/blogger.html
http://104tech.blogspot.com/2007/04/blogger.html
を参考に設定した。

テスト
#include <stdio.h>
#include <stdlib.h>

int main(){
    printf("Hello, World!!");
}

2009年12月27日日曜日

Macのターミナル上でscreen

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月22日火曜日

NTEmacs23.1 + IME.patch をビルドする

いろんなところに同じような記事があるが、自分用覚え書き。

注意点は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

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

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

4. NTEmacs-23.1のインストール

まずemacs-23.1のソースコードを公式ページからダウンロードします。
$ mkdir ~/usr
$ 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




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.

上のパッチを当てる
$ 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

参考サイト
プログラム番長のヲボエガキ
u-ch

2009年12月15日火曜日

バッファの文字コードに従ってplatexに-kanjiオプションを渡す

ここで書かれていたコードが非常に便利だったので紹介です.

自分は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にはない。。。
調べたら以下の方法が見つかりました。

コンソールで以下のコマンドを入力
$ defaults write com.apple.finder AppleShowAllFiles TRUE
$ killall Finder
Finderが再起動されて、隠しファイルが表示される。

非表示に戻す場合は
$ defaults write com.apple.finder AppleShowAllFiles FALSE
$ killall Finder
とすればよい。

ほかにも、AutomasterとかTinkerTook(Mac版窓の手)を使う方法とかあるようです。

フォロワー