ラベル OpenBlocks の投稿を表示しています。 すべての投稿を表示
ラベル OpenBlocks の投稿を表示しています。 すべての投稿を表示

2016年8月30日火曜日

obsA7-009 Debian8 jessie

obsA7のDebian7 wheezy 再起動不可をきっかけに、Debian8 jessie に移行した時のメモです。

1.Debian7 wheezy 再起動不可

初回のDebian7 wheezyインストール (記事2013年12月16日 obsA7-001 購入SSD取付け起動) から、問題なく動いていたが、ある日のこと2016.8.11再起動するとread: ERRORとBad Data CRCで停止してしまった。
reading NAND page at offset 0x128c800 failed
 62914560 bytes read: ERROR
## Booting image at 02000000 ...
   Image Name:   OBSA7 3.2.54-1
   Created:      2014-11-26   1:15:22 UTC
   Image Type:   ARM Linux Multi-File Image (uncompressed)
   Data Size:    47747335 Bytes = 45.5 MB
   Load Address: 00008000
   Entry Point:  00008000
   Contents:
   Image 0:  2583736 Bytes =  2.5 MB
   Image 1: 45163587 Bytes = 43.1 MB
   Verifying Checksum ... Bad Data CRC
openblocks>> 

パッケージuboot-imageは1.2.13-2だけれど、これは以下のFAQから、
http://openblocks.plathome.co.jp/products/obs_a/a7/faq4.html#faq-517
FAQ.ファームウェアアップデートを実行したら起動しなくなりました。どうすれば復旧できますか。
A.TFTPサーバを利用したファームウェアのアップデートを行うことで復旧できます。

にて復活するようだったが、これを機会にDebian7 wheezyからDebian8 jessieにアップグレードし、kernelは3.2.54から4.1.19になる。さらにSSDも増量することにした。

2.準備物と参照したページと必要ファイル

2-1. OpenBlocks A7 リリース情報 http://openblocks.plathome.co.jp/support/software/a7/

2-1-1. OpenBlocks A7 7から8へのアップグレード
http://openblocks.plathome.co.jp/support/guide/a7/verup_to_8.html

2-1-2. Debian 8のファームウェアのダウンロード(2016-04-04版)
http://ftp.plathome.co.jp/pub/OBSA7/jessie/4.1.19-0/uImage.initrd.obsa7
ここのuImage.initrd.obsa7をTFTPサーバ側に置いて、obsA7のSW2 ON起動でobsA7復旧用となる。
このuImage.initrd.obsa7で不便がなければ以降のkernelビルド操作は不要。
obsa7_defconfig.txt:42:# CONFIG_BRIDGE is not set
この2016-04-04版のuImage.initrd.obsa7はBRIDGEが無効だったので、kernelビルドすることにした。

2.2. OpenBlocksファームウェア作成ガイド
https://github.com/plathome/debian_based_firmware
対応ファームウェア
機種  Debian  TARGET  DIST  ARCH
A7  8  obsa7  jessie  armel
にてobsa7はjessieに対応している。で、
# cd build_ramdisk
# ./buildall.sh -M obsa7 -D jessie
準備ブツが整っていれば、このbuildall.sh一発でuImage.initrd.obsa7ができそうだが、 ここplathomeガイドの丁寧な解説に補足してステップごとに確認しながら作業を進める。

2.3. 調達したSSD
Samsung SSD 850EVOシリーズ 250GB(ベーシックキット) MZ-75E250B/IT
SSDの選定が正しいか不明だが、コスパで選んだ。
https://www.google.co.jp/webhp?rls=ig&gws_rd=ssl#q=MZ-75E250B

3. 準備

3.1 作成ホスト
Macbook Pro(Early 2011)OSX El Capitan のParallels Desktop 11 for Macに、
ubuntu-ja-16.04-desktop-amd64.isoからUbuntuをインストールして母艦とした。
◯ubuntu 16.04 LTS 日本語 Remix リリース
https://www.ubuntulinux.jp/News/ubuntu1604-ja-remix
tsubota@macbp:Ubuntu16.04% ls -lh ubuntu-ja-16.04-desktop-amd64.iso
-rw-rw-r--  1 tsubota  wheel   1.3G  4 29 13:24 ubuntu-ja-16.04-desktop-amd64.iso
[ubuntu 16.04 parallels]でググるとデスクトップ画面が真っ黒になるのは、3Dアクセラレーション設定をオンにした状態でParallels Toolsを再インストールとありにて解決。

3.2. Gitリポジトリの取得
Ubuntu16.04# apt-get update
Ubuntu16.04# apt-get install git
Gitリポジトリを取得します。
Ubuntu16.04$ git clone git://github.com/plathome/debian_based_firmware.git
以下では、ディレクトリdebian_based_firmwareに移動したものとして説明。とあり、ここではパス${BASEDIR}/debian_based_firmwareとする。

3.3. クロス開発環境
ファームウェアの作成に必要なパッケージをインストール。
Ubuntu16.04# cd ${BASEDIR}/debian_based_firmware/build_ramdisk
Ubuntu16.04# ./build_crossenv.sh
問題なくbuild_crossenv.shは実行された。$ gcc --version|head -1で、
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.2) 5.4.0 20160609 がgccバージョン。

3.4. カーネルソース
3.4.1. カーネル取得
カーネルソースをぷらっとホームのFTPサイトからダウンロード。
Ubuntu16.04$ cd ${BASEDIR}/debian_based_firmware/source/obsa7
Ubuntu16.04:obsa7$ wget http://ftp.plathome.co.jp/pub/OBSA7/jessie/4.1.19-0/linux-4.1.19-obs-20160401.tar.xz
Ubuntu16.04:obsa7$ ls -l linux-4.1.19-obs-20160401.tar.xz
86704504 Apr 1 12:01 linux-4.1.19-obs-20160401.tar.xz

3.4.2. カーネル展開
Ubuntu16.04$ cd ${BASEDIR}/debian_based_firmware/source/obsa7
Ubuntu16.04:obsa7$ xz -dc linux-4.1.19-obs-20160401.tar.xz| tar xf -

3.5. DVDイメージ取得
Ubuntu16.04$ cd ${BASEDIR}/debian_based_firmware/isofiles
Ubuntu16.04:isofiles$ wget http://ftp.riken.jp/Linux/debian/debian-cd/current/armel/iso-dvd/debian-8.5.0-armel-DVD-1.iso
Ubuntu16.04:isofiles$ ls -l debian-8.5.0-armel-DVD-1.iso
4694073344 Jun 5 06:17 debian-8.5.0-armel-DVD-1.iso

4. ファームウェアを作成する。

Ubuntu16.04# cd ${BASEDIR}/debian_based_firmware/build_ramdisk
#### ./buildall.sh -M obsa7 -D jessie
buildall.shはステップごとに確認するのでこの一発スクリプトは実行せず5.へ。

5. カスタマイズはステップごとに

