2013年12月24日火曜日

obsA7-003 dumpによるバックアップ

本格的に初期設定する前に一度バックアップを取ることにする。

1.バックアップの前準備

root@obsa7:~# aptitude install dump
root@obsa7:~# aptitude install bzip2

root@obsa7:~# mkdir -p /dsk/sda2
root@obsa7:~# mount /dev/sda2 /dsk/sda2
root@obsa7:~# df -h|grep sda2
/dev/sda2        11G  155M  9.7G   2% /dsk/sda2
oot@obsa7:~# mkdir -p /dsk/sda2/Backup/OBSA7/RootBz

root@obsa7:~# useradd -m a7user
root@obsa7:~# passwd a7user
root@obsa7:~# vigr
root@obsa7:~# grep a7user /etc/group
disk:x:6:a7user
staff:x:50:a7user
a7user:x:1000:
root@obsa7:~# chown -R a7user /dsk/sda2/Backup/

2.バックアップスクリプト

今後もちょくちょくバックアップするのにスクリプトを用意した。
$ cat /usr/local/bin/b_sda1_local.sh
#! /bin/bash
# $Id: b_sda1_local.sh,v 1.1 2013-12-24 14:49:56+09 a7user $
#

HDEV=sda1
if [ `whoami` != "a7user" ]; then
    ERRMSG="User not a7user."
    echo $ERRMSG
    logger $ERRMSG
    exit 1
fi
MYCMD=$0
MYNM=`basename $0`
BODY=${MYNM%.sh}

RDIR=/dsk/sda2/Backup/OBSA7/RootBz
if [ ! -d ${RDIR} ]; then
    ERRMSG="Not Mounted $RDIR."
    echo $ERRMSG
    logger $ERRMSG
    exit 1
fi
cd $RDIR
if [ $? != 0 ]; then
    ERRMSG="CANNOT cd $RDIR."
    echo $ERRMSG
    logger $ERRMSG
    exit 1
fi

YMD=`date "+%Y_%m%d"`
BDIR=${BODY}_${YMD}
if [ ! -d ${BDIR} ]; then
    mkdir -p ${BDIR}
    if [ $? != 0 ]; then
        ERRMSG="Cannot mkdir $BDIR."
 echo $ERRMSG
 logger $ERRMSG
        exit 1
    fi
fi

CLOG="${BDIR}/${HDEV}_${YMD}.log"
echo "START=`date`" | tee $CLOG
echo "----------------------------------------" | tee -a $CLOG
echo "% /sbin/fdisk -l /dev/sda" | tee -a $CLOG
/sbin/fdisk -l /dev/sda | sed -n -e "/^Disk/,//p" | tee -a $CLOG
echo "----------------------------------------" | tee -a $CLOG
echo "% df" | tee -a $CLOG
df | tee -a $CLOG
echo "" | tee -a $CLOG
echo "" | tee -a $CLOG
echo "****************************************" | tee -a $CLOG
date | tee -a $CLOG
pwd | tee -a $CLOG
set -x
(/sbin/dump 0usf 99999 - /dev/${HDEV} | \
  bzip2 -c > ${BDIR}/${HDEV}_${YMD}.dump.bz2 ) 2>&1 | tee -a $CLOG
date | tee -a $CLOG
ls -l ${BDIR} | tee -a $CLOG
md5sum ${BDIR}/${HDEV}_${YMD}.dump.bz2  | tee -a $CLOG
set +x
echo "****************************************" | tee -a $CLOG
echo "END=`date`" | tee -a $CLOG
logger "$MYNM FINISH." "$CLOG"
exit 0

# end of b_sda1_local.sh

3.バックアップスクリプトの実行