シェルスクリプトbuild_ramdisk/buildall.shを実行することは、DIST=jessie, TARGET=obsa7の場合、以下の通り実行することと同じ。
Ubuntu16.04# cd ${BASEDIR}/debian_based_firmware/build_ramdisk
Ubuntu16.04:build_ramdisk# DIST=jessie TARGET=obsa7 ./build_debootstrap.sh
Ubuntu16.04:build_ramdisk# DIST=jessie TARGET=obsa7 ./build_kernel.sh
Ubuntu16.04:build_ramdisk# DIST=jessie TARGET=obsa7 ./build_ramdisk.sh
Ubuntu16.04:build_ramdisk# DIST=jessie TARGET=obsa7 ./release_firmware.sh
(# export DIST=jessie TARGET=obsa7とするのもよい)

5.0.1 build_debootstrap.sh
Debian 基本システムをインストールdebootstrapを実行し、ディレクトリrootfs/jessie_obsa7以下にDebianを仮インストールする。
<Check_5.0.1>
→cd ${BASEDIR}/debian_based_firmware/rootfs/jessie_obsa7
にルート構成があるか?

5.0.2 build_kernel.sh
カーネルとカーネルモジュールのコンパイル。
<Check_5.0.2>
→cd ${BASEDIR}/debian_based_firmware/source/obsa7/linux-4.1.19
に以下のファイルが出来ているか?
Ubuntu16.04:linux-4.1.19# ls -l net/bridge/bridge.ko
-rw-r--r--  1 root  wheel  116300  8 25 13:58 net/bridge/bridge.ko
Ubuntu16.04:linux-4.1.19# ls -l arch/arm/boot/zImage
-rwxr-xr-x  1 root  wheel  2899384  8 25 13:58 arch/arm/boot/zImage
Ubuntu16.04:linux-4.1.19# ls -l arch/arm/boot/dts/kirkwood-openblocks_a7.dtb
-rw-r--r--  1 root  wheel  11479  8 25 13:22 arch/arm/boot/dts/kirkwood-openblocks_a7.dtb
zImageとkirkwood-openblocks_a7.dtbをcatして、zImage.dtbになる。

5.0.3 build_ramdisk.sh
ディレクトリrootfs/jessie_obsa7以下に仮インストールしたDebianをOpenBlocks用に変更して、RAMディスクイメージを作成。
<Check_5.0.3>
→cd ${BASEDIR}/debian_based_firmware/rootfs
に以下のファイルが出来ているか?
Ubuntu16.04:rootfs# ls -l ramdisk-jessie.obsa7.img
-rw-r--r-- root wheel 188743680 Aug 25 14:04 ramdisk-jessie.obsa7.img

5.0.4 release_firmware.sh
ファームウェア一式を作成。
→cd ${BASEDIR}/debian_based_firmware/release/obsa7/jessie/4.1.19-0
に以下のファイルが出来ているか?
Ubuntu16.04:4.1.19-0# ls -l
  -rw-r--r--  1 root  wheel       337 Aug 28 23:18 MD5.obsa7
  -rw-r--r--  1 root  wheel   1237687 Aug 28 23:17 System.map
  -rw-r--r--  1 root  wheel   8950032 Aug 28 23:17 kernel+modules-4.1.19-0.tar.xz
  -rw-r--r--  1 root  wheel  59792790 Aug 28 23:17 kernel-image-4.1.19-0-obsa7.deb
  -rw-r--r--  1 root  wheel  58335052 Aug 28 23:17 ramdisk-jessie.obsa7.img.gz
  -rw-r--r--  1 root  wheel  61245992 Aug 28 23:17 uImage.initrd.obsa7
  -rw-r--r--  1 root  wheel   2910863 Aug 28 23:17 zImage.dtb
ここで出来たuImage.initrd.obsa7をflashcfgする。

5.1. カーネル
5.1.1. コンフィグレーションの変更
cd ${BASEDIR}/debian_based_firmware/source/obsa7/linux-4.1.19/
の.configからビルド構成される。元ネタは、
Ubuntu16.04:linux-4.1.19# ls -l arch/arm/configs/obsa7_defconfig
-rw-r--r-- 1 root  wheel 96194  3 31 17:09 arch/arm/configs/obsa7_defconfig

# cp -p arch/arm/configs/obsa7_defconfig .config
# make oldconfig
# make menuconfig  ここで、CONFIG_BRIDGEを生かす。
# cp -p .config ../linux-4.1.19.dot.config
もしくは、
# DIST=jessie TARGET=obsa7 ./kernel_menuconfig.sh
オリジナルなobsa7_defconfigで5.0.2 build_kernel.shが通り、5.0.4 release_firmware.shで出来たuImage.initrd.obsa7をflashcfgして正しく起動確認したあと、CONFIG_BRIDGEを有効にした。
*menuconfigのBRIDGEモジュールへ変更位置
  Networking  --->
    Networking options  --->
  <M>  802.1d Ethernet Bridging ←BRIDGEモジュールへ変更
いろいろいじったので正確さに欠けるがついでに以下のあたりが変わった。
% diff linux-4.1.19.dot.config_ORG linux-4.1.19.dot.config_3
633a634
> CONFIG_BRIDGE_NETFILTER=m
767a769
> # CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set
915a918,919
> # CONFIG_NF_TABLES_BRIDGE is not set
> # CONFIG_BRIDGE_NF_EBTABLES is not set
924c928,930
< # CONFIG_BRIDGE is not set
---
> CONFIG_STP=m
> CONFIG_BRIDGE=m
> CONFIG_BRIDGE_IGMP_SNOOPING=y
927a934
> CONFIG_LLC=m

5.9 気づいたことの変更点

正常に起動するものの /sbin/initからの/etc/init.d/rcSが起動するコンソールメッセージがttyS0に表示されなかった。以下のように/dev/consoleを作ると解消された。
<Update_5.0.1>
cd ${BASEDIR}/debian_based_firmware/rootfs/jessie_obsa7/dev
root@ubuntu1604:dev# mknod -m 600 console c 5 1 root@ubuntu1604:dev# ls -l console crw------- 1 root root 5, 1 8月 28 22:37 console
この後、RAMディスクイメージを作成しなおす。
# DIST=jessie TARGET=obsa7 ./99_create_ramdisk.sh
さらに、ファームウェアを作成しなおす。
# DIST=jessie TARGET=obsa7 ./release_firmware.sh

6. ファームウェアの反映

uImage.initrd.obsa7をOBSA7に送って、flashcfgのあと再起動する。
root@obsa7:~# flashcfg -y -f uImage.initrd.obsa7
root@obsa7:~# reboot

再起動のコンソールメッセージを以下に示す。

Broadcast message from root@obsa7 (ttyS0) (Mon Aug 29 11:04:51 2016):

The system is going down for reboot NOW!
[ ok  Sending processes the T[....] Stopping MTA: exim4_listener.
[ ok ] Stopping ISC DHCP server: dhcpd.
[ ok ] Stopping internet superserver: inetd.
[ ok ] Stopping monitoring init button daemon for openblocks: pshd.
[ ok ] Stopping LED control daemon for openblocks: runled.
[ ok ] Saving random seed...done.
[....] Stopping domain name service...: bind9waiting for pid 1753 to die
. ok
[ ok ] Asking all remaining processes to terminate...done.
[ ok ] All processes ended within 2 seconds...done.
[ ok ] Stopping enhanced syslogd: rsyslogd.
[info] Saving the system clock.
[info] Hardware Clock updated to Mon Aug 29 11:04:57 JST 2016.
[ ok ] Deconfiguring network interfaces...done.
[ ok ] Will now deactivate swap:.
[....] Will now unmount union filesystems ( /etc /bin /home /lib /sbin /usr /var[ ok t /opt /srv /media):.
[....] Will now unmount /.rw filesystem (/.rw):umount: /.rw (/dev/sda1) unmounted
. ok
[....] Will now unmount local filesystems:umount: /dsk/sda4 (/dev/sda4) unmounted
umount: /dsk/sda2 (/dev/sda2) unmounted
. ok
[info] Will now restart.
[42054.565904] reboot: Restarting system


U-Boot 1.1.4 (Feb  5 2014 - 12:38:30)
Plat'Home version: 1.2.13 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

DRAM (DDR3) CAS Latency = 6 tRP = 5 tRAS = 15 tRCD=5
DRAM CS[0] base 0x00000000   size 256MB
DRAM CS[1] base 0x10000000   size 256MB
DRAM CS[2] base 0x20000000   size 256MB
DRAM CS[3] base 0x30000000   size 256MB
DRAM Total size   1GB  16bit width
Addresses 8M - 0M are saved for the U-Boot usage.
Mem malloc Initialization (8M - 7M): Done
NAND:256 MB
POST:  mac verify Eth0 PASSED Eth1 PASSED

CPU : Marvell Feroceon (Rev 1)

Streaming disabled
Write allocate disabled

Module 0 is RGMII

USB 0: host mode
USB 1: host mode
USB 2: host mode
USB 3: host mode
Net:   egiga0, egiga1
Hit any key to stop autoboot:  0

Run Boot Selection Script

*** SW 1 IS OFF ***

*** SW 2 IS OFF ***

*** SW 3 IS OFF, Standard Boot ***

Bootargs: root=/dev/ram vmalloc=200M rootdelay=7 mtdparts=nand_mtd:0x1c0000@0x0(uboot)ro,0x2c0000@0x1c0000(env),0x160000@0x480000(test)ro,0x540000@0x5e0000(conf),0x3d40000@0xb20000(linux),0x9660000@0x4860000(user),0x2140000@0xdec0000(opt) ubi.mtd=4 console=ttyS0,115200

NAND read: device 0 offset 0xb20000, size 0x3c00000

Reading data from 0x471f800 -- 100% complete.
 62914560 bytes read: OK
## Booting image at 02000000 ...
   Image Name:   OBSA7 4.1.19-0
   Created:      2016-08-28  14:17:25 UTC
   Image Type:   ARM Linux Multi-File Image (uncompressed)
   Data Size:    61245928 Bytes = 58.4 MB
   Load Address: 00008000
   Entry Point:  00008000
   Contents:
   Image 0:  2910863 Bytes =  2.8 MB
   Image 1: 58335052 Bytes = 55.6 MB
   Verifying Checksum ... OK
OK

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 4.1.19 (root@ubuntu1604) (gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.1) ) #2 PREEMPT Thu Aug 25 13:58:36 JST 2016
[    0.000000] CPU: Feroceon 88FR131 [56251311] revision 1 (ARMv5TE), cr=0005397f
[    0.000000] CPU: VIVT data cache, VIVT instruction cache
[    0.000000] Machine model: Plat'Home OpenBlocksA7
[    0.000000] Memory policy: Data cache writeback
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 260528
[    0.000000] Kernel command line: root=/dev/ram vmalloc=200M rootdelay=7 mtdparts=nand_mtd:0x1c0000@0x0(uboot)ro,0x2c0000@0x1c0000(env),0x160000@0x480000(test)ro,0x540000@0x5e0000(conf),0x3d40000@0xb20000(linux),0x9660000@0x4860000(user),0x2140000@0xdec0000(opt) ubi.mtd=4 console=ttyS0,115200
[    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Memory: 976768K/1048576K available (4167K kernel code, 173K rwdata, 1128K rodata, 152K init, 98K bss, 71808K reserved, 0K cma-reserved, 221184K highmem)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
[    0.000000]     vmalloc : 0xf3000000 - 0xff000000   ( 192 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xf2800000   ( 808 MB)
[    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
[    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
[    0.000000]       .text : 0xc0008000 - 0xc0533f18   (5296 kB)
[    0.000000]       .init : 0xc0534000 - 0xc055a000   ( 152 kB)
[    0.000000]       .data : 0xc055a000 - 0xc0585700   ( 174 kB)
[    0.000000]        .bss : 0xc0585700 - 0xc059df78   (  99 kB)
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] Preemptible hierarchical RCU implementation.
[    0.000000]  Additional per-CPU info printed with stalls.
[    0.000000] NR_IRQS:16 nr_irqs:16 16

(省略)

[    2.275993] Waiting 7 sec before mounting root device...
[    2.281794] ata1.00: supports DRM functions and may not be fully accessible
[    2.289408] ata1.00: configured for UDMA/133
[    2.306690] scsi 0:0:0:0: Direct-Access     ATA      Samsung SSD 850  2B6Q PQ: 0 ANSI: 5
[    2.316454] sd 0:0:0:0: [sda] 488397168 512-byte logical blocks: (250 GB/233 GiB)
[    2.324641] sd 0:0:0:0: Attached scsi generic sg0 type 0
[    2.331072] sd 0:0:0:0: [sda] Write Protect is off
[    2.336689] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    2.347862]  sda: sda1 sda2 sda3 sda4
[    2.354801] sd 0:0:0:0: [sda] Attached SCSI disk
[    2.506247] usb 1-1: new high-speed USB device number 2 using orion-ehci
[    2.656778] usb 1-1: New USB device found, idVendor=0424, idProduct=2514
[    2.663542] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    2.672070] hub 1-1:1.0: USB hub found
[    2.676042] hub 1-1:1.0: 4 ports detected
[    2.956242] usb 1-1.2: new high-speed USB device number 3 using orion-ehci
[    3.104024] usb 1-1.2: New USB device found, idVendor=0411, idProduct=015d
[    3.110997] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    3.118376] usb 1-1.2: Product: 802.11 n WLAN
[    3.122773] usb 1-1.2: Manufacturer: Ralink
[    3.127008] usb 1-1.2: SerialNumber: 1.0
[    9.296368] RAMDISK: gzip image found at block 0
[   20.045354] EXT4-fs (ram0): couldn't mount as ext3 due to feature incompatibilities
[   20.053454] EXT4-fs (ram0): mounting ext2 file system using the ext4 subsystem
[   20.062703] EXT4-fs (ram0): mounted filesystem without journal. Opts: (null)
[   20.070100] VFS: Mounted root (ext2 filesystem) readonly on device 1:0.
[   20.077605] Freeing unused kernel memory: 152K (c0534000 - c055a000)
Mount failed for selinuxfs on /sys/fs/selinux:  No such file or directory
INIT: version 2.88 booting
[....] Starting the hotplug events dispatcher: udevd[   20.833029] systemd-udevd[654]: starting version 215
[   20.852631] random: udevd urandom read with 31 bits of entropy available
. ok
[....] Synthesizing the initial hotplug events...[   21.336776] orion_wdt: Initial timeout 21 sec
[   21.562971] cfg80211: Calling CRDA to update world regulatory domain
done.
[....] Waiting for /dev to be fully populated...[   21.986330] usb 1-1.2: reset high-speed USB device number 3 using orion-ehci
[   22.169046] ieee80211 phy0: rt2x00_set_rt: Info - RT chipset 3070, rev 0201 detected
[   22.250825] ieee80211 phy0: rt2x00_set_rf: Info - RF chipset 0005 detected
[   22.362382] usbcore: registered new interface driver rt2800usb
done.
[   24.266767] EXT4-fs (ram0): re-mounted. Opts: (null)
[   24.766317] cfg80211: Calling CRDA to update world regulatory domain
fsck from util-linux 2.25.2
DEBIAN: clean, 95279/1313760 files, 723360/5245214 blocks
dumpe2fs 1.42.12 (29-Aug-2014)
[   25.451062] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null)
[   25.538766] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null)
[   25.592866] EXT4-fs (sda1): re-mounted. Opts: discard
[   25.653320] aufs test_add:283:mount[893]: uid/gid/perm /etc 0/0/0775, 0/0/0755
[   26.057151] aufs test_add:283:mount[921]: uid/gid/perm /root 0/0/0700, 0/0/0755
[....] Starting the hotplug events dispatcher: udevd[   26.573598] systemd-udevd[955]: starting version 215
. ok
[ ok ] Synthesizing the initial hotplug events...done.
[....] Waiting for /dev to be fully populated...[   27.946330] cfg80211: Calling CRDA to update world regulatory domain
done.
Extract optional files from FlashROM(mtd6)... [   31.106499] cfg80211: Calling CRDA to update world regulatory domain
fail(or empty).
[ ok ] Setting hostname to 'obsa7'...done.
[ ok ] Will now activate lvm and md swap:done.
[info] Will now check all file systems.
fsck from util-linux 2.25.2
Checking all file systems.
[....] Done checking file systems. A log is being saved in /var/log/fsck/checkfs[ ok hat location is writable..
[ ok ] Cleaning up temporary files...[....] Cleaning /tmp...done.
[ ok .
[info] Loading kernel module ipv6.
[   32.701231] NET: Registered protocol family 10
[   32.826989] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
[   34.326253] cfg80211: Calling CRDA to update world regulatory domain
[   35.967705] mv643xx_eth_port mv643xx_eth_port.1 eth1: link up, 1000 Mb/s, full duplex, flow control disabled
[   35.977659] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
[   37.506275] cfg80211: Calling CRDA to update world regulatory domain
[   37.987206] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
[ ok ] Will now mount local filesystems:.
[ ok ] Will now activate swapfile swap:done.
[ ok ] Checking minimum space in /tmp...done.
[ ok ] Cleaning up temporary files....
[ ok ] Setting kernel variables ...done.
[ ok ] Initializing random number generator...done.
[ ok ] Configuring network interfaces...done.
[ ok ] Cleaning up temporary files....
INIT: Entering runlevel: 2
[ ok ] Starting enhanced syslogd: rsyslogd.
[ ok ] Starting domain name service...: bind9.
[ ok ] Starting internet superserver: inetd.
[ ok ] Starting monitoring init button daemon for openblocks: pshd.
[ ok ] Starting LED control daemon for openblocks: runled.
[ ok ] Starting OpenBSD Secure Shell server: sshd.
[ ok ] Starting periodic command scheduler: cron.
[ ok ] Starting MTA: exim4.
[....] Running local boot scripts (/etc/rc.local)/etc/init.d/bridge.sh start

Debian GNU/Linux 8 obsa7 ttyS0

obsa7 login: root
Password:
Last login: Sun Aug 28 23:26:19 JST 2016 on ttyS0
Linux obsa7 4.1.19 #2 PREEMPT Thu Aug 25 13:58:36 JST 2016 armv5tel

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
root@obsa7:~# date
Mon Aug 29 11:08:04 JST 2016
root@obsa7:~# uname -a
Linux obsa7 4.1.19 #2 PREEMPT Thu Aug 25 13:58:36 JST 2016 armv5tel GNU/Linux
root@obsa7:~# cat /etc/issue
Debian GNU/Linux 8 \n \l

root@obsa7:~# cat /etc/os-release|head -1
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
root@obsa7:~#

root@obsa7:~# df -H                            [995] (16-08-29 Mon 11:15:58 AM)
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       183M  153M   22M  88% /
tmpfs           106M  189k  106M   1% /run
tmpfs           5.3M     0  5.3M   0% /run/lock
devtmpfs         11M     0   11M   0% /dev
tmpfs           212M     0  212M   0% /run/shm
/dev/sda1        22G  2.5G   18G  13% /.rw
aufs             22G  2.5G   18G  13% /etc
aufs             22G  2.5G   18G  13% /bin
aufs             22G  2.5G   18G  13% /home
aufs             22G  2.5G   18G  13% /lib
aufs             22G  2.5G   18G  13% /sbin
aufs             22G  2.5G   18G  13% /usr
aufs             22G  2.5G   18G  13% /var
aufs             22G  2.5G   18G  13% /root
aufs             22G  2.5G   18G  13% /opt
aufs             22G  2.5G   18G  13% /srv
aufs             22G  2.5G   18G  13% /media
/dev/sda2        32G  9.3G   21G  31% /dsk/sda2
/dev/sda4       189G  5.7G  174G   4% /dsk/sda4
root@obsa7:~#                                  [996] (16-08-29 Mon 11:17:13 AM)
root@obsa7:~# brctl show                      [1001] (16-08-30 Tue 18:24:24 PM)
bridge name bridge id  STP enabled interfaces
br0  8000.000a85090174 no  eth0
       wlan0
安定版(stable)ディストリビューションのDebian8 jessieに無事アップデート出来た。このobsA7はさらに長生きし活躍するだろう。
この移行中にobs600が代行稼働していた。こちらも今はDebian7 wheezyなので、jessieに移行したい。


2014年1月6日月曜日

obsA7-008 無線LAN

アクセスポイント(無線LANブリッジ)として使用する場合の設定を行ったときのメモです。

1.無線LAN子機 WLI-UC-GN

BUFFALO WLI-UC-GN、このWLI-UC-GNは、 obs600でも使用していたもの (記事2011年6月19日 obs600-10 BUFFALOアダブタ) で、やや安定感が低く時々はドライバをUnload/Loadしながらで、やがて使わなくなっています。linux-2.6.36のときから、linux-3.2.40にアップグレードした今回のドライバではどうでしょうか。
WLI-UC-GN抜き差ししやすいように、短めの延長ケーブルを使っている。
ドライバのビルドせずともWLI-UC-GNアダプタを刺すだけで認識した。
% tail -f /var/log/syslog
Jan  6 11:11:05 obsa7 kernel: usb 1-1.2: new high-speed USB device number 6 using orion-ehci
Jan  6 11:11:05 obsa7 kernel: usb 1-1.2: New USB device found, idVendor=0411, idProduct=015d
Jan  6 11:11:05 obsa7 kernel: usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Jan  6 11:11:05 obsa7 kernel: usb 1-1.2: Product: 802.11 n WLAN
Jan  6 11:11:05 obsa7 kernel: usb 1-1.2: Manufacturer: Ralink
Jan  6 11:11:05 obsa7 kernel: usb 1-1.2: SerialNumber: 1.0
Jan  6 11:11:05 obsa7 kernel: usb 1-1.2: reset high-speed USB device number 6 using orion-ehci
Jan  6 11:11:05 obsa7 kernel: ieee80211 phy18: Selected rate control algorithm 'minstrel_ht'
Jan  6 11:11:05 obsa7 kernel: Registered led device: rt2800usb-phy18::radio
Jan  6 11:11:05 obsa7 kernel: Registered led device: rt2800usb-phy18::assoc
Jan  6 11:11:05 obsa7 kernel: Registered led device: rt2800usb-phy18::quality
Jan  6 11:11:05 obsa7 kernel: usbcore: registered new interface driver rt2800usb
# lsmod
Module                  Size  Used by
rt2800usb              12586  0
rt2800lib              39792  1 rt2800usb
crc_ccitt               1045  1 rt2800lib
rt2x00usb               7293  1 rt2800usb
rt2x00lib              29900  3 rt2x00usb,rt2800lib,rt2800usb
まず始めは、rtl8192cu な GW-USValue-EZを試みたがうまく設定できなかった。
この rt2800usb はすんなりと動いた。
% uname -a #OBSA7標準のこのバージョンを使用
Linux obsa7 3.2.40 #1 Mon Oct 21 14:10:25 JST 2013 armv5tel GNU/Linux

2.ralinkファームウェアインストール

# aptitude install firmware-ralink
The following NEW packages will be installed:
  firmware-ralink
0 packages upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
Need to get 21.4 kB of archives. After unpacking 96.3 kB will be used.
Get: 1 http://ftp.plathome.co.jp/pub/debian/ wheezy/non-free firmware-ralink all 0.36+wheezy.1 [21.4 kB]
Fetched 21.4 kB in 0s (82.6 kB/s)
Selecting previously unselected package firmware-ralink.
(Reading database ... 33634 files and directories currently installed.)
Unpacking firmware-ralink (from .../firmware-ralink_0.36+wheezy.1_all.deb) ...
Setting up firmware-ralink (0.36+wheezy.1) ...

# rt2*.bin rt3*.bin rt73.bin がインストールされる
# ls /lib/firmware/
RTL8192E     mts_cdma.fw  rt2661.bin  rt3090.bin  ti_5052.fw
RTL8192SU    mts_edge.fw  rt2860.bin  rt73.bin   whiteheat.fw
edgeport     mts_gsm.fw   rt2870.bin  rtl_nic   whiteheat_loader.fw
kaweth      rt2561.bin   rt3070.bin  rtlwifi
keyspan_pda  rt2561s.bin  rt3071.bin  ti_3410.fw

3.hostapdのインストール

% wget http://hostap.epitest.fi/releases/hostapd-2.0.tar.gz
% tar zxf hostapd-2.0.tar.gz
% cd hostapd-2.0/hostapd
% cp defconfig .config
% echo CONFIG_LIBNL32=y >> .config

% diff defconfig .config  #CONFIG_IEEE80211N=yも変更した
139c139
< #CONFIG_IEEE80211N=y
---
> CONFIG_IEEE80211N=y
269a270
> CONFIG_LIBNL32=y

% sudo apt-get libnl-genl-3-dev libssl-dev
% make
# make install
# /usr/local/bin/hostapd -v
hostapd v2.0
User space daemon for IEEE 802.11 AP management,
IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
Copyright (c) 2002-2012, Jouni Malinen  and contributors

#hostapd.confはとりあえず動いた状態でまだ吟味できていない
# cat /etc/hostapd/hostapd.conf
interface=wlan0
bridge=br0
driver=nl80211
country_code=JP
ieee80211d=1
ssid=MYSSID
channel=6
hw_mode=g
wpa=2
wpa_passphrase=MYPASSPHRASE
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
ieee80211n=1
wmm_enabled=1
#

4.hostapdの実行

# /usr/local/bin/hostapd /etc/hostapd/hostapd.conf
Configuration file: /etc/hostapd/hostapd.conf
rfkill: Cannot open RFKILL control device
Using interface wlan0 with hwaddr 4c:e6:76:XX:XX:XX and ssid "MYSSID"
^C 起動を確認して中断し、backgroundの-Bをつけて起動。
# /usr/local/bin/hostapd -B /etc/hostapd/hostapd.conf

# iwconfig 2>&1|egrep -v "^$|no wireless"
wlan0     IEEE 802.11bgn  Mode:Master  Frequency:2.437 GHz  Tx-Power=20 dBm
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:on

mon.wlan0  IEEE 802.11bgn  Mode:Monitor  Tx-Power=20 dBm
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:on

# ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr 4c:e6:76:XX:XX:XX
          inet6 addr: fe80::4ee6:76ff:XXX:YYYY/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:36414 errors:0 dropped:0 overruns:0 frame:0
          TX packets:48406 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:4066244 (3.8 MiB)  TX bytes:39695195 (37.8 MiB)

# tail -f /var/log/syslog
Jan  6 11:44:59 obsa7 kernel: device wlan0 entered promiscuous mode
Jan  6 11:44:59 obsa7 kernel: br0: port 2(wlan0) entering forwarding state
Jan  6 11:44:59 obsa7 kernel: br0: port 2(wlan0) entering forwarding state
Jan  6 11:45:02 obsa7 ntpd[3148]: Listen normally on 32 wlan0 fe80::4ee6:76ff:XXX:YYYY UDP 123
Jan  6 11:45:02 obsa7 ntpd[3148]: peers refreshed
Jan  6 11:45:10 obsa7 kernel: wlan0: no IPv6 routers present
Jan  6 11:45:14 obsa7 kernel: br0: port 2(wlan0) entering forwarding state

Jan  6 11:45:58 obsa7 hostapd: wlan0: STA 84:7a:88:XX:XX:XX IEEE 802.11: authenticated
Jan  6 11:45:58 obsa7 hostapd: wlan0: STA 84:7a:88:XX:XX:XX IEEE 802.11: associated (aid 1)
Jan  6 11:45:58 obsa7 hostapd: wlan0: STA 84:7a:88:XX:XX:XX RADIUS: starting accounting session 52CA18AB-00000000
Jan  6 11:45:58 obsa7 hostapd: wlan0: STA 84:7a:88:XX:XX:XX WPA: pairwise key handshake completed (RSN)
syslogにこのようなメッセージで"WPA: pairwise key handshake completed"がでてるとOK。

5.rt2800usbドライバのアンロード/ロード

別ドライバGW-USValue-EZなどrtl8192cuをテストするのにドライバのアンロード/ロードをするたびに、wlan0,wlan1,wlan2...とインターフェイス名が変わるのはおもしろくないので、wlan0固定で使えるように以下のようなスクリプトを書いて回避するようにした。
インターフェイス名はこのファイルが影響するもよう
# tail -3 /etc/udev/rules.d/70-persistent-net.rules

# USB device 0x:0x (rt2800usb)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="4c:e6:76:3c:a9:01", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan0"

#70-persistent-net.rulesの後ろ3行を削除して、ドライバをロードすると、
#いつも"wlan0" になるが、もっとスマートな方法がありそうな...

# cat /etc/init.d/bridge.sh
#! /bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
LINK=`cat /etc/LIF`  #もしくはLINK=eth0
WIF=${WIF:=eth1}
case "$1" in
  start)
    echo -n "Configuring bridge interfaces..."
    ps ax|grep dhclient|grep -qv grep
    if [ $? != 1 ]; then
       killall dhclient
    fi
    lsmod | grep -q rt2800usb
    if [ $? != 1 ]; then
       rmmod rt2800usb rt2800lib crc_ccitt rt2x00usb rt2x00lib
    fi
    RDIR="/etc/udev/rules.d"
    RULE="70-persistent-net.rules"
    RSRC=${RDIR}/${RULE}
    WLAN="wlan0"
    if [ -f $RSRC ]; then
           grep -q $WLAN $RSRC
           if [ $? = 0 ]; then
              RTMP="/tmp/${RULE}"
              cp -p $RSRC $RTMP
              POS1=`egrep -n $WLAN $RTMP |head -1| cut -d: -f1`
              POS0=`expr ${POS1} - 2`
              sed -e ${POS0},${POS1}d $RTMP > $RSRC
           fi
    fi
   #diff /tmp/70-persistent-net.rules /etc/udev/rules.d/70-persistent-net.rules
   # vi /etc/udev/rules.d/70-persistent-net.rules  ...  sed /wlan0/d
    brctl addbr br0
    brctl addif br0 $LINK
    ifconfig $LINK 0.0.0.0 up
    sleep 1
    modprobe rt2800usb
    ( sleep 2; /sbin/dhclient -q ${WIF}; sleep 5; \
      /usr/local/bin/hostapd -B /etc/hostapd/hostapd.conf ) &
    echo "done."
      ;;
  stop)
    echo -n "Deconfiguring bridge interfaces..."
    ps ax|grep hostapd|grep -qv grep
    if [ $? != 1 ]; then
        killall hostapd
    fi
    killall dhclient
    ifconfig -a|grep -q br0
    if [ $? != 1 ]; then
       ifconfig br0 0.0.0.0 down
    fi
    ifconfig $LINK 0.0.0.0 down
    lsmod | grep -q rt2800usb
    if [ $? != 1 ]; then
       rmmod rt2800usb rt2800lib crc_ccitt rt2x00usb rt2x00lib
    fi

    brctl delif br0 $LINK
    brctl show|grep -q $LINK
    if [ $? != 1 ]; then
       brctl delif br0 $LINK
    fi
    brctl show|grep -q br0
    if [ $? != 1 ]; then
       brctl delbr br0
    fi
    echo -n "dhclient $LINK . "
    /sbin/dhclient -q $LINK
    echo "done."
      ;;
  *)
    echo "Usage: $0 {start|stop}" >&2
    exit 1
      ;;
esac
#
/etc/network/interfaces に指定するのがスマートなのでしょうが、テスト時の柔軟さを優先すると、スクリプト書きが好みです。 安定して動作するか、転送速度・性能を含めて経過観察していきたい。

6.WLI-UC-GN稼働状況(追記2014.4.21)

OBS A7 は実に安定している。堅牢ということばが似合うルータだ。
遅ればせながら、# aptitude update と # aptitude safe-upgrade を行い
kernel-image や OpenSSL を含むアップデートを行う前に、wlan0のインターフェイス を確認しておく。
% date
Mon Apr 21 09:39:04 JST 2014

% uptime
 09:39:29 up 93 days, 19:35,  2 users,  load average: 0.05, 0.09, 0.06

% ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr 4c:e6:76:3c:a9:01
          inet6 addr: fe80::4ee6:76ff:fe3c:a901/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:34453010 errors:0 dropped:0 overruns:0 frame:0
          TX packets:36020512 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2098197015 (1.9 GiB)  TX bytes:3952858575 (3.6 GiB)
wlan0は連続93日稼働で、TX側36020512パケットで(3.6 GiB)となっている。
br0       Link encap:Ethernet  HWaddr 00:0a:85:09:01:74
          inet addr:192.168.1.30  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20a:85ff:fe09:174/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:44300752 errors:0 dropped:2 overruns:0 frame:0
          TX packets:67218375 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:5603503687 (5.2 GiB)  TX bytes:83616546596 (77.8 GiB)