$ /usr/local/bin/b_sda1_local.sh
START=Tue Dec 24 14:14:26 JST 2013
----------------------------------------
% /sbin/fdisk -l /dev/sda
Disk /dev/sda: 20 GB, 20012106240 bytes
255 heads, 63 sectors/track, 2433 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         997     8008371   83  Linux
/dev/sda2             998        2366    10988460   83  Linux
/dev/sda3            2367        2433      530145   82  Linux swap
----------------------------------------
% df
Filesystem     1K-blocks   Used Available Use% Mounted on
rootfs            142799 110248     25179  82% /
/dev/root         142799 110248     25179  82% /
tmpfs             103392    132    103260   1% /run
tmpfs               5120      0      5120   0% /run/lock
tmpfs              10240      0     10240   0% /dev
tmpfs             206780      0    206780   0% /run/shm
/dev/sda1        7882560 420692   7061452   6% /.rw
aufs             7882560 420692   7061452   6% /etc
aufs             7882560 420692   7061452   6% /bin
aufs             7882560 420692   7061452   6% /home
aufs             7882560 420692   7061452   6% /lib
aufs             7882560 420692   7061452   6% /sbin
aufs             7882560 420692   7061452   6% /usr
aufs             7882560 420692   7061452   6% /var
aufs             7882560 420692   7061452   6% /root
aufs             7882560 420692   7061452   6% /opt
aufs             7882560 420692   7061452   6% /srv
aufs             7882560 420692   7061452   6% /media
/dev/sda2       10823708 158088  10115796   2% /dsk/sda2


****************************************
Tue Dec 24 14:14:27 JST 2013
/dsk/sda2/Backup/OBSA7/RootBz
+ tee -a b_sda1_local_2013_1224/sda1_2013_1224.log
+ bzip2 -c
+ /sbin/dump 0usf 99999 - /dev/sda1
  DUMP: Date of this level 0 dump: Tue Dec 24 14:14:27 2013
  DUMP: Dumping /dev/sda1 (/.rw) to standard output
  DUMP: Label: DEBIAN
  DUMP: Writing 10 Kilobyte records
  DUMP: mapping (Pass I) [regular files]
  DUMP: mapping (Pass II) [directories]
  DUMP: estimated 275498 blocks.
  DUMP: Volume 1 started with block 1 at: Tue Dec 24 14:14:28 2013
  DUMP: dumping (Pass III) [directories]
  DUMP: dumping (Pass IV) [regular files]
  DUMP: 38.74% done at 353 kB/s, finished in 0:07
  DUMP: 65.60% done at 299 kB/s, finished in 0:05
  DUMP: 98.06% done at 298 kB/s, finished in 0:00
  DUMP: Volume 1 completed at: Tue Dec 24 14:29:39 2013
  DUMP: Volume 1 275750 blocks (269.29MB)
  DUMP: Volume 1 took 0:15:11
  DUMP: Volume 1 transfer rate: 302 kB/s
  DUMP: 275750 blocks (269.29MB)
  DUMP: finished in 911 seconds, throughput 302 kBytes/sec
  DUMP: Date of this level 0 dump: Tue Dec 24 14:14:27 2013
  DUMP: Date this dump completed:  Tue Dec 24 14:29:39 2013
  DUMP: Average transfer rate: 302 kB/s
  DUMP: DUMP IS DONE
+ tee -a b_sda1_local_2013_1224/sda1_2013_1224.log
+ date
Tue Dec 24 14:29:44 JST 2013
+ tee -a b_sda1_local_2013_1224/sda1_2013_1224.log
+ ls -l b_sda1_local_2013_1224
total 136456
-rw-r--r-- 1 a7user a7user 139580414 Dec 24 14:29 sda1_2013_1224.dump.bz2
-rw-r--r-- 1 a7user a7user      2800 Dec 24 14:29 sda1_2013_1224.log
+ tee -a b_sda1_local_2013_1224/sda1_2013_1224.log
+ md5sum b_sda1_local_2013_1224/sda1_2013_1224.dump.bz2
b35db86c1a8631524be462db1f241262  b_sda1_local_2013_1224/sda1_2013_1224.dump.bz2
+ set +x
****************************************
END=Tue Dec 24 14:29:47 JST 2013

4.バックアップを念のため展開してみる

# PS1="\W# "
# cd /dsk/sda2/Backup/OBSA7/RootBz/b_sda1_local_2013_1224
# mkdir RestoreDir
# cd RestoreDir/
# bzip2 -dc ../sda1_2013_1224.dump.bz2|restore rf -

RestoreDir# pwd
/dsk/sda2/Backup/OBSA7/RootBz/b_sda1_local_2013_1224/RestoreDir
RestoreDir# ls -F
bin/  home/  lost+found/  opt/     root/  srv/ var/
etc/  lib/   media/   restoresymtable  sbin/  usr/
RestoreDir# du -s .
272440 .
RestoreDir# du -s /.rw
271928 /.rw
RestoreDir# du -sh .
267M .
RestoreDir# du -sh /.rw
266M /.rw
RestoreDir#
restoreしてみると、ちゃんとバックアップできてそうだ。