ちなみにブリッジinterface br0には77.8 GiB流量があったようだ。
ここまでの約3ヶ月、WLI-UC-GNは問題なく、とても良く働いてくれている。

そして、iPerfでobsA7とiMac間をパフォーマンス測定すると。
(obsA7側) % iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local 192.168.1.30 port 5001 connected with 192.168.1.62 port 65098
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.1 sec  37.5 MBytes  31.1 Mbits/sec

(iMac側) % iperf -c obsa7
------------------------------------------------------------
Client connecting to obsa7, TCP port 5001
TCP window size:  129 KByte (default)
------------------------------------------------------------
[  5] local 192.168.1.62 port 65098 connected with 192.168.1.30 port 5001
[ ID] Interval       Transfer     Bandwidth
[  5]  0.0-10.1 sec  37.5 MBytes  31.2 Mbits/sec
およそ無線LANでは、31Mbits/secと計測できた。

ちなみに有線LANだと。以下のように132Mbits/secと計測した。
(obsA7側) % iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local 192.168.1.30 port 5001 connected with 192.168.1.61 port 65039
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.0 sec   157 MBytes   132 Mbits/sec

(iMac側) % iperf -c obsa7
------------------------------------------------------------
Client connecting to obsa7, TCP port 5001
TCP window size:  129 KByte (default)
------------------------------------------------------------
[  5] local 192.168.1.61 port 65039 connected with 192.168.1.30 port 5001
[ ID] Interval       Transfer     Bandwidth
[  5]  0.0-10.0 sec   157 MBytes   132 Mbits/sec
# iwconfig
wlan0     IEEE 802.11bgn  Mode:Master  Frequency:2.437 GHz  Tx-Power=20 dBm
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:on
mon.wlan0  IEEE 802.11bgn  Mode:Monitor  Tx-Power=20 dBm
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:on
今は、/etc/hostapd/hostapd.conf のhw_mode=gだが、ここが11nでいつか動けばいいなぁ。

2013年12月31日火曜日

obsA7-007 exim4でsmtp.google.comに

前回のobsA7-006 exim4とmydns.jp に続いて、スマートホスト先をsmtp.google.comにして見た。

1.yahooとgoogleの差分

dc_relay_はコメントにして、dc_smarthostをsmtp.mail.yahoo.co.jpからsmtp.gmail.comにする。
#ためしているだけで、通常はyahoo.co.jpを使用する予定。
# diff update-exim4.conf.conf_yahoo update-exim4.conf.conf
23c23
< dc_relay_domains='smtp.mail.yahoo.co.jp'
---
> #dc_relay_domains='smtp.mail.yahoo.co.jp'
25c25
< dc_relay_nets='local_sample.or.jp:*.local_sample.or.jp:*.mail.yahoo.co.jp'
---
> #dc_relay_nets='local_sample.or.jp:*.local_sample.or.jp:*.mail.yahoo.co.jp'
28c28
< #dc_smarthost='smtp.gmail.com::587'
---
> dc_smarthost='smtp.gmail.com::587'
30c30
< dc_smarthost='smtp.mail.yahoo.co.jp::587'
---
> #dc_smarthost='smtp.mail.yahoo.co.jp::587'
SMTP-AUTH認証用 passwd.client の変更
# egrep -v '^#' /etc/exim4/passwd.client
*.google.com:GUSERID@gmail.com:PASSWORD
ここが、*.google.comでなく smtp.google.comだと、
SMTP>> STARTTLS でReady to start TLSになるものの
SMTP>> AUTH PLAIN ******************************
のAUTH PLAINにならずに、
SMTP>> MAIL FROM:
となって送信出来なかった。
送信サーバは gmail-smtp-msa.l.google.com になるのかと思われる。

2.メール送信テスト

<toGoogle.sh>
#! /bin/sh
set -x
export DT="TEST_test `date`"
(echo "Subject: $DT"; echo "To: au_user@ezweb.ne.jp";\
 echo "From: GUSERID@gmail.com"; echo ""; echo "$DT" ;\
 echo "from `hostname`") | \
/usr/sbin/exim4 -v -f GUSERID@gmail.com au_user@ezweb.ne.jp

# このスクリプトを実行
% ./toGoogle.sh                  [82] (13-12-31 Tue 14:00:59 PM)
+ date
+ export DT=TEST_test Tue Dec 31 14:01:01 JST 2013
+ /usr/sbin/exim4+  -v -f GUSERID@gmail.com au_user@ezweb.ne.jp
echo Subject: TEST_test Tue Dec 31 14:01:01 JST 2013
+ echo To: GUSERID@gmail.com
+ echo From: GUSERID@gmail.com
+ echo
+ echo TEST_test Tue Dec 31 14:01:01 JST 2013
+ hostname
+ echo from obsa7
LOG: MAIN
  <= GUSERID@gmail.com U=a7user P=local S=399
delivering 1VxrRt-0003XY-GO
R: smarthost for au_user@ezweb.ne.jp
T: remote_smtp_smarthost for au_user@ezweb.ne.jp
Transport port=25 replaced by host-specific port=587
Connecting to gmail-smtp-msa.l.google.com [74.125.129.108]:587 ... connected
  SMTP<< 220 mx.google.com ESMTP ae5sm111949890pac.18 - gsmtp
  SMTP>> EHLO obsa7
  SMTP<< 250-mx.google.com at your service, [106.172.137.192]
         250-SIZE 35882577
         250-8BITMIME
         250-STARTTLS
         250-ENHANCEDSTATUSCODES
         250 CHUNKING
  SMTP>> STARTTLS
  SMTP<< 220 2.0.0 Ready to start TLS
  SMTP>> EHLO obsa7
  SMTP<< 250-mx.google.com at your service, [106.172.137.192]
         250-SIZE 35882577
         250-8BITMIME
         250-AUTH LOGIN PLAIN XOAUTH XOAUTH2 PLAIN-CLIENTTOKEN
         250-ENHANCEDSTATUSCODES
         250 CHUNKING
  SMTP>> AUTH PLAIN ****************************************
  SMTP<< 235 2.7.0 Accepted
  SMTP>> MAIL FROM: SIZE=1434 AUTH=a7user@obsa7.local
  SMTP<< 250 2.1.0 OK ae5sm111949890pac.18 - gsmtp
  SMTP>> RCPT TO:
  SMTP<< 250 2.1.5 OK ae5sm111949890pac.18 - gsmtp
  SMTP>> DATA
  SMTP<< 354  Go ahead ae5sm111949890pac.18 - gsmtp
  SMTP>> writing message and terminating "."
  SMTP<< 250 2.0.0 OK 1388466065 ae5sm111949890pac.18 - gsmtp
  SMTP>> QUIT
LOG: MAIN
  => au_user@ezweb.ne.jp R=smarthost T=remote_smtp_smarthost H=gmail-smtp-msa.l.google.com [74.125.129.108] X=TLS1.2:RSA_ARCFOUR_SHA1:128 DN="C=US,ST=California,L=Mountain View,O=Google Inc,CN=smtp.gmail.com"
LOG: MAIN
  Completed

a7user@obsa7:~%

3.第三者中継テスト

25番ポート開けておくと、結構Relay要求があるようだ。現行のOBS600のログ。
To: UUUUU@HHHHH.mydns.jp
Subject: Logwatch for obs (Linux)
Date: Mon, 16 Dec 2013 06:26:54 +0900

################### Logwatch 7.4.0 (05/02/12) ####################
        Processing Initiated: Mon Dec 16 06:26:37 2013
        Date Range Processed: yesterday
                              ( 2013-Dec-15 )
                              Period is day.
        Detail Level of Output: 0
        Type of Output/Format: mail / text
        Logfiles for Host: obs
##################################################################

--------------------- EXIM Begin ------------------------

--- Refused Relays 64 times

--- Bad Hosts ---

--- Failed Reverse Lookups
--- 18  Time(s)
念のため、このサイトhttp://www.rbl.jp/svcheck.phpを利用させていただいて確認した。
第三者中継テスト
第三者中継テストのためobsa7_sample.mydns.jpに接続しています...

((((( 途中省略 ))))))

>>> RSET
relay NOT accepted!!
中継テスト その19

>>> RSET
relay NOT accepted!!
接続を閉じています...

>>> QUIT
第三者中継テストの結果

全てのテストが行われました, no relays accepted.
最後の行が"no relays accepted"だと合格のようだ。

obsA7-006 exim4とmydns.jp

Mail Transfer Agentはexim4を、おうちメールサーバアドレスとしては無料のダイナミックDNS(Dynamic DNS、DDNS)MyDNS.JPを使って構成する。 スマートホストの中継先は、smtp.mail.yahoo.co.jpを使っているが、たぶんsmtp.gmail.comでも同様に動作するだろう。

MyDNS.JP取得については省略する。以下のように名前解決していることが前提。
# host obsa7_sample.mydns.jp
obsa7_sample.mydns.jp has address 106.XXX.YYY.ZZZ
obsa7_sample.mydns.jp mail is handled by 10 obsa7_sample.mydns.jp.

1.exim4の設定

前準備
# パッケージexim4をインストール
# aptitude install exim4
# dpkg -l | grep exim4
ii  exim4              4.80-7 all   metapackage to ease Exim MTA (v4) installation
ii  exim4-base         4.80-7 armel support files for all Exim MTA (v4) packages
ii  exim4-config       4.80-7 all   configuration for the Exim MTA (v4)
ii  exim4-daemon-light 4.80-7 armel lightweight Exim MTA (v4) daemon

# もしpaniclogがあれば空にしておく。
# ls -l /var/log/exim4/paniclog
# cp /dev/null /var/log/exim4/paniclog

# ls -l /etc/exim4/update-exim4.conf.conf
-rw-r--r-- 1 root root 1027 Dec 24 21:18 /etc/exim4/update-exim4.conf.conf

# このupdate-exim4.conf.confは中間設定ワークであるが、
# /var/lib/exim4/config.autogenerated が設定・変更される

# update-exim4.conf.confを直接変更したときは、
# /usr/sbin/update-exim4.conf
# /etc/init.d/exim4 restart
# として、/var/lib/exim4/config.autogeneratedを更新・反映させる。
ではexim4-config を行う。以下はテキストベースの設定画面を説明用に部分抽出したもの。
# dpkg-reconfigure exim4-config 

Package configuration                                                           
┤ Mail Server configuration 


General type of mail configuration:  メール設定の一般的なタイプ
   │     internet site; mail is sent and received directly using SMTP
   │   X mail sent by smarthost; received via SMTP or fetchmail      
   │     mail sent by smarthost; no local mail                       
   │     local delivery only; not on a network                       
   │     no configuration at this time                               


System mail name: システムメール名  /etc/mailname
 │ obsa7.local_sample.or.jp


IP-addresses to listen on for incoming SMTP connections:  入力側SMTP接続をリスンするIPアドレス
 │ 空


Other destinations for which mail is accepted: このSMTPサーバーで扱うドメインを指定します。
 │ obsa7_sample.mydns.jp


Domains to relay mail for: 外部リレーは認証済みのアカウント以外はできないので空でもよい。
 │ smtp.mail.yahoo.co.jp


Machines to relay mail for: メールをリレーするマシン
 │ local_sample.or.jp:*.local_sample.or.jp:*.mail.yahoo.co.jp


IP address or host name of the outgoing smarthost: このホストから送出されたメールを操作するマシン (スマートホスト)
 │ smtp.mail.yahoo.co.jp::587


│ Hide local mail name in outgoing mail?  送出するメールでローカルメール名を隠しますか?


Keep number of DNS-queries minimal (Dial-on-Demand)?  DNS クエリの数を最小限に留めますか (ダイヤルオンデマンド)? 


Delivery method for local mail: 
 │ X mbox format in /var/mail/         
 │   Maildir format in home directory  


Split configuration into small files?      設定を小さなファイルに分割しますか?


Root and postmaster mail recipient:
 │ root


[ ok ] Stopping MTA for restart: exim4_listener.
[ ok ] Restarting MTA: exim4.

# egrep -v '^#' update-exim4.conf.conf

dc_eximconfig_configtype='smarthost'
dc_other_hostnames='obsa7_sample.mydns.jp'
dc_local_interfaces=''
dc_readhost='obs.local_sample.or.jp'
dc_relay_domains='smtp.mail.yahoo.co.jp'
dc_minimaldns='false'
dc_relay_nets='local_sample.or.jp:*.local_sample.or.jp:*.mail.yahoo.co.jp'
dc_smarthost='smtp.mail.yahoo.co.jp::587'
CFILEMODE='644'
dc_use_split_config='true'
dc_hide_mailname='false'
dc_mailname_in_oh='true'
dc_localdelivery='mail_spool'
SMTP-AUTH認証用 passwd.client を設定
# egrep -v '^#' /etc/exim4/passwd.client
smtp.mail.yahoo.co.jp:Yahoo_JAPAN_MAIL@yahoo.co.jp:"Yahoo! JAPAN パスワード"

# chgrp Debian-exim passwd.client
# ls -l /etc/exim4/passwd.client
-rw-r----- 1 root Debian-exim 330 Dec 31 09:42 /etc/exim4/passwd.client
passwd.clientへのIDパスワードは、
http://info.mail.yahoo.co.jp/options/imapprofile/
Yahoo!JAPANにログイン後このページを見て
smtp.mail.yahoo.co.jp:メールアドレス:パスワード の行を設定する。
Yahoo_JAPAN_MAIL@yahoo.co.jp部分は@yahoo.co.jpを省略しても通ったようだ。
                    サーバー設定                    
 受信メール(IMAP)サーバー  imap.mail.yahoo.co.jp  
 受信メール(IMAP)通信方法  SSL                    
受信メール(IMAP)ポート番号 993                    
 送信メール(SMTP)サーバー  smtp.mail.yahoo.co.jp  
 送信メール(SMTP)認証方式  SMTP_AUTH              
 送信メール(SMTP)通信方法  SSL                    
送信メール(SMTP)ポート番号 465                    
  アカウント名/ログイン名    Yahoo_JAPAN_ID ... "Yahoo! JAPAN ID"     
       メールアドレス        Yahoo_JAPAN_MAIL@yahoo.co.jp
         パスワード          Yahoo! JAPAN パスワード
証明書の作成
# /usr/share/doc/exim4-base/examples/exim-gencert
Country Code (2 letters) [US]:JP
State or Province Name (full name) []:MY_FULL_NAME
Locality Name (eg, city) []:
Organization Name (eg, company; recommended) []:
Organizational Unit Name (eg, section) []:
Server name (eg. ssl.domain.tld; required!!!) []:
Email Address []:
[*] Done generating self signed certificates for exim!
    Refer to the documentation and example configuration files
    over at /usr/share/doc/exim4-base/ for an idea on how to enable TLS
    support in your mail transfer agent.
root@obsa7:exim4# ls -l exim.crt exim.key
-rw-r----- 1 root Debian-exim 652 Dec 30 23:22 exim.crt
-rw-r----- 1 root Debian-exim 916 Dec 30 23:22 exim.key
SMTP認証の設定
ユーザ認証方式は、「AUTH PLAIN」「AUTH LOGIN」を有効化する。
# diff /etc/exim4/exim4.conf.template.org /etc/exim4/exim4.conf.template
316c316
<
---
> MAIN_TLS_ENABLE = USE
1818,1826c1818,1826
< # plain_server:
< #   driver = plaintext
< #   public_name = PLAIN
< #   server_condition = "${if crypteq{$auth3}{${extract{1}{:}{${lookup{$auth2}lsearch{CONFDIR/passwd}{$value}{*:*}}}}}{1}{0}}"
< #   server_set_id = $auth2
< #   server_prompts = :
< #   .ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
< #   server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}
< #   .endif
---
> plain_server:
>   driver = plaintext
>   public_name = PLAIN
>   server_condition = "${if crypteq{$auth3}{${extract{1}{:}{${lookup{$auth2}lsearch{CONFDIR/passwd}{$value}{*:*}}}}}{1}{0}}"
>   server_set_id = $auth2
>   server_prompts = :
>   .ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
>   server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}
>   .endif
1833,1841c1833,1841
< # login_server:
< #   driver = plaintext
< #   public_name = LOGIN
< #   server_prompts = "Username:: : Password::"
< #   server_condition = "${if crypteq{$auth2}{${extract{1}{:}{${lookup{$auth1}lsearch{CONFDIR/passwd}{$value}{*:*}}}}}{1}{0}}"
< #   server_set_id = $auth1
< #   .ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
< #   server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}
< #   .endif
---
> login_server:
>   driver = plaintext
>   public_name = LOGIN
>   server_prompts = "Username:: : Password::"
>   server_condition = "${if crypteq{$auth2}{${extract{1}{:}{${lookup{$auth1}lsearch{CONFDIR/passwd}{$value}{*:*}}}}}{1}{0}}"
>   server_set_id = $auth1
>   .ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
>   server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}
>   .endif

2.メール送信テスト

<toYahoo.sh>
#! /bin/sh
set -x
export DT="TEST_test `date`"
(echo "Subject: $DT"; echo "To: au_user@ezweb.ne.jp";\
 echo "From: Yahoo_JAPAN_MAIL@yahoo.co.jp"; echo ""; echo "$DT" ;\
 echo "from `hostname`") | \
/usr/sbin/exim4 -v -f Yahoo_JAPAN_MAIL@yahoo.co.jp au_user@ezweb.ne.jp

# このスクリプトを実行
obsa7user@obsa7:~% ./toYahoo.sh
+ date
+ export DT=TEST_test Tue Dec 31 00:37:01 JST 2013
+ /usr/sbin/exim4+  -v -f obsa7_sample_user@yahoo.co.jp au_user@ezweb.ne.jp
echo Subject: TEST_test Tue Dec 31 00:37:01 JST 2013
+ echo To: au_user@ezweb.ne.jp
+ echo From: obsa7_sample_user@yahoo.co.jp
+ echo
+ echo TEST_test Tue Dec 31 00:37:01 JST 2013
+ hostname
+ echo from obsa7
LOG: MAIN
  <= obsa7_sample_user@yahoo.co.jp U=obsa7user P=local S=408