obsA7-002 perl-baseの更新

初回のaptitude safe-upgrade で perl-base が更新できなかったときの回避。この処置が正しいかは怪しい。

1.upgradeでのエラーの症状

root@obsa7:/usr/bin# aptitude update
root@obsa7:/usr/bin# aptitude safe-upgrade
The following packages will be upgraded:
  apt apt-utils dmsetup gnupg gpgv libapt-inst1.5 libapt-pkg4.12
  libdevmapper1.02.1 libgcrypt11 libgssapi-krb5-2 libk5crypto3 libkrb5-3
  libkrb5support0 perl-base sysv-rc sysvinit sysvinit-utils tzdata
The following packages are RECOMMENDED but will NOT be installed:
  gnupg-curl krb5-locales libldap-2.4-2
18 packages upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
Need to get 0 B/8148 kB of archives. After unpacking 224 kB will be freed.
Do you want to continue? [Y/n/?]
Preconfiguring packages ...
(Reading database ... 9396 files and directories currently installed.)
Preparing to replace perl-base 5.14.2-21 (using .../perl-base_5.14.2-21+deb7u1_armel.deb) ...
Unpacking replacement perl-base ...
dpkg: error processing /var/cache/apt/archives/perl-base_5.14.2-21+deb7u1_armel.deb (--unpack):
 unable to make backup link of './usr/bin/perl5.14.2'
  before installing new version: No such file or directory
  >>>(注意1)
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Errors were encountered while processing:
 /var/cache/apt/archives/perl-base_5.14.2-21+deb7u1_armel.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
A package failed to install.  Trying to recover:

root@obsa7:/usr/bin#
(注意1): No such file or directory のエラーが出る。どうも./usr/bin/perl5.14.2が足をひっぱってそうなので、
root@obsa7:/usr/bin# ls -l perl*
-rwxr-xr-x 1 root root 9792 Apr 12  2013 perl
-rwxr-xr-x 1 root root 9792 Apr 12  2013 perl5.14.2
root@obsa7:/usr/bin# mv perl5.14.2 perl5.14.2.bak
mv: cannot move 'perl5.14.2' to 'perl5.14.2.bak': Input/output error
root@obsa7:/usr/bin# cd /.rw/usr/bin

root@obsa7:/.rw/usr/bin# mv perl5.14.2 perl5.14.2_BAK
root@obsa7:/.rw/usr/bin# cd /usr/bin

root@obsa7:/usr/bin# cp perl5.14.2_BAK perl5.14.2
root@obsa7:/usr/bin# ls -l perl*
-rwxr-xr-x 2 root root 9792 Apr 12  2013 perl
-rwxr-xr-x 1 root root 9792 Dec 24 10:10 perl5.14.2
-rwxr-xr-x 1 root root 9792 Apr 12  2013 perl5.14.2_BAK
root@obsa7:/usr/bin#

(後で_BAKを消す)
root@obsa7:/.rw/usr/bin# rm perl5.14.2_BAK
この/usr/bin/perl5.14.2が変更できなくてInput/output errorになっていると思われ、これを回避するために/.rwでリネームして/usr/binでコピーしてみた。そして、再aptitude safe-upgrade するとエラー無く通った。
root@obsa7:/usr/bin# aptitude safe-upgrade
The following packages will be upgraded:
  apt apt-utils dmsetup gnupg gpgv libapt-inst1.5 libapt-pkg4.12
  libdevmapper1.02.1 libgcrypt11 libgssapi-krb5-2 libk5crypto3 libkrb5-3
  libkrb5support0 perl-base sysv-rc sysvinit sysvinit-utils tzdata
The following packages are RECOMMENDED but will NOT be installed:
  gnupg-curl krb5-locales libldap-2.4-2
18 packages upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
Need to get 0 B/8148 kB of archives. After unpacking 224 kB will be freed.
Do you want to continue? [Y/n/?]
Preconfiguring packages ...
(Reading database ... 9396 files and directories currently installed.)
Preparing to replace perl-base 5.14.2-21 (using .../perl-base_5.14.2-21+deb7u1_armel.deb) ...
Unpacking replacement perl-base ...
Processing triggers for man-db ...
Setting up perl-base (5.14.2-21+deb7u1) ...
(Reading database ... 9396 files and directories currently installed.)
Preparing to replace sysvinit 2.88dsf-41 (using .../sysvinit_2.88dsf-41+deb7u1_armel.deb) ...
Unpacking replacement sysvinit ...
Processing triggers for man-db ...
Setting up sysvinit (2.88dsf-41+deb7u1) ...
sysvinit: restarting... done.
INIT: version 2.88 reloading
(省略)

Preparing to replace kernel-image 3.2.40-1 (using .../kernel-image_3.2.40-3_armel.deb) ...
Unpacking replacement kernel-image ...
Setting up kernel-image (3.2.40-3) ...
Load boot image to FlashROM
**************************************************
**************************************************
**************************************************
**************************************************
**************************************************
**************************************************
**************************************************
************
done

Current status: 1 update [-3].
root@obsa7:/usr/bin#
root@obsa7:/usr/bin# ls -l perl*
-rwxr-xr-x 2 root root 9792 Sep 30 17:56 perl
-rwxr-xr-x 2 root root 9792 Sep 30 17:56 perl5.14.2
root@obsa7:/usr/bin#
おお、kernel-imageも自動でアップデート。この時のsource-listは初期の標準のもの。
(前)
root@obsa7:~# uname -a
Linux obsa7 3.2.40 #1 Fri Sep 27 10:30:55 JST 2013 armv5tel GNU/Linux
(後)
root@obsa7:~# uname -a
Linux obsa7 3.2.40 #1 Mon Oct 21 14:10:25 JST 2013 armv5tel GNU/Linux

</etc/apt/sources.list>
deb http://ftp.plathome.co.jp/pub/debian wheezy main
deb-src http://ftp.plathome.co.jp/pub/debian wheezy main

deb http://ftp.plathome.co.jp/pub/debian wheezy-backports main
deb-src http://ftp.plathome.co.jp/pub/debian wheezy-backports main

deb http://ftp.plathome.co.jp/pub/debian-security wheezy/updates main
deb-src http://ftp.plathome.co.jp/pub/debian-security wheezy/updates main

deb http://ftp.plathome.co.jp/pub/OBSA7/debian/wheezy ./

2013年12月16日月曜日

obsA7-001 購入SSD取付け起動

OpenBlocks A7 の設定などをメモっていきます。初回は、購入とSSD取付け起動について。

OpenBlocks A7 Plat’Homeの 製品情報ページです。
http://openblocks.plathome.co.jp/products/obs_a/a7/

1.開梱した内容物

2.天板を取り外した基板の画像

3.SSDの取付け

http://openblocks.plathome.co.jp/products/obs_a/a7/option.html SSDパッケージはPH-20G/SSDSA/A7 (OpenBlocks A7用 SLC SSD 20GB)を選んだ。
2.5インチディスクサイズに付属のスペーサをカマして取り付ける。

4.電源の投入起動

ホーム > 製品情報 > OpenBlocks A Family > A7 > 各種ドキュメント
http://ftp.plathome.co.jp/pub/OBSA7/Documents/OBSA_UsersGuide_1.1.0.pdf を読んで、
コンソール用シリアルケーブルを115200bpsで接続して電源をONにする。
U-Boot 1.1.4 (Sep 19 2013 - 12:04:37)
Plat’Home version: 1.2.6 A7 (Base: Marvell version: 3.5.9)

U-Boot code: 00600000 -> 0067FFF0  BSS: -> 006CF480

Soc: 88F6282 A1CPU running @ 600Mhz L2 running @ 300Mhz
SysClock = 300Mhz , TClock = 200Mhz
(略)
## Booting image at 02000000 ...
   Image Name:   OBSA7 3.2.40-1
   Created:      2013-09-27   1:33:17 UTC
   Image Type:   ARM Linux Multi-File Image (gzip compressed)
   Data Size:    47379757 Bytes = 45.2 MB
(略)
INIT: Entering runlevel: 2
[ ok ] Starting monitoring init button daemon for openblocks: pshd.
[ ok ] Starting enhanced syslogd: rsyslogd.
[ ok ] Starting LED control daemon for openblocks: runled.
[ ok ] Starting periodic command scheduler: cron.
[ ok ] Starting OpenBSD Secure Shell server: sshd.