obsa7user@obsa7:~% delivering 1Vxetp-0001hN-6O
R: smarthost for au_user@ezweb.ne.jp
T: remote_smtp_smarthost for au_user@ezweb.ne.jp
Transport port=25 replaced by host-specific port=587
Connecting to smtp.mail.yahoo.co.jp [114.111.99.228]:587 ... connected
  SMTP<< 220 smtp506.mail.kks.yahoo.co.jp ESMTP
  SMTP>> EHLO obsa7
  SMTP<< 250-smtp506.mail.kks.yahoo.co.jp
         250-AUTH LOGIN PLAIN XYMCOOKIE
         250-PIPELINING
         250 8BITMIME
  SMTP>> AUTH PLAIN ****************************
  SMTP<< 235 ok, go ahead (#2.0.0)
  SMTP>> MAIL FROM: AUTH=obsa7user@obsa7.local_sample.or.jp
  SMTP>> RCPT TO:
  SMTP>> DATA
  SMTP<< 250 ok
  SMTP<< 250 ok
  SMTP<< 354 go ahead
  SMTP>> writing message and terminating "."
  SMTP<< 250 ok 1388417821 qp 62878
  SMTP>> QUIT
LOG: MAIN
  => au_user@ezweb.ne.jp R=smarthost T=remote_smtp_smarthost H=smtp.mail.yahoo.co.jp [114.111.99.228]
LOG: MAIN
  Completed
% 

</var/log/exim4/mainlog>
2013-12-31 00:37:01 1Vxetp-0001hN-6O <= Yahoo_JAPAN_MAIL@yahoo.co.jp U=a7user P=local S=408
2013-12-31 00:37:02 1Vxetp-0001hN-6O => au_user@ezweb.ne.jp R=smarthost T=remote_smtp_smarthost H=smtp.mail.yahoo.co.jp [114.111.99.228]
もし送信に失敗していたなら、メールがFrozenになるので、
→ 1Vxdpt-0000tm-7W Frozen (delivery error message)
# pushd /var/spool/exim4/input/; rm -i 1* とかして、失敗メールは削除する。

2013年12月28日土曜日

obsA7-005 ログインシェルとssh

1./root/.bashrc プロンプト表示を好みに変更

root@obsa7:~# cd /root
root@obsa7:~# diff .bashrc.org .bashrc
5c5
< # PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ '
---
> PS1='${debian_chroot:+($debian_chroot)}\u@\h:\W\$ '
root@obsa7:~#

# 変更前のPS1 のパス表示プロンプト
obsa7:~# cd /var/log/samba
obsa7:/var/log/samba#
# 変更後のPS1 のパス表示プロンプト
root@obsa7:~# cd /var/log/samba
root@obsa7:samba#
# ホスト名表示し、パス名はカレントディレクトリだけの表示が好み

2.ログインシェルの変更

$ grep -n a7user /etc/passwd
21:a7user:x:1000:1000::/home/a7user:/bin/sh
$ grep zsh /etc/shells
/bin/zsh
/usr/bin/zsh
$ chsh -s /bin/zsh
Password: (a7userのパスワード)
$ grep -n a7user /etc/passwd
21:a7user:x:1000:1000::/home/a7user:/bin/zsh
$

zsh用 .profile

a7user@obsa7:~% cat .zprofile                  [17] (13-12-28 Sat 07:26:57 AM)
#
# $Id: .zprofile,v 1.1 2013-12-28 07:24:20+09 a7user $
#
echo 'Setting .zprofile '
set -o allexport
umask 002
PATH=.:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/uty
HOSTNAME=`hostname`
ENV=$HOME/.zshrc
HISTSIZE=64
HISTFILE=/tmp/.sh_${LOGNAME}.$$
LD_LIBRARY_PATH=/usr/local/lib
JAVA_HOME='/usr/lib/jre'
MYOSREV=`/bin/uname -a | cut -c-3`
XMODIFIERS="@im=kinput2"
PAGER=jless
CURTTY=`/usr/bin/tty`
if [[ "$CURTTY" = "/dev/tty1" || "$CURTTY" = "/dev/tty2" || \
      "$CURTTY" = "/dev/tty3" || "$CURTTY" = "/dev/vc/1" || \
      "$CURTTY" = "/dev/vc/2" || "$CURTTY" = "/dev/vc/3" ]]; then
  LANG=C
else
    LANG=ja_JP.UTF-8
    LC_ALL=C
    LANGUAGE=C
fi
TZ=JST-9
RSYNC_RSH=ssh
set +o allexport
unset ignoreeof
# end of .zprofile
a7user@obsa7:~%                                [18] (13-12-28 Sat 07:27:03 AM)

zsh用 .zshrc

a7user@obsa7:~% cat .zshrc                     [18] (13-12-28 Sat 07:30:11 AM)
#
# $Id: .zshrc,v 1.1 2013-12-28 07:24:20+09 a7user $
#
#echo 'Setting .zshrc'
alias a=alias
alias h=history
alias cls='ls --color'
alias PRO='. ~a7user/.zprofile'
alias cdd='cd `/bin/pwd`'
alias root="ZDOTDIR=$HOME su root -s /bin/zsh"
alias m3='mount /dev/sda3 /dsk/sda3'
alias sss='tail -f /var/log/syslog'
alias t='set -x;tail -30 /var/log/apache2/access.log|cut -c-72;set +x'
alias tt='set -x;tail -6 /var/log/apache2/access.log;set +x'
alias m='set -x;tail -30 /var/log/exim4/mainlog;set +x'
alias r='set -x;tail -30 /var/log/exim4/rejectlog;set +x'
#

# Set up the prompt

PROMPT='%U%(#.%Broot%b.%n)@%m%u:%.%# '
RPROMPT='%B[%(?.%!.ERROR:%?)] (%U%D%u %D{%a %H:%M:%S %p})%b'

# Use emacs keybindings even if our EDITOR is set to vi
bindkey -v

# Keep 1000 lines of history within the shell and save it to ~/.zsh_history:
HISTSIZE=1000
SAVEHIST=1000
HISTFILE=~/.zsh_history

# Use modern completion system
autoload -Uz compinit
compinit

zstyle ':completion:*' auto-description 'specify: %d'
zstyle ':completion:*' completer _expand _complete _correct _approximate
zstyle ':completion:*' format 'Completing %d'
zstyle ':completion:*' group-name ''
zstyle ':completion:*' menu select=2
eval "$(dircolors -b)"
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
zstyle ':completion:*' list-colors ''
zstyle ':completion:*' list-prompt %SAt %p: Hit TAB for more, or the character to insert%s
zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=* l:|=*'
zstyle ':completion:*' menu select=long
zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s
zstyle ':completion:*' use-compctl false
zstyle ':completion:*' verbose true

zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31'
zstyle ':completion:*:kill:*' command 'ps -u $USER -o pid,%cpu,tty,cputime,cmd'

# end of .zshrc
a7user@obsa7:~%                                [19] (13-12-28 Sat 07:30:18 AM)

3.Open SSH

SSH プロトコル2 DSA鍵のpassphraseは無しで生成した。
# 本当は横着せずpassphraseはセットしたほうが無難。
a7user@obsa7:~% ssh-keygen -t dsa              [23] (13-12-28 Sat 09:16:56 AM)
Generating public/private dsa key pair.
Enter file in which to save the key (/home/a7user/.ssh/id_dsa):
Created directory '/home/a7user/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/a7user/.ssh/id_dsa.
Your public key has been saved in /home/a7user/.ssh/id_dsa.pub.
The key fingerprint is: (省略)
このままだと、ssh はパスワード認証でログインできてしまう。 昔22番ポートを外向けに開けておいたとき、パスワード攻撃を受けたことがある。 Logwatchに何度もログインしようとした形跡が残っており、PasswordAuthentication noが無難。
# パスワードでログインする様子
a7user@obs:.ssh% ssh a7user@obsa7               [7] (13-12-28 Sat 09:21:19 AM)
a7user@obsa7's password:
Linux obsa7 3.2.40 #1 Mon Oct 21 14:10:25 JST 2013 armv5tel
そこで/etc/ssh/sshd_configを変更する
a7user@obsa7:~% diff /etc/ssh/sshd_config.org /etc/ssh/sshd_config
51c51
< #PasswordAuthentication yes
---
> PasswordAuthentication no

# 変更を反映する
root@obsa7:~# ps ax|grep /usr/sbin/sshd|grep -v grep
30782 ?        Ss     0:00 /usr/sbin/sshd
root@obsa7:~# kill -1 30782                     [16] (13-12-28 Sat 09:35:06 AM)
root@obsa7:~# tail -3 /var/log/auth.log         [17] (13-12-28 Sat 09:35:14 AM)
Dec 28 09:35:14 obsa7 sshd[30782]: Received SIGHUP; restarting.
Dec 28 09:35:14 obsa7 sshd[30796]: Server listening on 0.0.0.0 port 22.
Dec 28 09:35:14 obsa7 sshd[30796]: Server listening on :: port 22.
root@obsa7:~#                                   [18] (13-12-28 Sat 09:35:32 AM)
# パスワード認証でログインはできない
imacuser@imac2:~% ssh a7user@obsa7                 [4] (13-12-28 土 09:45:44 AM)
Permission denied (publickey).

# PasswordAuthentication変更前にid_dsa.pubを流し込む
user@REMOTE:.ssh% cat id_dsa.pub|ssh a7user@obsa7 "cat >> .ssh/authorized_keys2"

# これでpassphrase入力もしくは無しでログインが可能
myuser@imac2:.ssh% ssh a7user@obsa7             [20] (13-12-28 土 10:21:42 AM)
Linux obsa7 3.2.40 #1 Mon Oct 21 14:10:25 JST 2013 armv5tel

4.タイムゾーンとロケールの設定

root@obsa7:DPKG# dpkg-reconfigure tzdata
Current default time zone: 'Asia/Tokyo'
Local time is now:      Sat Dec 28 10:11:36 JST 2013.
Universal Time is now:  Sat Dec 28 01:11:36 UTC 2013.

root@obsa7:DPKG# aptitude install locales
root@obsa7:DPKG# diff /etc/locale.gen.org /etc/locale.gen
269,270c269,270
< # ja_JP.EUC-JP EUC-JP
< # ja_JP.UTF-8 UTF-8
---
> ja_JP.EUC-JP EUC-JP
> ja_JP.UTF-8 UTF-8
root@obsa7:DPKG# locale-gen
Generating locales (this might take a while)...
  ja_JP.EUC-JP... done
  ja_JP.UTF-8... done
Generation complete.
root@obsa7:DPKG#

2013年12月24日火曜日

obsA7-004 package移行

1.Debian PackageをOBS600と揃える

旧OBS600で使用していたDebian PackageをOBSA7でも使えるように移行する。 まず OBS600側でget-selectionsする。
user@obs:DPKG% dpkg --get-selections > plist_obs600.txt
user@obs:DPKG% wc -l plist_obs600.txt
497 plist_obs600.txt
user@obs:DPKG% 
次に OBSA7側でset-selectionsする。
root@obsa7:DPKG# dpkg -l | wc -l
154
root@obsa7:DPKG# aptitude install dselect
root@obsa7:DPKG# dselect update
root@obsa7:DPKG# dpkg --set-selections < plist_obs600.txt >>>(1)
root@obsa7:DPKG# apt-get dselect-upgrade >>>(2)
root@obsa7:DPKG# dpkg -l | wc -l
458
これらで、多くのパッケージは移行できたが、OBS600のpowerpc依存部分や、バージョンによっては移行できないものもあったようだ。(1)(2)で大量のメッセージが出た。
 >>>(1)
root@obsa7:DPKG# dpkg --set-selections < plist_obs600.txt
dpkg: warning: package not in database at line 2: apache2
dpkg: warning: package not in database at line 2: apache2-mpm-prefork
dpkg: warning: package not in database at line 2: apache2-utils
dpkg: warning: package not in database at line 2: apache2.2-bin
dpkg: warning: package not in database at line 2: apache2.2-common
dpkg: warning: package not in database at line 6: arping
dpkg: warning: package not in database at line 9: bc
dpkg: warning: package not in database at line 9: bind9
dpkg: warning: package not in database at line 9: bind9-host
dpkg: warning: package not in database at line 9: bind9utils
dpkg: warning: package not in database at line 9: binutils
dpkg: warning: package not in database at line 9: bittorrent
dpkg: warning: package not in database at line 9: bridge-utils
dpkg: warning: package not in database at line 9: bsd-mailx
dpkg: warning: package not in database at line 12: ca-certificates
dpkg: warning: package not in database at line 14: cpp
dpkg: warning: package not in database at line 14: cpp-4.4
dpkg: warning: package not in database at line 14: cpp-4.6
dpkg: warning: package not in database at line 15: curl
dpkg: warning: package not in database at line 16: dbus
dpkg: warning: package not in database at line 20: defoma
dpkg: warning: package not in database at line 20: dhcp3-client
dpkg: warning: package not in database at line 20: dhcp3-common
dpkg: warning: package not in database at line 20: dhcp3-server
dpkg: warning: package not in database at line 22: dnsutils
dpkg: warning: package not in database at line 25: e2fslibs:powerpc
dpkg: warning: package not in database at line 26: exim4
dpkg: warning: package not in database at line 26: exim4-base
dpkg: warning: package not in database at line 26: exim4-config
dpkg: warning: package not in database at line 26: exim4-daemon-light
dpkg: warning: package not in database at line 26: exiv2
dpkg: warning: package not in database at line 26: fancontrol
dpkg: warning: package not in database at line 26: file
dpkg: warning: package not in database at line 27: firmware-ralink
dpkg: warning: package not in database at line 27: fontconfig
dpkg: warning: package not in database at line 27: fontconfig-config
dpkg: warning: package not in database at line 27: fonts-droid
dpkg: warning: package not in database at line 27: fonts-liberation
dpkg: warning: package not in database at line 27: ftp
dpkg: warning: package not in database at line 27: ftpd
dpkg: warning: package not in database at line 27: gcc
dpkg: warning: package not in database at line 27: gcc-4.4
dpkg: warning: package not in database at line 27: gcc-4.4-base:powerpc
dpkg: warning: package not in database at line 27: gcc-4.6
dpkg: warning: package not in database at line 27: gcc-4.6-base:powerpc
dpkg: warning: package not in database at line 27: gcc-4.7-base:powerpc
dpkg: warning: package not in database at line 27: geoip-database
dpkg: warning: package not in database at line 27: ghostscript
dpkg: warning: package not in database at line 27: git
dpkg: warning: package not in database at line 27: git-man
dpkg: warning: package not in database at line 29: gnuplot
dpkg: warning: package not in database at line 29: gnuplot-nox
dpkg: warning: package not in database at line 31: groff
dpkg: warning: package not in database at line 32: gsfonts
dpkg: warning: package not in database at line 33: hdparm
dpkg: warning: package not in database at line 33: hicolor-icon-theme
dpkg: warning: package not in database at line 33: hostapd
dpkg: warning: package not in database at line 35: imagemagick
dpkg: warning: package not in database at line 35: imagemagick-common
dpkg: warning: package not in database at line 44: isc-dhcp-server
dpkg: warning: package not in database at line 44: jless
dpkg: warning: package not in database at line 45: krb5-locales
dpkg: warning: package not in database at line 45: less
dpkg: warning: package not in database at line 45: lftp
dpkg: warning: package not in database at line 45: libacl1:powerpc
dpkg: warning: package not in database at line 45: libapache2-mod-php5
dpkg: warning: package not in database at line 45: libapr1
dpkg: warning: package not in database at line 45: libaprutil1
dpkg: warning: package not in database at line 45: libaprutil1-dbd-sqlite3
dpkg: warning: package not in database at line 45: libaprutil1-ldap
dpkg: warning: package not in database at line 45: libapt-inst1.5:powerpc
dpkg: warning: package not in database at line 45: libapt-pkg4.12:powerpc
dpkg: warning: package not in database at line 45: libatk1.0-0:powerpc
dpkg: warning: package not in database at line 45: libatk1.0-data
dpkg: warning: package not in database at line 45: libattr1:powerpc
dpkg: warning: package not in database at line 45: libavahi-client3:powerpc
dpkg: warning: package not in database at line 45: libavahi-common-data:powerpc
dpkg: warning: package not in database at line 45: libavahi-common3:powerpc
dpkg: warning: package not in database at line 45: libbind9-60
dpkg: warning: package not in database at line 45: libbind9-80
dpkg: warning: package not in database at line 45: libblas3
dpkg: warning: package not in database at line 45: libblas3gf
dpkg: warning: package not in database at line 45: libblkid1:powerpc
dpkg: warning: package not in database at line 45: libboost-iostreams1.42.0
dpkg: warning: package not in database at line 46: libbsd0:powerpc
dpkg: warning: package not in database at line 46: libbz2-1.0:powerpc
dpkg: warning: package not in database at line 47: libc-dev-bin
dpkg: warning: package not in database at line 47: libc6:powerpc
dpkg: warning: package not in database at line 47: libc6-dev:powerpc
dpkg: warning: package not in database at line 47: libc6-ppc64
dpkg: warning: package not in database at line 47: libcairo2:powerpc
dpkg: warning: package not in database at line 47: libcap2:powerpc
dpkg: warning: package not in database at line 47: libcdt4
dpkg: warning: package not in database at line 47: libclass-isa-perl
dpkg: warning: package not in database at line 47: libcomerr2:powerpc
dpkg: warning: package not in database at line 47: libcroco3:powerpc
dpkg: warning: package not in database at line 47: libcups2:powerpc
dpkg: warning: package not in database at line 47: libcupsimage2:powerpc
dpkg: warning: package not in database at line 47: libcurl3
dpkg: warning: package not in database at line 47: libcurl3-gnutls:powerpc
dpkg: warning: package not in database at line 48: libdate-manip-perl
dpkg: warning: package not in database at line 48: libdatrie1:powerpc
dpkg: warning: package not in database at line 48: libdb4.7
dpkg: warning: package not in database at line 48: libdb4.8
dpkg: warning: package not in database at line 48: libdb5.1:powerpc
dpkg: warning: package not in database at line 48: libdbi0
dpkg: warning: package not in database at line 48: libdbi1
dpkg: warning: package not in database at line 48: libdbus-1-3:powerpc
dpkg: warning: package not in database at line 48: libdevmapper1.02.1:powerpc
dpkg: warning: package not in database at line 48: libdjvulibre-text
dpkg: warning: package not in database at line 48: libdjvulibre21
dpkg: warning: package not in database at line 48: libdns69
dpkg: warning: package not in database at line 48: libdns88
dpkg: warning: package not in database at line 48: libedit2:powerpc
dpkg: warning: package not in database at line 48: libept1
dpkg: warning: package not in database at line 49: liberror-perl
dpkg: warning: package not in database at line 49: libevent-1.4-2
dpkg: warning: package not in database at line 49: libevent-2.0-5:powerpc
dpkg: warning: package not in database at line 49: libexiv2-12
dpkg: warning: package not in database at line 49: libexiv2-9
dpkg: warning: package not in database at line 49: libexpat1:powerpc
dpkg: warning: package not in database at line 49: libffi5:powerpc
dpkg: warning: package not in database at line 49: libfile-copy-recursive-perl
dpkg: warning: package not in database at line 49: libfont-freetype-perl
dpkg: warning: package not in database at line 49: libfontconfig1:powerpc
dpkg: warning: package not in database at line 49: libfontenc1:powerpc
dpkg: warning: package not in database at line 49: libfreetype6:powerpc
dpkg: warning: package not in database at line 49: libgc1c2
dpkg: warning: package not in database at line 49: libgcc1:powerpc
dpkg: warning: package not in database at line 49: libgcrypt11:powerpc
dpkg: warning: package not in database at line 49: libgd2-noxpm:powerpc
dpkg: warning: package not in database at line 49: libgdbm3:powerpc
dpkg: warning: package not in database at line 49: libgdk-pixbuf2.0-0:powerpc
dpkg: warning: package not in database at line 49: libgdk-pixbuf2.0-common
dpkg: warning: package not in database at line 49: libgeoip1
dpkg: warning: package not in database at line 49: libgfortran3:powerpc
dpkg: warning: package not in database at line 49: libglib2.0-0:powerpc
dpkg: warning: package not in database at line 49: libglib2.0-data
dpkg: warning: package not in database at line 49: libgmp10:powerpc
dpkg: warning: package not in database at line 49: libgmp3c2
dpkg: warning: package not in database at line 49: libgnutls26:powerpc
dpkg: warning: package not in database at line 49: libgomp1:powerpc
dpkg: warning: package not in database at line 49: libgpg-error0:powerpc
dpkg: warning: package not in database at line 49: libgpm2:powerpc
dpkg: warning: package not in database at line 49: libgraph4
dpkg: warning: package not in database at line 49: libgs8
dpkg: warning: package not in database at line 49: libgs9
dpkg: warning: package not in database at line 49: libgs9-common
dpkg: warning: package not in database at line 49: libgsf-1-114
dpkg: warning: package not in database at line 49: libgsf-1-common
dpkg: warning: package not in database at line 49: libgssapi-krb5-2:powerpc
dpkg: warning: package not in database at line 49: libgssglue1:powerpc
dpkg: warning: package not in database at line 49: libgtk2.0-0:powerpc
dpkg: warning: package not in database at line 49: libgtk2.0-bin
dpkg: warning: package not in database at line 49: libgtk2.0-common
dpkg: warning: package not in database at line 49: libgvc5
dpkg: warning: package not in database at line 49: libice6:powerpc
dpkg: warning: package not in database at line 49: libidn11:powerpc
dpkg: warning: package not in database at line 49: libijs-0.35
dpkg: warning: package not in database at line 49: libilmbase6
dpkg: warning: package not in database at line 49: libisc62
dpkg: warning: package not in database at line 49: libisc84
dpkg: warning: package not in database at line 49: libisccc60
dpkg: warning: package not in database at line 49: libisccc80
dpkg: warning: package not in database at line 49: libisccfg62
dpkg: warning: package not in database at line 49: libisccfg82
dpkg: warning: package not in database at line 49: libiw30:powerpc
dpkg: warning: package not in database at line 49: libjasper1:powerpc
dpkg: warning: package not in database at line 49: libjbig0:powerpc
dpkg: warning: package not in database at line 49: libjbig2dec0
dpkg: warning: package not in database at line 49: libjpeg62:powerpc
dpkg: warning: package not in database at line 49: libjpeg8:powerpc
dpkg: warning: package not in database at line 49: libk5crypto3:powerpc
dpkg: warning: package not in database at line 49: libkeyutils1:powerpc
dpkg: warning: package not in database at line 49: libkmod2:powerpc
dpkg: warning: package not in database at line 49: libkrb5-3:powerpc
dpkg: warning: package not in database at line 49: libkrb5support0:powerpc
dpkg: warning: package not in database at line 49: liblcms1:powerpc
dpkg: warning: package not in database at line 49: liblcms2-2:powerpc
dpkg: warning: package not in database at line 49: libldap-2.4-2:powerpc
dpkg: warning: package not in database at line 49: liblensfun-data
dpkg: warning: package not in database at line 49: liblensfun0
dpkg: warning: package not in database at line 49: liblinear-tools
dpkg: warning: package not in database at line 49: liblinear1
dpkg: warning: package not in database at line 50: liblockfile-bin
dpkg: warning: package not in database at line 50: liblockfile1:powerpc
dpkg: warning: package not in database at line 50: liblqr-1-0:powerpc
dpkg: warning: package not in database at line 50: libltdl7:powerpc
dpkg: warning: package not in database at line 50: liblua5.1-0:powerpc
dpkg: warning: package not in database at line 50: liblwres60
dpkg: warning: package not in database at line 50: liblwres80
dpkg: warning: package not in database at line 50: liblzma2
dpkg: warning: package not in database at line 50: liblzma5:powerpc
dpkg: warning: package not in database at line 50: liblzo2-2:powerpc
dpkg: warning: package not in database at line 50: libmagic1:powerpc
dpkg: warning: package not in database at line 50: libmagickcore3
dpkg: warning: package not in database at line 50: libmagickcore3-extra
dpkg: warning: package not in database at line 50: libmagickcore5:powerpc
dpkg: warning: package not in database at line 50: libmagickcore5-extra:powerpc
dpkg: warning: package not in database at line 50: libmagickwand3
dpkg: warning: package not in database at line 50: libmagickwand5:powerpc
dpkg: warning: package not in database at line 51: libmpc2:powerpc
dpkg: warning: package not in database at line 51: libmpfr4:powerpc
dpkg: warning: package not in database at line 51: libncurses5:powerpc
dpkg: warning: package not in database at line 51: libncurses5-dev
dpkg: warning: package not in database at line 51: libncursesw5:powerpc
dpkg: warning: package not in database at line 51: libnet1
dpkg: warning: package not in database at line 51: libnetpbm10
dpkg: warning: package not in database at line 53: libnfsidmap2:powerpc
dpkg: warning: package not in database at line 53: libnl-3-200:powerpc
dpkg: warning: package not in database at line 53: libnl-dev
dpkg: warning: package not in database at line 53: libnl-genl-3-200:powerpc
dpkg: warning: package not in database at line 53: libnl1:powerpc
dpkg: warning: package not in database at line 53: libonig2
dpkg: warning: package not in database at line 53: libopenexr6
dpkg: warning: package not in database at line 53: libopts25
dpkg: warning: package not in database at line 53: libp11-kit0:powerpc
dpkg: warning: package not in database at line 53: libpam-modules:powerpc
dpkg: warning: package not in database at line 55: libpam0g:powerpc
dpkg: warning: package not in database at line 55: libpango1.0-0:powerpc
dpkg: warning: package not in database at line 55: libpango1.0-common
dpkg: warning: package not in database at line 55: libpaper-utils
dpkg: warning: package not in database at line 55: libpaper1:powerpc
dpkg: warning: package not in database at line 55: libparted0debian1:powerpc
dpkg: warning: package not in database at line 55: libpathplan4
dpkg: warning: package not in database at line 55: libpcap0.8:powerpc
dpkg: warning: package not in database at line 55: libpcre3:powerpc
dpkg: warning: package not in database at line 55: libperl5.14
dpkg: warning: package not in database at line 55: libpipeline1:powerpc
dpkg: warning: package not in database at line 55: libpixman-1-0:powerpc
dpkg: warning: package not in database at line 55: libpng12-0:powerpc
dpkg: warning: package not in database at line 55: libpopt0:powerpc
dpkg: warning: package not in database at line 55: libprocps0:powerpc
dpkg: warning: package not in database at line 55: libqdbm14
dpkg: warning: package not in database at line 55: libreadline6:powerpc
dpkg: warning: package not in database at line 55: librpcsecgss3:powerpc
dpkg: warning: package not in database at line 55: librrd4
dpkg: warning: package not in database at line 55: librrds-perl
dpkg: warning: package not in database at line 55: librsvg2-2:powerpc
dpkg: warning: package not in database at line 55: librsvg2-common:powerpc
dpkg: warning: package not in database at line 55: librtas1
dpkg: warning: package not in database at line 55: librtasevent1
dpkg: warning: package not in database at line 55: librtmp0:powerpc
dpkg: warning: package not in database at line 55: libsasl2-2:powerpc
dpkg: warning: package not in database at line 55: libsasl2-modules:powerpc
dpkg: warning: package not in database at line 55: libselinux1:powerpc
dpkg: warning: package not in database at line 56: libsemanage1:powerpc
dpkg: warning: package not in database at line 56: libsensors4:powerpc
dpkg: warning: package not in database at line 56: libsepol1:powerpc
dpkg: warning: package not in database at line 56: libsigc++-2.0-0c2a:powerpc
dpkg: warning: package not in database at line 56: libslang2:powerpc
dpkg: warning: package not in database at line 56: libsm6:powerpc
dpkg: warning: package not in database at line 56: libsnmp-base
dpkg: warning: package not in database at line 56: libsnmp15
dpkg: warning: package not in database at line 56: libsqlite3-0:powerpc
dpkg: warning: package not in database at line 56: libss2:powerpc
dpkg: warning: package not in database at line 56: libssh2-1:powerpc
dpkg: warning: package not in database at line 56: libssl-dev
dpkg: warning: package not in database at line 56: libssl-doc
dpkg: warning: package not in database at line 56: libssl0.9.8
dpkg: warning: package not in database at line 56: libssl1.0.0:powerpc
dpkg: warning: package not in database at line 56: libstdc++6:powerpc
dpkg: warning: package not in database at line 56: libsvm-tools
dpkg: warning: package not in database at line 56: libswitch-perl
dpkg: warning: package not in database at line 56: libsystemd-login0:powerpc
dpkg: warning: package not in database at line 56: libtalloc2:powerpc
dpkg: warning: package not in database at line 56: libtasn1-3:powerpc
dpkg: warning: package not in database at line 56: libtdb1:powerpc
dpkg: warning: package not in database at line 59: libthai-data
dpkg: warning: package not in database at line 59: libthai0:powerpc
dpkg: warning: package not in database at line 59: libtiff4:powerpc
dpkg: warning: package not in database at line 59: libtinfo-dev:powerpc
dpkg: warning: package not in database at line 59: libtinfo5:powerpc
dpkg: warning: package not in database at line 59: libtirpc1:powerpc
dpkg: warning: package not in database at line 60: libusb-0.1-4:powerpc
dpkg: warning: package not in database at line 60: libusb-1.0-0:powerpc
dpkg: warning: package not in database at line 60: libustr-1.0-1:powerpc
dpkg: warning: package not in database at line 60: libuuid1:powerpc
dpkg: warning: package not in database at line 60: libwbclient0:powerpc
dpkg: warning: package not in database at line 60: libwmf0.2-7:powerpc
dpkg: warning: package not in database at line 60: libwrap0:powerpc
dpkg: warning: package not in database at line 60: libx11-6:powerpc
dpkg: warning: package not in database at line 60: libx11-data
dpkg: warning: package not in database at line 61: libxau6:powerpc
dpkg: warning: package not in database at line 61: libxaw7:powerpc
dpkg: warning: package not in database at line 61: libxcb-render-util0:powerpc
dpkg: warning: package not in database at line 61: libxcb-render0:powerpc
dpkg: warning: package not in database at line 61: libxcb-shm0:powerpc
dpkg: warning: package not in database at line 61: libxcb1:powerpc
dpkg: warning: package not in database at line 61: libxcomposite1:powerpc
dpkg: warning: package not in database at line 61: libxcursor1:powerpc
dpkg: warning: package not in database at line 61: libxdamage1:powerpc
dpkg: warning: package not in database at line 61: libxdmcp6:powerpc
dpkg: warning: package not in database at line 61: libxdot4
dpkg: warning: package not in database at line 61: libxext6:powerpc
dpkg: warning: package not in database at line 61: libxfixes3:powerpc
dpkg: warning: package not in database at line 61: libxfont1
dpkg: warning: package not in database at line 187: libxpm4:powerpc
dpkg: warning: package not in database at line 187: libxrandr2:powerpc
dpkg: warning: package not in database at line 187: libxrender1:powerpc
dpkg: warning: package not in database at line 187: libxt6:powerpc
dpkg: warning: package not in database at line 188: linux-libc-dev:powerpc
dpkg: warning: package not in database at line 197: mac-fdisk
dpkg: warning: package not in database at line 238: portmap
dpkg: warning: package not in database at line 238: powerpc-ibm-utils
dpkg: warning: package not in database at line 238: powerpc-utils
dpkg: warning: package not in database at line 249: qpopper
dpkg: warning: package not in database at line 298: x-ttcidfont-conf
dpkg: warning: package not in database at line 304: yaboot
dpkg: warning: package not in database at line 304: zd1211-firmware
dpkg: warning: package not in database at line 305: zlib1g:powerpc
dpkg: warning: package not in database at line 305: zlib1g-dev:powerpc
root@obsa7:DPKG#

 >>>(2)
root@obsa7:DPKG# apt-get dselect-upgrade
Reading package lists... 0%
Reading state information... 98%
Reading state information... Done
The following NEW packages will be installed:
  apache2 apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common
  arping bc bind9 bind9-host bind9utils binutils bittorrent bridge-utils
  bsd-mailx ca-certificates cpp cpp-4.4 cpp-4.6 dbus dnsutils exim4 exim4-base
  exim4-config exim4-daemon-light exiv2 fancontrol file fontconfig
  fontconfig-config fonts-droid fonts-liberation ftp ftpd gcc gcc-4.4
  gcc-4.4-base gcc-4.6 gcc-4.6-base geoip-database ghostscript git-man gnuplot
  gnuplot-nox groff gsfonts hdparm hicolor-icon-theme hostapd imagemagick
  imagemagick-common isc-dhcp-server jless krb5-locales less lftp
  libapache2-mod-php5 libapr1 libaprutil1 libaprutil1-dbd-sqlite3
  libaprutil1-ldap libatk1.0-0 libatk1.0-data libavahi-client3
  libavahi-common-data libavahi-common3 libbind9-80 libblas3 libblas3gf
  libc-dev-bin libc6-dev libcairo2 libcap2 libcdt4 libclass-isa-perl libcroco3
  libcups2 libcupsimage2 libdate-manip-perl libdatrie1 libdbi1 libdbus-1-3
  libdjvulibre-text libdjvulibre21 libdns88 liberror-perl libexiv2-12
  libexpat1 libffi5 libfile-copy-recursive-perl libfont-freetype-perl
  libfontconfig1 libfontenc1 libfreetype6 libgc1c2 libgd2-noxpm
  libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-common libgeoip1 libgfortran3
  libglib2.0-0 libglib2.0-data libgmp10 libgomp1 libgpm2 libgraph4 libgs9
  libgs9-common libgsf-1-114 libgsf-1-common libgssglue1 libgtk2.0-0
  libgtk2.0-bin libgtk2.0-common libgvc5 libice6 libijs-0.35 libilmbase6
  libisc84 libisccc80 libisccfg82 libiw30 libjasper1 libjbig0 libjbig2dec0
  libjpeg8 liblcms1 liblcms2-2 libldap-2.4-2 liblensfun-data liblensfun0
  liblinear-tools liblinear1 liblockfile-bin liblockfile1 liblqr-1-0 libltdl7
  liblua5.1-0 liblwres80 liblzo2-2 libmagic1 libmagickcore5
  libmagickcore5-extra libmagickwand5 libmpc2 libmpfr4 libncurses5-dev libnet1
  libnetpbm10 libnl-3-200 libnl-dev libnl-genl-3-200 libnl1 libonig2
  libopenexr6 libopts25 libpango1.0-0 libpaper-utils libpaper1 libpathplan4
  libpcap0.8 libpcre3 libperl5.14 libpixman-1-0 libpng12-0 libqdbm14 librrd4
  librrds-perl librsvg2-2 librsvg2-common librtas1 librtasevent1 libsasl2-2
  libsasl2-modules libsensors4 libsm6 libsnmp-base libsnmp15 libssl-dev
  libssl-doc libsvm-tools libswitch-perl libsystemd-login0 libtalloc2 libtdb1
  libthai-data libthai0 libtiff4 libtinfo-dev libtirpc1 libusb-1.0-0
  libwbclient0 libwmf0.2-7 libx11-6 libx11-data libxau6 libxaw7 libxcb-render0
  libxcb-shm0 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxdmcp6
  libxdot4 libxext6 libxfixes3 libxfont1 libxft2 libxi6 libxinerama1 libxml2
  libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 libxt6 libyaml-syck-perl
  linux-libc-dev lm-sensors lockfile-progs logwatch lsof lynx lynx-cur make
  manpages-dev mime-support mlocate module-init-tools mtd-utils nano ncftp
  ncurses-term netpbm netselect netselect-apt nkf nmap ntp ntpdate
  openbsd-inetd openssh-blacklist openssh-blacklist-extra openssl patch perl
  perl-modules php5-cli php5-common poppler-data powermgmt-base procmail
  psmisc psutils python python-minimal python-support python2.6
  python2.6-minimal python2.7 python2.7-minimal rpcbind rrdtool rsync samba
  samba-common samba-common-bin screen sgml-base shared-mime-info snmpd
  ssl-cert sudo tcpd tdb-tools telnet tftp tftpd ttf-dejavu ttf-dejavu-core
  ttf-dejavu-extra u-boot ucf ucspi-tcp ufraw-batch unzip update-inetd
  usbutils w3m whois wireless-tools x11-common xauth xfonts-encodings
  xfonts-utils xml-core zip zlib1g-dev zsh
0 upgraded, 300 newly installed, 0 to remove and 0 not upgraded.
Need to get 155 MB of archives.
After this operation, 455 MB of additional disk space will be used.
Do you want to continue [Y/n]? 
たぶんPackageインストールもれが多くありそうだが、必要に応じ、不足分は都度aptitude installしていくことにする。

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)を読み出すようだ。