Debian GNU/Linux 7 obsa7 ttyS0

obsa7 login: root
Password: root

5.SSDの区画を好みのサイズに切る

SWAP領域はいまさら不要と思いつつも作ってしまう。
root@obsa7:~# fdisk -l

Disk /dev/sda: 20 GB, 20012106240 bytes
255 heads, 63 sectors/track, 2433 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         997     8008371   83  Linux
/dev/sda2             998        2366    10988460   83  Linux
/dev/sda3            2367        2433      530145   82  Linux swap

6.フォーマット

# mke2fs -j -L DEBIAN /dev/sda1
# mke2fs -j -L WORK10G /dev/sda2
# mkswap /dev/sda3
以前は # tune2fs -c 0 -i 0 /dev/sda1 とかしていたが、
# dumpe2fs -h /dev/sda1 で見ると
|Maximum mount count:      -1
|Check interval:           0 ()
-c max-mount-counts と -i interval-between-checks はディフォルトになり不要になったようだ。

7.ストレージ併用モードで起動

http://openblocks.plathome.co.jp/support/cookbook/02.html
/dev/sda1のラベルを「DEBIAN」を指定すると、RAMディスクモードからストレージ併用モードになり、RAMディスクモードで必要な、ユーザーエリアへの保存操作が不要になるようだ。
<RAMディスクモードのマウント状態>
root@obsa7:~# df
Filesystem     1K-blocks   Used Available Use% Mounted on
rootfs            142799 110186     25241  82% /
/dev/root         142799 110186     25241  82% /
tmpfs             103392    128    103264   1% /run
tmpfs               5120      0      5120   0% /run/lock
tmpfs              10240      0     10240   0% /dev
tmpfs             206780      0    206780   0% /run/shm
tmpfs             393216  48744    344472  13% /.rw
aufs              393216  48744    344472  13% /etc
aufs              393216  48744    344472  13% /bin
aufs              393216  48744    344472  13% /home
aufs              393216  48744    344472  13% /lib
aufs              393216  48744    344472  13% /sbin
aufs              393216  48744    344472  13% /usr
aufs              393216  48744    344472  13% /var
aufs              393216  48744    344472  13% /root
aufs              393216  48744    344472  13% /opt
aufs              393216  48744    344472  13% /srv
aufs              393216  48744    344472  13% /media
root@obsa7:~#
<ストレージ併用モードのマウント状態>
root@obsa7:~# df
Filesystem     1K-blocks   Used Available Use% Mounted on
rootfs            142799 110206     25221  82% /
/dev/root         142799 110206     25221  82% /
tmpfs             103392    128    103264   1% /run
tmpfs               5120      0      5120   0% /run/lock
tmpfs              10240      0     10240   0% /dev
tmpfs             206780      0    206780   0% /run/shm
/dev/sda1        7882560 197972   7284172   3% /.rw
aufs             7882560 197972   7284172   3% /etc
aufs             7882560 197972   7284172   3% /bin
aufs             7882560 197972   7284172   3% /home
aufs             7882560 197972   7284172   3% /lib
aufs             7882560 197972   7284172   3% /sbin
aufs             7882560 197972   7284172   3% /usr
aufs             7882560 197972   7284172   3% /var
aufs             7882560 197972   7284172   3% /root
aufs             7882560 197972   7284172   3% /opt
aufs             7882560 197972   7284172   3% /srv
aufs             7882560 197972   7284172   3% /media
root@obsa7:~#

・初回起動のときのコンソールメッセージ

EXT3-fs (sda1): using internal journal
EXT3-fs (sda1): mounted filesystem with ordered data mode
aufs test_add:264:mount[942]: uid/gid/perm /root 0/0/0700, 0/0/0755
Extract optional files from FlashROM(mtd6)... done. ←ココ
Creating SSH2 RSA key; this may take some time ...
Creating SSH2 DSA key; this may take some time ...
Creating SSH2 ECDSA key; this may take some time ...
[ ok ] Cleaning up temporary files... /tmp.
ストレージ併用モードでの初回起動は、FlashROM(mtd6)を読み出すようだ。

2013年6月12日水曜日

obs600-13 Debian squeeze を wheezy に

6.0リリースから2年以上経過した2013年5月4日、Debian 7.0(コードネーム: wheezy)が公開された。 そこで、OBS600D をDebian squeeze から wheezy にアップデートした。
(1)sources.listをwheezyに編集して
# cat /etc/apt/sources.list
# Memo ... http://debgen.simplylinux.ch/
deb http://ftp.jp.debian.org/debian wheezy main contrib non-free
deb http://ftp.debian.org/debian/ wheezy-updates main contrib non-free
deb http://security.debian.org/ wheezy/updates main contrib non-free
(2)apt-getする
# apt-get update
# apt-get upgrade
# apt-get dist-upgrade
(3)ここで現行のlinux-2.6.36 だと問題発生
$ uname -a
Linux obs 2.6.36_obs600 #5 Mon Jun 20 18:01:14 JST 2011 ppc GNU/Linux

kernelが2.6.36だと、wheezyにしたあとの再起動で、
udevd[1019]: unable to receive ctrl connection: Function not implemented
udevdのメッセージが大量に出て、起動しなくなった。

udevは2.6.32からの有効な機能のようなので、
udev requires a kernel >= 2.6.32, not started ... failed!
一旦標準の2.6.29で立ち上げる。そしてudevパッケージを旧バージョンにすると
Function not implementedの大量メッセージは回避できるようなので、その手順をメモとして残す。
#もしくは2.6.36_obs600で起動は、(cd /etc/rcS.d;mv S02udev _S02udev)
#にてudevdを仮に起動しないようにするか。

(4)母艦iMacのtftpdを有効にする
imac2% sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist
(5)uImage.initrd-cfbootの準備
% wget ftp://ftp.plathome.co.jp/pub/ssdlinux/0.5-20130606/powerpc-obs600/binary/kern.tgz
% tar zxf kern.tgz ./uImage.initrd-cfboot
% tar zxf kern.tgz ./lib/modules/2.6.29/
# lib/modules/2.6.29 が既にobs:/lib/modules/2.6.29にあれば転送せずともよい。
% scp -p ./uImage.initrd-cfboot imac:/private/tftpboot
# ただし/private/tftpboot は drwxr-xr-x root wheel になってる
(6)OBS600D本体DIP-SW1 ONにする
U-Bootプロンプトで停止させる

(7)115200bpsシリアルコンソールからtftp(imac2:192.168.1.61)uImage取得し起動
=> setenv bootargs root=/dev/sda1 rootdelay=15 console=ttyS0,115200
=> tftpboot 0x400000 192.168.1.61:uImage.initrd-cfboot
Using ppc_4xx_eth0 device (LANケーブルはeth0に接続)
TFTP from server 192.168.1.61; our IP address is 192.168.1.29
Filename 'uImage.initrd-cfboot'.
Load address: 0x400000
Loading: #################################################################
  #################################################################
  ###############
=> bootm 0x400000
|
INIT: version 2.88 booting
[info] Using makefile-style concurrent boot in runlevel S.
[FAIL] udev requires a kernel >= 2.6.32, not started ... failed!
 failed!
[ ok ] Setting parameters of disc: (none).
[info] Setting the system clock.
|

Debian GNU/Linux 7.0 obs600 ttyS0

obs600 login: root
Password: 
2.6.29で使用可能な状態で起動した。

(8)udevをsqueeze版にバージョンダウンさせる
# dpkg -l|grep udev (wheezy版のudev)
ii  libudev0   175-7.2  powerpc libudev shared library
ii  udev       175-7.2  powerpc /dev/ and hotplug management daemon

% wget http://ftp.jp.debian.org/debian/pool/main/u/udev/libudev0_164-3_powerpc.deb
% wget http://ftp.jp.debian.org/debian/pool/main/u/udev/udev_164-3_powerpc.deb

# dpkg -i libudev0_164-3_powerpc.deb udev_164-3_powerpc.deb
# echo libudev0 hold | dpkg --set-selections (hold状態にする)
# echo udev hold | dpkg --set-selections (hold状態にする)

# dpkg -l|grep udev (squeeze版のudev)
hi  libudev0   164-3    powerpc libudev shared library
hi  udev       164-3    powerpc /dev/ and hotplug management daemon
この状態で立ち上げると
[ ok ] Starting the hotplug events dispatcher: udevd.

になって
udevd[1019]: unable to receive ctrl connection: Function not implemented

は回避された。当面問題がなければこの状態で使用する。

2013年5月3日金曜日

iMac-15 gnu-sed

/usr/bin/sed が不満なので、gnu-sed をインストールする。
(1)brew installコマンド
% brew install gnu-sed
% /usr/local/bin/gsed --version | head -1
/usr/local/bin/gsed (GNU sed) 4.2.2
名前が gsed になるのは気に入らない。
% brew uninstall gnu-sed
% brew install --default-names gnu-sed
% ls /usr/local/bin/*sed*
/usr/local/bin/sed
オプションdefault-namesを付けると、gsedでなくsedになった。

(2)/usr/bin/sed の挙動は不満
% echo bbb | nkf -sc > bbb.txt   ... CRLFのテキスト
% hexdump -C bbb.txt    ... 行の終わりが 0xd 0xa のとき
00000000  62 62 62 0d 0a                                    |bbb..|

標準コマンド sed でCRを削除したいとき、
cat bbb.txt | /usr/bin/sed -e 's/\r//g' | hexdump -C
00000000  62 62 62 0d 0a                                    |bbb..|
/usr/bin/sed ではCRを削除できない。

(3)/usr/local/bin/sed では良好
GNUコマンド sed でCRを削除したいとき、
% cat bbb.txt | /usr/local/bin/sed -e 's/\r//g' | hexdump -C
00000000  62 62 62 0a                                       |bbb.|
/usr/local/bin/sed ではCRを削除できる。
#環境変数PATHは/usr/local/binを先に指定しておく。
#tarも brew install --default-names gnu-tar としておこう。

2013年5月2日木曜日

iMac-14 GnuPG

GNU Privacy Guard (gpg)をインストールした。

(1)% brew install gpg

(2)公開鍵と秘密鍵の作成
% gpg --gen-key
gpg (GnuPG) 1.4.13; Copyright (C) 2012 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

gpg: 鍵輪「/Users/username/.gnupg/secring.gpg」ができました
gpg: 鍵輪「/Users/username/.gnupg/pubring.gpg」ができました
ご希望の鍵の種類を選択してください:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (署名のみ)
   (4) RSA (署名のみ)
選択は? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
要求された鍵長は2048ビット
鍵の有効期限を指定してください。
         0 = 鍵は無期限
        = 鍵は n 日間で満了
      w = 鍵は n 週間で満了
      m = 鍵は n か月間で満了
      y = 鍵は n 年間で満了
鍵の有効期間は? (0)
Key does not expire at all
これで正しいですか? (y/N) y

あなたの鍵を同定するためにユーザーIDが必要です。
このソフトは本名、コメント、電子メール・アドレスから
次の書式でユーザーIDを構成します:
    "Heinrich Heine (Der Dichter) "

本名: Firstname USERNAME
電子メール・アドレス: mailaddr@maildom.com
コメント:
次のユーザーIDを選択しました:
    “Firstname USERNAME ”

名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? O
秘密鍵を保護するためにパスフレーズがいります。
パスフレーズを入力:
今から長い乱数を生成します。キーボードを打つとか、マウスを動かす
とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で
乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。
.......+++++
..+++++
今から長い乱数を生成します。キーボードを打つとか、マウスを動かす
とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で
乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。
...............+++++
........+++++
gpg: /Users/username/.gnupg/trustdb.gpg: 信用データベースができました
gpg: 鍵8966XXXXを絶対的に信用するよう記録しました
公開鍵と秘密鍵を作成し、署名しました。

gpg: 信用データベースの検査
gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、PGP信用モデル
gpg: 深さ: 0  有効性:   1  署名:   0  信用: 0-, 0q, 0n, 0m, 0f, 1u
pub   2048R/8966XXXX 2013-05-02
      指紋 = 37F6 3C6F E0C3 AAAA BBBB  4FF6 01B5 96BB XXXX YYYY
uid   Firstname USERNAME 
sub   2048R/E614XXXX 2013-05-02

% gpg --list-keys
/Users/username/.gnupg/pubring.gpg
---------------------------------
pub   2048R/8966XXXX 2013-05-02
uid   Firstname USERNAME 
sub   2048R/E614XXXX 2013-05-02

(3)gpgで暗号化の例
% cd /tmp; mkdir Dir; echo aaa > Dir/aaa.txt
% tar jcf Dir.bz2 Dir
% gpg -r 'Firstname USERNAME ' -e Dir.bz2
% ls -l Dir.bz2.gpg
-rw-rw-r--  1 username  wheel  493  5  2 23:08 Dir.bz2.gpg

(4)gpgで復号化の例
% gpg Dir.bz2.gpg
次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“Firstname USERNAME ”
2048ビットRSA鍵, ID E614XXXX作成日付は2013-05-02 (主鍵ID 8966XXXX)
パスフレーズを入力:
gpg: 2048-ビットRSA鍵, ID E614XXXX, 日付2013-05-02に暗号化されました
   “Firstname USERNAME ”

% tar jtvf Dir.bz2
drwxrwxr-x  0 username wheel       0  5  2 22:45 Dir/
-rw-rw-r--  0 username wheel       4  5  2 22:45 Dir/aaa.txt

※/usr/bin/zipcloak にてパスワードをかけるよりは、gpgによる暗号化の方が安心な気がする。

2013年5月1日水曜日

iMac-13 emacs-w3m

emacs-w3m をインストールする。

(1)w3m本体をbrewにてインストール
% brew install w3m
% /usr/local/bin/w3m -version
w3m version w3m/0.5.3, options lang=en,m17n,color,ansi-color,mouse,menu,cookie,ssl,ssl-verify,external-uri-loader,w3mmailer,nntp,ipv6,alarm,mark

(2)emacs-w3m は以下のようにインストール
% mkdir Develop; cd Develop
% touch ~/.cvspass
% cvs -d :pserver:anonymous@cvs.namazu.org:/storage/cvsroot login
% cvs -d :pserver:anonymous@cvs.namazu.org:/storage/cvsroot co emacs-w3m
% cd ..

% wget http://emacs-w3m.namazu.org/emacs-w3m-1.4.4.tar.gz
% tar zxf emacs-w3m-1.4.4.tar.gz
% mv emacs-w3m-1.4.4 emacs-w3m-1.4.4_cvs
% cp -r Develop/emacs-w3m/* emacs-w3m-1.4.4_cvs
% cd emacs-w3m-1.4.4_cvs
% ./configure --with-emacs=/Applications/Emacs.app/Contents/MacOS/Emacs --prefix=/usr/local 2>&1 | tee configure_log
% make 2>&1 | tee make.log
% make install 2>&1 | tee make_install.log
% mv /usr/local/share/emacs/site-lisp/w3m /Applications/Emacs.app/Contents/Resources/site-lisp/

(3).emacs.d/init.el には以下のように追加
(require 'w3m-load)

(autoload 'browse-url-at-point "browse-url" nil t)
(autoload 'browse-url-at-mouse "browse-url" nil t)
(autoload 'browse-url-of-buffer "browse-url" nil t)
(autoload 'browse-url-of-file "browse-url" nil t)
(autoload 'browse-url-of-dired-file "browse-url" nil t)

(autoload 'w3m "w3m" "Interface for w3m on Emacs." t)
(autoload 'w3m-find-file "w3m" "Find a local file using emacs-w3m." t)
(autoload 'w3m-search "w3m-search" "Search words using emacs-w3m." t)
(autoload 'w3m-weather "w3m-weather" "Display a weather report." t)
(autoload 'w3m-antenna "w3m-antenna" "Report changes of web sites." t)
(autoload 'w3m-namazu "w3m-namazu" "Search files with Namazu." t)

(add-hook 'dired-mode-hook
          (lambda ()
            (define-key dired-mode-map "w" 'dired-w3m-find-file)))
(defun dired-w3m-find-file ()
  (interactive)
  (require 'w3m)
  (let ((file (dired-get-filename)))
    (w3m-find-file file)))

(4)emacs-w3mの実行例
M-x w3m-browse-url
Emacs-w3m URL: http://www.google.co.jp

#URL入力でブラウズするよりは、dird-modeのファイルリスト画面からローカルhtmlファイルにカーソルを置いて"w"コマンドでブラウズすることが多い。TABLEタグの罫線の処理はわりときれいに表示される。