■ 5/1
MZK-WDPR Rugby を購入したので、分解してみた。写真があるので、別ページに。
なんか、別ページ起こすの1年ぶりかも。
■ 5/2
昨日の MZK-WDPR をざっくり使ってみた。やっぱり写真があるので、別ページに。
ファームをダウンロードしたいけど、手元に NIC が2つある PC がないので、
しばらく無理かもしれない。
■ 5/3
MZK-WDPR をポートスキャンしてみた。内側 LAN でのポートスキャンの結果。
PORT STATE SERVICE
80/tcp open http
外側 LAN でのポートスキャンの結果。
PORT STATE SERVICE
23/tcp filtered telnet
80/tcp filtered http
外側は ping の応答もしないので(起動直後に応答することがあるが)、実験
するときに接続されているのか確認方法が無いので面倒。内側を OS detection
してみた。
# nmap -O --datadir /usr/pkg/share/nmap 192.168.111.1
Starting Nmap 4.76 ( http://nmap.org ) at 2010-05-03 11:24 JST
Interesting ports on 192.168.111.1:
Not shown: 997 closed ports
PORT STATE SERVICE
80/tcp open http
49152/tcp open unknown
49153/tcp open unknown
MAC Address: 00:22:CF:xx:xx:xx (Planex Communications)
Device type: general purpose
Running: Linux 2.6.X
OS details: Linux 2.6.13 - 2.6.28
Network Distance: 1 hop
予想通り Linux 2.6 だって。UPnP 用の 49152/49153 番も空いているみたい。
80 番と合わせて、突っついてみた。
[root@mustafar]% curl -v 192.168.111.1
* About to connect() to 192.168.111.1 port 80 (#0)
* Trying 192.168.111.1... connected
* Connected to 192.168.111.1 (192.168.111.1) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.20.0 (i386--netbsdelf) libcurl/7.20.0 OpenSSL/0.9.9
> Host: 192.168.111.1
> Accept: */*
>
< HTTP/1.1 401 Unauthorized
< Server: GoAhead-Webs
< Date: Sat Jan 1 21:19:26 2000
< WWW-Authenticate: Basic realm="3G 11n Broadband Router"
< Pragma: no-cache
< Cache-Control: no-cache
< Content-Type: text/html
* no chunk, no close, no size. Assume close to signal end
<
<html><head><title>Document Error: Unauthorized<title></head>
<body><h2>Access Error: Unauthorized</h2>
<p>Access to this document requires a User ID</p></body></html>
* Closing connection #0
[root@mustafar]% curl -v 192.168.111.1:49152
* About to connect() to 192.168.111.1 port 49152 (#0)
* Trying 192.168.111.1... connected
* Connected to 192.168.111.1 (192.168.111.1) port 49152 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.20.0 (i386--netbsdelf) libcurl/7.20.0 OpenSSL/0.9.9
> Host: 192.168.111.1:49152
> Accept: */*
>
< HTTP/1.1 404 Not Found
< SERVER: Linux/2.6.21, UPnP/1.0, Portable SDK for UPnP devices/1.3.1
< CONNECTION: close
< CONTENT-LENGTH: 48
< CONTENT-TYPE: text/html
<
<html><body><h1>404 Not Found</h1></body></html>
* Closing connection #0
Linux/2.6.21 って出ちゃった。いじり甲斐が湧いてくる。
■ 5/4
MZK-WDPR の中にあっさりログインできてしまった。一応、順を追って。管理の
ページを眺めていたら、コメントになっていたけど、/adm/system_command.asp
というページを発見。ここでコマンドが発行できることがわかった。いくつか
コマンドを実行してみる。
# uname
Linux PCI.com 2.6.21 #12 Mon Dec 28 01:46:25 CST 2009 mips unknown
# mount
rootfs on / type rootfs (rw)
/dev/root on / type squashfs (ro)
proc on /proc type proc (rw)
none on /var type ramfs (rw)
none on /etc type ramfs (rw)
none on /tmp type ramfs (rw)
none on /media type ramfs (rw)
/proc/bus/usb on /proc/bus/usb type usbfs (rw)
devpts on /dev/pts type devpts (rw)
sysfs on /sys type sysfs (rw)
mdev on /dev type ramfs (rw)
devpts on /dev/pts type devpts (rw)
# df
Filesystem 1k-blocks Used Available Use% Mounted on
rootfs 2560 2560 0 100% /
/dev/root 2560 2560 0 100% /
/usr/sbin に telnetd があったので、実行してみた。どうやら、動いた予感。
さっそく telnet で接続したら、あっさりと繋がった。中のコマンドはほとんど
busybox 化されていて、その他で特に面白いコマンドは無く。ついでに ps の
結果を。
# ps
PID USER VSZ STAT COMMAND
1 admin 2020 S init
2 admin 0 SWN [ksoftirqd/0]
3 admin 0 SW< [events/0]
4 admin 0 SW< [khelper]
5 admin 0 SW< [kthread]
23 admin 0 SW< [kblockd/0]
26 admin 0 SW< [khubd]
38 admin 0 SW< [kswapd0]
39 admin 0 SW [pdflush]
40 admin 0 SW [pdflush]
41 admin 0 SW< [aio/0]
46 admin 0 DW [swapper]
47 admin 0 SW [swapper]
576 admin 0 SW [mtdblockd]
614 admin 1108 S nvram_daemon
615 admin 1628 S goahead
642 admin 0 SW< [dwc_otg]
674 admin 1028 S < /sbin/udevd --daemon --debug-trace
710 admin 2024 S /bin/sh
734 admin 0 SW [rtmpWscHandle]
1013 admin 2020 S udhcpd /etc/udhcpd.conf
1148 admin 2048 D /bin/sh /sbin/lan-post-wan.sh
1162 admin 1636 S upnpd -f eth2.2 br0
1171 admin 1636 S upnpd -f eth2.2 br0
1172 admin 1636 S upnpd -f eth2.2 br0
1174 admin 1636 S upnpd -f eth2.2 br0
1175 admin 1636 S upnpd -f eth2.2 br0
1182 admin 1636 S upnpd -f eth2.2 br0
1184 admin 1636 S upnpd -f eth2.2 br0
1185 admin 1636 S upnpd -f eth2.2 br0
1187 admin 1636 S upnpd -f eth2.2 br0
1193 admin 1636 S upnpd -f eth2.2 br0
1396 admin 2024 S /usr/sbin/crond -c /var/spool/cron/crontabs -l 5
1420 admin 1624 S wscd -m 1 -a 192.168.111.1 -i ra0
1423 admin 1624 S wscd -m 1 -a 192.168.111.1 -i ra0
1424 admin 1624 S wscd -m 1 -a 192.168.111.1 -i ra0
1425 admin 1624 S wscd -m 1 -a 192.168.111.1 -i ra0
1428 admin 1624 S wscd -m 1 -a 192.168.111.1 -i ra0
1430 admin 1624 S wscd -m 1 -a 192.168.111.1 -i ra0
1431 admin 1624 S wscd -m 1 -a 192.168.111.1 -i ra0
1432 admin 1624 S wscd -m 1 -a 192.168.111.1 -i ra0
1434 admin 1624 S wscd -m 1 -a 192.168.111.1 -i ra0
1435 admin 1624 S wscd -m 1 -a 192.168.111.1 -i ra0
1440 admin 2024 S syslogd -C8
1467 admin 1320 S /bin/dnrd -s 192.168.3.1 -s 158.205.225.34
2262 admin 2020 R /usr/sbin/telnetd
2263 admin 2028 S -sh
2306 admin 2020 R ps
dmesg も起動してみたけど、
RT305x_ESW: Link Status Changed
で埋め尽くされているので、再起動後に実行してみる予定。
■ 5/5
再起動したので、MZK-WDPR の dmesg の内容を。適当に折り返しが入っている。
Linux version 2.6.21 (root@localhost.localdomain) (gcc version 3.4.2) #12 Mon D
ec 28 01:46:25 CST 2009
The CPU feqenuce set to 320 MHz
CPU revision is: 0001964c
Determined physical RAM map:
memory: 01000000 @ 00000000 (usable)
On node 0 totalpages: 4096
DMA zone: 32 pages used for memmap
DMA zone: 0 pages reserved
DMA zone: 4064 pages, LIFO batch:0
Normal zone: 0 pages used for memmap
Built 1 zonelists. Total pages: 4064
Kernel command line: console=ttyS1,57600n8 root=/dev/mtdblock4
Primary instruction cache 32kB, physically tagged, 4-way, linesize 32 bytes.
Primary data cache 16kB, 4-way, linesize 32 bytes.
Synthesized TLB refill handler (20 instructions).
Synthesized TLB load handler fastpath (32 instructions).
Synthesized TLB store handler fastpath (32 instructions).
Synthesized TLB modify handler fastpath (31 instructions).
Cache parity protection disabled
cause = 800008, status = 1100ff00
PID hash table entries: 64 (order: 6, 256 bytes)
calculating r4koff... 00138800(1280000)
CPU frequency 320.00 MHz
Using 160.000 MHz high precision timer.
Dentry cache hash table entries: 2048 (order: 1, 8192 bytes)
Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)
Memory: 13032k/16384k available (2421k kernel code, 3352k reserved, 562k data,
120k init, 0k highmem)
Calibrating delay loop... 212.99 BogoMIPS (lpj=425984)
Mount-cache hash table entries: 512
NET: Registered protocol family 16
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
Time: MIPS clocksource has been installed.
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 512 (order: 0, 4096 bytes)
TCP bind hash table entries: 512 (order: -1, 2048 bytes)
TCP: Hash tables configured (established 512 bind 512)
TCP reno registered
squashfs: version 3.2-r2 (2007/01/15) Phillip Lougher
squashfs: LZMA suppport for slax.org by jro
fuse init (API version 7.8)
io scheduler noop registered (default)
Ralink gpio driver initialized
HDLC line discipline: version $Revision: 1.1.1.1 $, maxframe=4096
N_HDLC line discipline registered.
Serial: 8250/16550 driver $Revision: 1.3 $ 2 ports, IRQ sharing disabled
serial8250: ttyS0 at I/O 0xb0000500 (irq = 37) is a 16550A
serial8250: ttyS1 at I/O 0xb0000c00 (irq = 12) is a 16550A
loop: loaded (max 8 devices)
rdm_major = 254
GDMA1_MAC_ADRH -- : 0x00000000
GDMA1_MAC_ADRL -- : 0x00000000
Ralink APSoC Ethernet Driver Initilization. v1.60 256 rx/tx descriptors alloca
ted, mtu = 1500!
GDMA1_MAC_ADRH -- : 0x00000022
GDMA1_MAC_ADRL -- : 0xcf24xxxx
PROC INIT OK!
PPP generic driver version 2.4.2
PPP Deflate Compression module registered
PPP BSD Compression module registered
PPP MPPE Compression module registered
NET: Registered protocol family 24
ralink flash device: 0x1000000 at 0xbf000000
Ralink SoC physically mapped flash: Found 1 x16 devices at 0x0 in 16-bit bank
Ralink SoC physically mapped flash: Found an alias at 0x400000 for the chip at
0x0
Ralink SoC physically mapped flash: Found an alias at 0x800000 for the chip at
0x0
Ralink SoC physically mapped flash: Found an alias at 0xc00000 for the chip at
0x0
Amd/Fujitsu Extended Query Table at 0x0040
Ralink SoC physically mapped flash: Swapping erase regions for broken CFI table.
number of CFI chips: 1
cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.
Creating 6 MTD partitions on "Ralink SoC physically mapped flash":
0x00000000-0x00030000 : "Bootloader"
0x00030000-0x00040000 : "Config"
0x00040000-0x00050000 : "Factory"
0x00050000-0x00160000 : "Kernel"
0x00160000-0x003f0000 : "RootFS"
0x003f0000-0x00400000 : "Data3G"
block2mtd: version $Revision: 1.1.1.1 $
NET: Registered protocol family 26
Netfilter messages via NETLINK v0.30.
nf_conntrack version 0.5.0 (128 buckets, 1024 max)
IPv4 over IPv4 tunneling driver
ip_tables: (C) 2000-2006 Netfilter Core Team, Type=Linux
arp_tables: (C) 2002 David S. Miller
TCP cubic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
All bugs added by David S. Miller <davem@redhat.com>
VFS: Mounted root (squashfs filesystem) readonly.
Freeing unused kernel memory: 120k freed
Algorithmics/MIPS FPU Emulator v1.5
Set direction only
Disabe IPv6 fast bridge
Not get ack , retry
dwc_otg: version 2.72a 24-JUN-2008
DWC_otg: Core Release: 2.66a
DWC_otg: Periodic Transfer Interrupt Enhancement - disabled
DWC_otg: Multiprocessor Interrupt Enhancement - disabled
DWC_otg: Using DMA mode
DWC_otg: Device using Buffer DMA mode
dwc_otg lm0: DWC OTG Controller
drivers/usb/core/inode.c: creating file 'devices'
drivers/usb/core/inode.c: creating file '001'
dwc_otg lm0: new USB bus registered, assigned bus number 1
dwc_otg lm0: irq 18, io mem 0x00000000
DWC_otg: Init: Port Power? op_state=1
DWC_otg: Init: Power Port (0)
usb usb1: default language 0x0409
usb usb1: new device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: DWC OTG Controller
usb usb1: Manufacturer: Linux 2.6.21 dwc_otg_hcd
usb usb1: SerialNumber: lm0
usb usb1: uevent
usb usb1: usb_probe_device
usb usb1: configuration #1 chosen from 1 choice
usb usb1: adding 1-0:1.0 (config #1, interface 0)
usb 1-0:1.0: uevent
hub 1-0:1.0: usb_probe_interface
hub 1-0:1.0: usb_probe_interface - got id
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
hub 1-0:1.0: standalone hub
hub 1-0:1.0: ganged power switching
hub 1-0:1.0: individual port over-current protection
hub 1-0:1.0: Single TT
hub 1-0:1.0: TT requires at most 8 FS bit times (666 ns)
hub 1-0:1.0: power on to power good time: 2ms
hub 1-0:1.0: local power source is good
hub 1-0:1.0: enabling power on all ports
hub 1-0:1.0: state 7 ports 1 chg 0000 evt 0000
drivers/usb/core/inode.c: creating file '001'
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
Not get ack , retry
phy_tx_ring = 0x00ba0000, tx_ring = 0xa0ba0000, size: 16 bytes
phy_rx_ring = 0x00ba1000, rx_ring = 0xa0ba1000, size: 16 bytes
RT305x_ESW: Link Status Changed
port 1 (LAN) up
GDMA1_FWD_CFG = 710000
Retry give up
Not get ack , retry
rt2860v2_ap: module license 'unspecified' taints kernel.
2860 version : 2.0.0.0 (Nov 25 2009)
=== pAd = c1080000, size = 485360 ===
RTMPAllocAdapterBlock, Status=0
RX DESC a061b000 size = 2048
RTMPAllocTxRxRingMemory, Status=0
1. Phy Mode = 9
2. Phy Mode = 9
3. Phy Mode = 9
MCS Set = ff 00 00 00 00
Not get ack , retry
Retry give up
Not get ack , retry
Main bssid = 00:22:cf:xx:xx:xx
The UUID Hex string is:28802880xxxxxxxxxxxxxxxxxxxxxxxx
The UUID ASCII string is:28802880-xxxx-xxxx-xxxx-xxxxxxxxxxxx!
== RTMPInitialize, Status=0
0x1300 = 00064380
Not get ack , retry
eth2.2: Setting MAC address to 00 22 cf xx xx xx.
device eth2 entered promiscuous mode
VLAN (eth2.2): Setting underlying device (eth2) to promiscious mode.
eth2.1: add 01:00:5e:00:00:01 mcast address to master interface
eth2.2: add 01:00:5e:00:00:01 mcast address to master interface
Retry give up
device ra0 entered promiscuous mode
eth2.1: dev_set_promiscuity(master, 1)
device eth2.1 entered promiscuous mode
device ra1 entered promiscuous mode
br0: port 3(ra1) entering learning state
br0: port 2(eth2.1) entering learning state
br0: port 1(ra0) entering learning state
RT305x_ESW: Link Status Changed
port 1 (LAN) down
RT305x_ESW: Link Status Changed
Not get ack , retry
RT305x_ESW: Link Status Changed
port 1 (LAN) up
Not get ack , retry
RT305x_ESW: Link Status Changed
dev1[eth2.2]
dev2[eth2.1]
eth2.2: dev_set_promiscuity(master, 1)
device eth2.2 entered promiscuous mode
Retry give up
Not get ack , retry
Not get ack , retry
Retry give up
Not get ack , retry
Not get ack , retry
Retry give up
br0: topology change detected, propagating
br0: port 3(ra1) entering forwarding state
br0: topology change detected, propagating
br0: port 2(eth2.1) entering forwarding state
br0: topology change detected, propagating
br0: port 1(ra0) entering forwarding state
RT305x_ESW: Link Status Changed
なんだか、ラジオ機能とかがある向こう側がさっぱり見えてこない。基板が別に
なっているし、ほとんど切り離されてしまっているみたい。向こう側をいじり
たいのに、困ったもんだ。
■ 5/6
今日は仕事なので、外からサーバに入って、さらに MZK-WDPR にログインして
ゴニョゴニョやったり、NetBSD の kernel のコンパイルなんかをやっていたら、
突然ネットワークが不通に。家に帰ると YahooBB の Trio3-G plus という ADSL
ルータが、固まっていた。再起動したら PC の接続ができなくなった。MZK-WDPR
の LAN ポートを Trio3-G plus に繋いでいるため、PC が IP を MZK-WDPR から
もらってしまったようである。そもそも Trio3-G plus の4ポートはハブ動作
するだろう、という前提で 192.168.0.0/24 と 192.168.111.0/24 のネットワークを
混在させていたのが、固まった原因なのかもしれないけど。Trio3-G plus には
MZK-WDPR の WAN ポートを繋いで、telnetd を起動した後に iptables の内容を
削除して WAN 側からでも telnet で接続できるようにして、 192.168.0.0/24 の
ネットワークだけに収めてみた。で、インターネット側からアクセスしてみたら、
アクセスできない。調べると、Trio3-G plus のポートフォワード情報の設定が
全て消えていた。あーあ。
■ 5/7
NetBSD 5.0.2 の kernel の作成。X なんかインストールしなかったし、他に何も
デバイスを追加する予定もないので、USB からサウンド、マウスまで、全て無効に
した。isa も無効にしたいのだけど、
isa0 at ichlpcib?
を無効にすると、
ld -Map netbsd.map --cref -T ../../../../arch/i386/conf/kern.ldscript -Ttext c0
100000 -e start -X -o netbsd ${SYSTEM_OBJ} ${EXTRA_OBJ} vers.o
ioconf.o:(.rodata+0x338): undefined reference to `sysbeep_ca'
kern_clock.o: In function `statclock':
kern_clock.c:(.text+0xb8): undefined reference to `setstatclockrate'
kern_clock.c:(.text+0x1ae): undefined reference to `setstatclockrate'
cpu.o: In function `cpu_get_tsc_freq':
cpu.c:(.text+0x87): undefined reference to `i8254_delay'
cpu.o: In function `mp_cpu_start':
cpu.c:(.text+0x1b3): undefined reference to `i8254_delay'
cpu.c:(.text+0x1f6): undefined reference to `i8254_delay'
cpu.c:(.text+0x236): undefined reference to `i8254_delay'
cpu.o: In function `cpu_boot_secondary_processors':
cpu.c:(.text+0x3d6): undefined reference to `i8254_delay'
cpu.o:cpu.c:(.text+0x117a): more undefined references to `i8254_delay' follow
identcpu.o: In function `cpu_probe_cyrix_cmn':
identcpu.c:(.text+0x7ca): undefined reference to `clock_broken_latch'
lapic.o: In function `lapic_calibrate_timer':
lapic.c:(.text+0x29b): undefined reference to `gettick'
lapic.c:(.text+0x2a9): undefined reference to `rtclock_tval'
lapic.c:(.text+0x2bc): undefined reference to `gettick'
lapic.c:(.text+0x432): undefined reference to `initrtclock'
lapic.o: In function `x86_ipi_init':
lapic.c:(.text+0x5ab): undefined reference to `i8254_delay'
acpi_wakeup.o: In function `acpi_md_sleep':
acpi_wakeup.c:(.text+0x787): undefined reference to `initrtclock'
pciide_machdep.o: In function `pciide_machdep_compat_intr_establish':
pciide_machdep.c:(.text+0x3c): undefined reference to `isa_intr_establish'
autoconf.o: In function `cpu_configure':
autoconf.c:(.text+0x8): undefined reference to `startrtclock'
machdep.o:(.data+0x1c): undefined reference to `i8254_delay'
machdep.o:(.data+0x20): undefined reference to `i8254_initclocks'
pcib.o: In function `pcibmatch':
pcib.c:(.text+0x73): undefined reference to `clock_broken_latch'
cmos.o: In function `cmos_fetch':
cmos.c:(.text+0x6a): undefined reference to `mc146818_read'
cmos.o: In function `cmos_write':
cmos.c:(.text+0x143): undefined reference to `mc146818_write'
pckbc_acpi.o: In function `pckbc_acpi_intr_establish':
pckbc_acpi.c:(.text+0x46a): undefined reference to `isa_intr_establish'
npx_acpi.o: In function `npx_acpi_attach':
npx_acpi.c:(.text+0x176): undefined reference to `isa_intr_establish'
*** Error code 1
Stop.
make: stopped in /usr/src/sys/arch/i386/compile/MUSTAFAR_5
となる。
ichlpcib* at pci? dev ? function ? # Intel ICH PCI-ISA w/ timecounter,
とあるように、タイマか何かで使っているみたい。すっきりしないけど、仕方が
ない。完成した kernel のサイズは。
mustafar# ls -la netbsd
-rwxr-xr-x 1 root wheel 3447372 May 7 14:33 netbsd
mustafar# ls -la /netbsd
-rwxr-xr-x 1 root wheel 11481810 Feb 7 02:53 /netbsd
だいぶ小さくなった。それでも 3M 超える。kernel はどんどん肥大化していく
ばかり。もうフロッピーディスクなんかには入りきることは無理なのか。
■ 5/8
ソフトをインストールしようとしたら、必要環境じゃない、と出た。調べてみると、
XP だと SP3 が対象みたい。手元の PC は XP SP2 で放置していたのだけど、
仕方なくダウンロードする。容量を見たら 325M もあるし。インストールしたら、
1.5G ほどディスクが減っているし。再起動後、特に問題なかったので。
C:\WINDOWS\$NtServicePackUninstall$
C:\WINDOWS\$hf_mig$
をごっそり削除した。それでも、300M ぐらい増えてる感じ。
■ 5/9
久しぶりにこの web サーバを見たら、アクセスランプがもの凄い勢いで点滅して
いて、ディスクもガリガリいってる。とうとうディスクの寿命か、と中に入って
見てみたら、どうやら ssh での Brute force attack を受けている真っ最中の
ようだった。で、パタとディスクの音が落ち着く。ログを見てみると。
May 9 20:16:46 kamino sshd: Illegal user carambola from 220.110.156.146
May 9 20:16:46 kamino sshd: Failed password for illegal user carambola from
220.110.156.146 port 30647 ssh2
May 9 20:16:46 kamino sshd: Illegal user papaya from 220.110.156.146
May 9 20:16:46 kamino sshd: Failed password for illegal user papaya from
220.110.156.146 port 10434 ssh2
May 9 20:16:46 kamino sshd: error: fork: Resource temporarily unavailable
sshd が音を上げたみたい。都合良いのか悪いのか、よくわからないけど。それに
しても、接続元の 220.110.156.146 って
a. [IPネットワークアドレス] 220.110.156.144/29
b. [ネットワーク名] SAKKA-NET
f. [組織名] 札幌花き園芸株式会社
なんだかなぁ、って感じ。やられちゃったのだろうか。web ページには何も書いて
ないようだけど。
■ 5/10
MZK-WDPR で find コマンドが欲しいな、cal コマンドなんか選ばずに find でしょ
なんて呟きながら、linux-mips.org を探していたら、mips の findutils を発見。
えらく古いけど、ダウンロードしてきた。
[toyota@mustafar]% wget ftp://ftp.linux-mips.org/pub/linux/mips/redhat/
7.3/RPMS/mips/findutils-4.1.7-4.mips.rpm
RedHat 7.3 って mips 対応していたのだ、とちょっと感動して。NetBSD 機で
分解して、バイナリだけ取りだそうとしたら。
[toyota@mustafar]% rpm2cpio.pl findutils-4.1.7-4.mips.rpm
rpm2cpio, perl version by orabidoo <odar@pobox.com> +sw
dumps the contents to stdout as a cpio archive
use: rpm2cpio [file.rpm] > file.cpio
Here's how to use cpio:
list of contents: cpio -t -i < /file/name
extract files: cpio -d -i < /file/name
なぜか rpm2cpio が Perl スクリプトだし、うまく動いていないし。perl なのを
良いことに中を覗くと、出力の指定をしてないとダメみたい。やってみた。
[toyota@mustafar]% rpm2cpio.pl findutils-4.1.7-4.mips.rpm | cpio -id
分解できた。バイナリをどうやって転送しようか悩む。MZK-WDPR を眺めていたら、
wget があるみたいなので、find コマンドのバイナリだけ web サーバに置いて、
wget させることにした。
# wget http://mustafar/find
やっと、実行。
# ./find
-sh: ./find: Permission denied
# chmod a+x find
# ./find
./find: line 1: syntax error: word unexpected (expecting ")")
なんか、ダメみたい。明日別なファイルでやり直しだ。
■ 5/11
昨日の続きで。Debian にも mips 用のバイナリがあって新しそうなので、それを
使うことにした。
[toyota@mustafar]% wget http://ftp.jaist.ac.jp/pub/Linux/Debian/pool/main/f/
findutils/findutils_4.4.2-1_mips.deb
[toyota@mustafar]% dpkg -x findutils_4.4.2-1_mips.deb
dpkg: Command not found.
dpkg を入れないとダメみたい。NetBSD のパッケージにはなかったので、ソース
からコンパイル。
[toyota@mustafar]% wget http://ftp.jaist.ac.jp/pub/Linux/Debian/pool/main/d/
dpkg/dpkg_1.15.7.1.tar.bz2
[toyota@mustafar]% tar xfj dpkg_1.15.7.1.tar.bz2
[toyota@mustafar]% cd dpkg-1.15.7.1/
[toyota@mustafar]% ./configure
[toyota@mustafar]% make
~snip~
CC main.o
CCLD dpkg-deb
../lib/compat/libcompat.a(obstack.o): In function `print_and_abort':
/tmp/dpkg-1.15.7.1/lib/compat/obstack.c:477: undefined reference to `gettext'
*** Error code 1
Stop.
make: stopped in /tmp/dpkg-1.15.7.1/dpkg-deb
*** Error code 1
Stop.
make: stopped in /tmp/dpkg-1.15.7.1
*** Error code 1
Stop.
make: stopped in /tmp/dpkg-1.15.7.1
gettext は入っているので、-lintl を付ければ良さそう。dpkg-deb/Makefile
には、INTLLIBS とか LIBINTL があって、-lintl を追加したけど、全く影響が
なかった。LIBS に追加するしかないみたいなので、configure から付けてやって
みた。
[toyota@mustafar]% ./configure LIBS="-lintl"
[toyota@mustafar]% make
~snip~
CCLD dpkg-split
make: don't know how to make mksplit. Stop
make: stopped in /tmp/dpkg-1.15.7.1/dpkg-split
*** Error code 1
Stop.
make: stopped in /tmp/dpkg-1.15.7.1
*** Error code 1
Stop.
make: stopped in /tmp/dpkg-1.15.7.1
mksplit を作っているようなのだけど、既に mksplit.pl というのがあるので、
いらない気がする。dpkg-split/Makefile を編集して、mksplit のコンパイルを
しないようにした。
[toyota@mustafar]% vi dpkg-split/Makefile
#all-am: Makefile $(PROGRAMS) $(SCRIPTS)
all-am: Makefile $(PROGRAMS)
これで再度 make 。
[toyota@mustafar]% make
~snip~
CCLD dpkg-trigger
Making all in utils
CC start-stop-daemon.o
start-stop-daemon.c: In function 'pid_is_user':
start-stop-daemon.c:1025: error: dereferencing pointer to incomplete type
*** Error code 1
Stop.
make: stopped in /tmp/dpkg-1.15.7.1/utils
*** Error code 1
Stop.
make: stopped in /tmp/dpkg-1.15.7.1
*** Error code 1
Stop.
make: stopped in /tmp/dpkg-1.15.7.1
これは根が深そう。utils/start-stop-daemon.c の問題部分は。
kvm_read(kd, (u_long)&(kp->kp_proc.p_cred->p_ruid),
(void *)&proc_uid, (size_t)sizeof(uid_t));
kvm_read の2番目の引数、kp->kp_proc.p_cred->p_ruid が問題みたい。少し
辿ってみた。kp は、
struct kinfo_proc *kp;
で、宣言されている。
/usr/include/sys/sysctl.h
struct kinfo_proc {
struct proc kp_proc; /* proc structure */
kp->kp_proc は struct proc kp_proc; なので。
/usr/include/sys/proc.h
struct proc {
LIST_ENTRY(proc) p_list; /* l: List of all processes */
kmutex_t p_auxlock; /* :: secondary, longer term lock */
kmutex_t *p_lock; /* :: general mutex */
kmutex_t p_stmutex; /* :: mutex on profiling state */
krwlock_t p_reflock; /* p: lock for debugger, procfs */
kcondvar_t p_waitcv; /* p: wait, stop CV on children */
kcondvar_t p_lwpcv; /* p: wait, stop CV on LWPs */
/* Substructures: */
struct kauth_cred *p_cred; /* p: Master copy of credentials */
で、この struct kauth_cred が見つからない。web で検索してみると、どうも
kern_auth.h とか kauth.h というファイルで宣言されているようなのだけど、
どちらのファイルも見つからない。ふと、思って、kernel のソースの中を探して
みたら、kern_auth.c の中で見つかった。
struct kauth_cred {
/*
* Ensure that the first part of the credential resides in its own
* cache line. Due to sharing there aren't many kauth_creds in a
* typical system, but the reference counts change very often.
* Keeping it seperate from the rest of the data prevents false
* sharing between CPUs.
*/
u_int cr_refcnt; /* reference count */
#if COHERENCY_UNIT > 4
uint8_t cr_pad[COHERENCY_UNIT - 4];
#endif
uid_t cr_uid; /* user id */
uid_t cr_euid; /* effective user id */
uid_t cr_svuid; /* saved effective user id */
gid_t cr_gid; /* group id */
gid_t cr_egid; /* effective group id */
gid_t cr_svgid; /* saved effective group id */
u_int cr_ngroups; /* number of groups */
gid_t cr_groups[NGROUPS]; /* group memberships */
specificdata_reference cr_sd; /* specific data */
};
ここだけファイルに追加しても駄目だし、どうしたものかな、と思っていたら、
既に dpkg バイナリはできていて、util 部分のコンパイルで止まっていただけの
ようなので、分解できるかやってみた。
[toyota@mustafar]% /tmp/dpkg-1.15.7.1/src/dpkg -x findutils_4.4.2-1_mips.deb
dpkg: unable to execute dpkg-deb (dpkg-deb): No such file or directory
実質 dpkg-deb コマンドが実行しているみたい。直接実行してみた。
[toyota@mustafar]% /tmp/dpkg-1.15.7.1/dpkg-deb/dpkg-deb -x
findutils_4.4.2-1_mips.deb ./
やっと分解できた。取り出した find コマンドを MZK-WDPR で実行してみた。
# ./find
./find: line 1: syntax error: word unexpected (expecting ")")
何だったのでしょう、この無駄な努力は。
■ 5/12
5日に書いた MZK-WDPR の dmesg の結果を眺めていたら、ダメダメな typo を
見つけた。
The CPU feqenuce set to 320 MHz
frequence が feqenuce と2か所も間違っている。手元のターミナルの文字化け
かもしれないと思って、「The CPU feqenuce」で検索してみたら、結構出るので
文字化けじゃないみたい。いくつか、feqenuce なページを見たけど、見たページの
全てが Linux 2.6.21 で、CPU revision は 0001906c か 0001964c かだった。
見た感じ、OpenWrt のネットワーク機器がほとんど。これって何かのトラップで
密かに識別をするために埋め込まれたのじゃないか、なんて想像してしまった。
単純なミスの可能性の方が高いだろうけど。
■ 5/13
やっと動き出している NetBSD 5.0.2 の PC なのだが、messages を見ると、動き
出してから ntpd が変なログをはいている。今日分だと。
May 13 01:34:08 mustafar ntpd[227]: kernel time sync status change 0x6001<PLL,
NANO,MODE=0x1=FLL,CLK=0x0=A>
May 13 02:42:26 mustafar ntpd[227]: kernel time sync status change 0x2001<PLL,
NANO,MODE=0x0=PLL,CLK=0x0=A>
May 13 03:33:42 mustafar ntpd[227]: kernel time sync status change 0x6001<PLL,
NANO,MODE=0x1=FLL,CLK=0x0=A>
May 13 04:24:54 mustafar ntpd[227]: kernel time sync status change 0x2001<PLL,
NANO,MODE=0x0=PLL,CLK=0x0=A>
May 13 04:59:06 mustafar ntpd[227]: kernel time sync status change 0x6001<PLL,
NANO,MODE=0x1=FLL,CLK=0x0=A>
May 13 05:16:11 mustafar ntpd[227]: kernel time sync status change 0x2001<PLL,
NANO,MODE=0x0=PLL,CLK=0x0=A>
May 13 06:24:31 mustafar ntpd[227]: kernel time sync status change 0x6001<PLL,
NANO,MODE=0x1=FLL,CLK=0x0=A>
May 13 07:15:46 mustafar ntpd[227]: kernel time sync status change 0x2001<PLL,
NANO,MODE=0x0=PLL,CLK=0x0=A>
May 13 08:07:03 mustafar ntpd[227]: kernel time sync status change 0x6001<PLL,
NANO,MODE=0x1=FLL,CLK=0x0=A>
May 13 08:24:06 mustafar ntpd[227]: kernel time sync status change 0x2001<PLL,
NANO,MODE=0x0=PLL,CLK=0x0=A>
May 13 09:15:19 mustafar ntpd[227]: kernel time sync status change 0x6001<PLL,
NANO,MODE=0x1=FLL,CLK=0x0=A>
May 13 09:32:25 mustafar ntpd[227]: kernel time sync status change 0x2001<PLL,
NANO,MODE=0x0=PLL,CLK=0x0=A>
May 13 11:31:51 mustafar ntpd[227]: kernel time sync status change 0x6001<PLL,
NANO,MODE=0x1=FLL,CLK=0x0=A>
May 13 11:48:54 mustafar ntpd[227]: kernel time sync status change 0x2001<PLL,
NANO,MODE=0x0=PLL,CLK=0x0=A>
May 13 12:23:04 mustafar ntpd[227]: kernel time sync status change 0x6001<PLL,
NANO,MODE=0x1=FLL,CLK=0x0=A>
こんな感じで、1時間に1回ほど。ちょっと、調べてみることにした。
[toyota@mustafar]% ps ax | grep ntp
227 ? Ss 0:07.87 /usr/sbin/ntpd
[toyota@mustafar]% /usr/sbin/ntpd --version
ntpd - NTP daemon program - Ver. 4.2.4p6
NetBSD の ntpd は特殊なものを使っていた筈なのだけど、いつの間にか独自の
ものではなくなったみたい。ソースを探して、追ってみた。
[toyota@mustafar]% wget http://archive.ntp.org/ntp4/ntp-4.2/ntp-4.2.4p6.tar.gz
[toyota@mustafar]% tar xfz ntp-4.2.4p6.tar.gz
[toyota@mustafar]% cd ntp-4.2.4p6/
[toyota@mustafar]% grep -r "kernel time sync status change" *
ntpd/ntp_loopfilter.c: "kernel time sync status change %04x",
[toyota@mustafar]% less ntpd/ntp_loopfilter.c
/*
* Pass the stuff to the kernel. If it squeals, turn off
* the pig. In any case, fetch the kernel offset and
* frequency and pretend we did it here.
*/
if (ntp_adjtime(&ntv) == TIME_ERROR) {
NLOG(NLOG_SYNCEVENT | NLOG_SYSEVENT)
msyslog(LOG_NOTICE,
"kernel time sync error %04x", ntv.status);
ntv.status &= ~(STA_PPSFREQ | STA_PPSTIME);
} else {
if ((ntv.status ^ pll_status) & ~STA_FLL)
NLOG(NLOG_SYNCEVENT | NLOG_SYSEVENT)
msyslog(LOG_NOTICE,
"kernel time sync status change %04x",
ntv.status);
}
ntp_adjtime 関数の返りを見ているみたい。ntp_adjtime は define 扱いかと
思ったら、システムコールで見つかったので、man ntp_adjtime してみた。
ntp_adjtime(2)
status System clock status bits (read-write). Bitwise OR of the fol-
lowing:
STA_PLL Enable PLL updates (read-write).
STA_PPSFREQ Enable PPS freq discipline (read-write).
STA_PPSTIME Enable PPS time discipline (read-write).
STA_FLL Select frequency-lock mode (read-write).
STA_INS Insert leap (read-write).
STA_DEL Delete leap (read-write).
STA_UNSYNC Clock unsynchronized (read-write).
STA_FREQHOLD Hold frequency (read-write).
STA_PPSSIGNAL PPS signal present (read-only).
STA_PPSJITTER PPS signal jitter exceeded (read-only).
STA_PPSWANDER PPS signal wander exceeded (read-only).
STA_PPSERROR PPS signal calibration error (read-only).
STA_CLOCKERR Clock hardware fault (read-only).
全く意味が分からなくなった。とりあえず、システムクロックのステータスが
変わったということなので、どうしたものかを考える隙が無いみたい。目障りに
なったら、syslog のログレベルを変えて対処することにしよう。
■ 5/14
MZK-WDPR のファームウェアをこれまであげてなかった。何故かと言うと、間に
PC を挟んキャプチャしたいため。でも、NIC が2つある PC なんか手元にない
ので、実家に寄ったついでに、ADM AN986 なチップの USB-Ether を持ってきた。
さっそく接続して、いつもテレビ用に使っている PC を knoppix で起動させた。
USB 1.1 で凄い遅いだろうけど、Pegasus な感じで無事に認識した。設定する
ため、まず MZK-WDPR の LAN 側と直結させて、ごにょごにょ。
root@Knoppix:/tmp# /sbin/ifconfig eth1 192.168.111.2
root@Knoppix:/tmp# wget -O /dev/null
'http://admin:password@192.168.111.1/goform/SystemCommand?command=telnetd'
root@Knoppix:/tmp# wget -O /dev/null
'http://admin:password@192.168.111.1/goform/SystemCommand?command=iptables%20-F'
root@Knoppix:/tmp# wget -O /dev/null
'http://admin:password@192.168.111.1/goform/SystemCommand?
command=ifconfig%20eth2.2%20192.168.8.2'
root@Knoppix:/tmp# wget -O /dev/null
'http://admin:password@192.168.111.1/goform/SystemCommand?
command=route%20add%20default%20gw%20192.168.8.1'
これで、WAN 側に付け替える。
root@Knoppix:/tmp# /sbin/ifconfig eth1 192.168.8.1
root@Knoppix:/tmp# echo 1 > /proc/sys/net/ipv4/ip_forward
root@Knoppix:/tmp# iptables -t nat -A POSTROUTING -o eth0 -s 192.168.8.0/24
-j MASQUERADE
root@Knoppix:/tmp# tcpdump -i eth1 -s 65535 -w wdpr.dump
これで、MZK-WDPR のファームウェアのバージョンアップを行う。30M ちょっと
ダウンロードして。
電源を切らずに接続を
維持してください
更新中…
処理が終わったら再起動します
の画面が10分ぐらい続いて再起動した。再起動したので、また設定のやり直し。
面倒臭い。そこそこでかいので wireshark に入れて http.request.method==GET
で絞ってみた。
http://www.planex.co.jp/support/driver/router/MZK-WDPR/MZK-WDPR.xml
http://www.planex.co.jp/support/driver/router/MZK-WDPR/firmware.AT035N00_1_1_53.tgz
http://www.planex.co.jp/support/driver/router/MZK-WDPR/root_uImage_v1.0.0.65
http://www.planex.co.jp/support/driver/router/MZK-WDPR/MZK-WDPR_checksum.md5
4つのアクセス。最初のアクセスがファームウェアの場所が記述してある XML 。
この中に、3つのアクセス先が書いてある。とりあえず、手元にダウンロードして
みる。明日解析予定。
■ 5/15
MZK-WDPR のファームウェアの解析。あっち側、つまりフォトフレーム側であろう
firmware.AT035N00_1_1_53.tgz の解析から。
root@Knoppix:/tmp# tar xfz firmware.AT035N00_1_1_53.tgz
root@Knoppix:/tmp/upgrade# cd upgrade
root@Knoppix:/tmp/upgrade# ls -la
total 225820
drwxr-xr-x 2 root root 200 Apr 9 18:29 .
drwxr-xr-x 3 root root 80 May 16 02:12 ..
-rw------- 1 root root 14 Apr 9 18:29 fwinfo
-rw------- 1 root root 10485760 May 16 02:16 upgrade_rootfs0.img
-rw------- 1 root root 10485760 May 16 02:18 upgrade_rootfs1.img
-rw-r--r-- 1 root root 285384 Apr 9 18:29 upgrade_uboot.bin
-rw-r--r-- 1 root root 41943040 Apr 9 18:29 upgrade_umdi0.img
-rw-r--r-- 1 root root 62914560 Apr 9 18:29 upgrade_umdi1.img
-rw-r--r-- 1 root root 41943040 Apr 9 18:29 upgrade_umdi2.img
-rw-r--r-- 1 root root 62914560 Apr 9 18:29 upgrade_umdi3.img
root@Knoppix:/tmp/firm/upgrade# file *
fwinfo: ASCII text
upgrade_rootfs0.img: Linux rev 1.0 ext2 filesystem data (mounted or unclean)
upgrade_rootfs1.img: Linux rev 1.0 ext2 filesystem data (mounted or unclean)
upgrade_uboot.bin: data
upgrade_umdi0.img: x86 boot sector, mkdosfs boot message display
upgrade_umdi1.img: x86 boot sector, mkdosfs boot message display
upgrade_umdi2.img: x86 boot sector, mkdosfs boot message display
upgrade_umdi3.img: x86 boot sector, mkdosfs boot message display
まさかの ext2 と fat12 。こうなったら、マウントでしょ。
root@Knoppix:/tmp/upgrade# mkdir /mnt/loop0
root@Knoppix:/tmp/upgrade# mkdir /mnt/loop1
root@Knoppix:/tmp/upgrade# mkdir /mnt/loopu0
root@Knoppix:/tmp/upgrade# mkdir /mnt/loopu1
root@Knoppix:/tmp/upgrade# mkdir /mnt/loopu2
root@Knoppix:/tmp/upgrade# mkdir /mnt/loopu3
root@Knoppix:/tmp/upgrade# mount -o loop upgrade_rootfs0.img /mnt/loop0
root@Knoppix:/tmp/upgrade# mount -o loop upgrade_rootfs1.img /mnt/loop1
root@Knoppix:/tmp/upgrade# mount -o loop upgrade_umdi0.img /mnt/loopu0
root@Knoppix:/tmp/upgrade# mount -o loop upgrade_umdi1.img /mnt/loopu1
root@Knoppix:/tmp/upgrade# mount -o loop upgrade_umdi2.img /mnt/loopu2
root@Knoppix:/tmp/upgrade# mount -o loop upgrade_umdi3.img /mnt/loopu3
何だかよくわからないけど、upgrade_rootfs0.img と upgrade_rootfs1.img は
中身が同じみたい。同じように upgrade_umdi0.img と upgrade_umdi2.img が、
upgrade_umdi1.img と upgrade_umdi3.img が同じみたい。理由はよくわからない
けど。なんと、あっち側も Linux みたい。つまり、MZK-WDPR は CPU が2つの
Linux が2つ動いているみたい。なんだか、贅沢なような、そうじゃないような。
あっち側の Linux は。
Linux version 2.6.19-04142008-default (pinyuchen@R220-linux4) (gcc version 4.2.1
(ARC_2.2.Skymedi.20081020)) #1 Wed Jan 27 15:37:58 CST 2010
なんだか、テンション上がってきた。
root@Knoppix:/tmp# cat /mnt/loop0/etc/init.d/rcS
#!/bin/sh
echo "Mounting proc"
mount -t proc none /proc
mount -t tmpfs none /tmp
sysctl -w vm.overcommit_memory=1
mount -t vfat /dev/sknande /mnt/umdi0
mount -t vfat /dev/sknandf /mnt/umdi1
mount -t vfat /dev/sknandg /mnt/umdi2
mount -t vfat /dev/sknandh /mnt/umdi3
mount -t vfat /dev/sknandi /mnt/umdi4
mount -t usbfs none /proc/bus/usb
ln -sf /mnt/umdi3/conf /tmp/conf
cat /etc/version > /proc/versions
cd /sky
/sky/respawn_tardis &
root@Knoppix:/tmp# file /mnt/loop0/bin/busybox
/mnt/loop0/bin/busybox: ELF 32-bit LSB executable, ARC Cores Tangent-A5, version
1 (SYSV), dynamically linked (uses shared libs), stripped
ARC って聞いたことがない CPU だな。調べてみたら、Argonaut RISC Core の
略みたいで、任天堂の SuperFX が元だとか、なんとか。ARC International と
いうところが作ってたけど、Virage Logic に買収されたらしく。
http://www.arc.com/software/linux/
それにしても、Linux って何の CPU でも動くんだな。あとは、telnetd がある
のは確認したけど、あっち側で実行してログインできるかどうか。
■ 5/16
MZK-WDPR の解析の続き。あっち側(フォトフレーム側)は、10.88.88.95 の IP
が振られているみたい。こっち側の br0:1 に 10.88.88.88 が振られていた理由が
わかった。LAN 側に knoppix の PC を繋いで、knoppix 側から突っついてみる。
root@Knoppix:/tmp# ifconfig eth1:0 10.88.88.1
root@Knoppix:/tmp# nmap -sP 10.88.88.0/24
Starting Nmap 4.53 ( http://insecure.org ) at 2010-05-16 13:40 JST
Host 10.88.88.1 appears to be up.
Host 10.88.88.88 appears to be up.
Host 10.88.88.95 appears to be up.
Nmap done: 256 IP addresses (3 hosts up) scanned in 8.162 seconds
root@Knoppix:/tmp# nmap -p 1-65535 10.88.88.95
Starting Nmap 4.53 ( http://insecure.org ) at 2010-05-16 13:42 JST
All 65535 scanned ports on 10.88.88.95 are closed
Nmap done: 1 IP address (1 host up) scanned in 66.946 seconds
ポート全滅。正攻法じゃ、コマンドを実行したりすることができないみたい。
これはちょっと予想が外れた。こっち側(ルータ側)には fuse が入っていて、
うまく使うとマウントできるもの思っていたので。
とりあえず、内部侵入は置いて、ファームウェアを新しくしたので、 youtube
を見てみた。思ったよりもマトモに見られる。一回一回検索して、選択して、
実行、という作業が面倒だけど。この再生機能は、ファームウェアを見る限り
curl もしくは wget + mplayer で実行されている。多分、ラジオも mplayer で
実行されている。手元の DVD をリッピングした DivX な avi(705x300) も再生
できて驚いたりして。wmv が駄目なのは少し痛いけど。なんか、まだしばらく
これで遊べそう。自分のためにも、まとめのページを書こうかな。
■ 5/17
MZK-WDPR の解析の続き。こっち側(ルータ側)のファームをマウントしてみる。
とりあえず、squashfs の部分を取り出して、マウント。
# dd if=root_uImage_v1.0.0.65 of=sqfs.image bs=1024 skip=1088
# mkdir /mnt/sqfs
# mount -o loop -t squashfs sqfs.image /mnt/sqfs
mount: unknown filesystem type 'squashfs'
knoppix じゃ駄目みたい。戦場を CentOS 5.4 の PC に移動してやってみた。
[toyota@centos54]# mount -t squashfs -o loop ./sqfs.image /mnt/sqfs
mount: wrong fs type, bad option, bad superblock on /dev/loop1,
missing codepage or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
駄目。嫌な予感はしていて、こっち側の dmesg には。
squashfs: version 3.2-r2 (2007/01/15) Phillip Lougher
squashfs: LZMA suppport for slax.org by jro
とあったので、LZMA な squashfs を使ってるみたいなんだよね。少し web で
調べて、http://www.squashfs-lzma.org/ からダウンロードしようと思ったが、
kernel 2.6.27 以上が必要みたい。手元の CentOS 5.4 は 2.6.18 だし、0 から
kernel を作るのも面倒。少し悩む。
で、ふと思った。こっち側の kernel って 2.6.21 なのに、何で squashfs-lzma
が動いているのだろうと。さらに調べてみたら、2.6.17 用のバックポートをした
人がいて、patch があるみたい。
https://sourceforge.net/project/showfiles.php?group_id=116780&package_id=222970
どちらにしても、slax で起動し直した方が楽そう。
■ 5/18
11日の続き。別に昨日の続きでも良いのだけど。LZMA な SquashFS がマウント
できなかったので、直接 MZK-WDPR からファイルをもってくることにした。で、
どうやってファイルを持ってくるか。MZK-WDPR の web サーバの設定を変えよう
かと、設定がどこにあるのか見るため、
# goahead --help
してみたら、ネットワークが繋がらなくなるし。仕方なく再起動して、別な方法を
考えていたら、ftpput というコマンドを発見。中身は busybox なんだけど。
これを使ってみることにした。
まず、knoppix で ftp サーバの起動をする。設定を確認したら、inetd の起動
だけで良さそう。
root@Knoppix:/etc# /usr/sbin/inetd
root@Knoppix:/tmp# ftp localhost
Connected to Knoppix.
220 Knoppix FTP server (Version 6.4/OpenBSD/Linux-ftpd-0.17) ready.
Name (localhost:knoppix): knoppix
331 Password required for knoppix.
Password:
230- Welcome to Knoppix!
230 User knoppix logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit
221 Goodbye.
あっさり動く。MZK-WDPR から ftpget してみたら、接続できない。どうやら、
iptables か tcpwrapper 辺りの問題みたい。iptables -F を実行してみ改善が
されないので、/etc/hosts.allow の確認。
root@Knoppix:/tmp# cat /etc/hosts.allow
ssh sshd : ALL@ALL : ALLOW
ALL : 127.0.0.1 LOCAL : ALLOW
ALL : ALL@ALL : DENY
これだ。
ALL : 192.168. : ALLOW
を追加して、inetd の再起動。これで MZK-WDPR から ftpget できた。MZK-WDPR
の中のバイナリを knoppix に送る。なるべく、サイズが小さい brctl にした。
# ftpput -u knoppix -p xxxxxxxx duro /tmp/brctl /usr/sbin/brctl
knoppix で file コマンドを実行。
knoppix@Knoppix:/tmp$ file brctl
brctl: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically
linked (uses shared libs), stripped
この前送って動かなかった find コマンドは。
knoppix@Knoppix:/tmp$ file find
find: ELF 32-bit MSB executable, MIPS, MIPS-I version 1 (SYSV), for GNU/Linux
2.6.18, dynamically linked (uses shared libs), stripped
MZK-WDPR の mips はリトルエンディアンで動作してるんだ。リトルエンディアン
用のバイナリを取ってきて、やってみる。
knoppix@Knoppix:/tmp$ wget http://ftp.jaist.ac.jp/pub/Linux/Debian/pool/main/f/
findutils/findutils_4.4.2-1_mipsel.deb
knoppix@Knoppix:/tmp$ dpkg-deb -x findutils_4.4.2-1_mipsel.deb ./
knoppix@Knoppix:/tmp$ file /tmp/usr/bin/find
/tmp/usr/bin/find: ELF 32-bit LSB executable, MIPS, MIPS-I version 1 (SYSV), for
GNU/Linux 2.6.18, dynamically linked (uses shared libs), stripped
knoppix は dpkg(-deb) がインストールされているので助かる。MZK-WDPR から
取りに行く。
# ftpget -u knoppix -p xxxxxxxx duro /tmp/find /tmp/usr/bin/find
# chmod a+x /tmp/find
# /tmp/find
-sh: /tmp/find: not found
何が起きたのかわからなかった。タイプミスをしたものかと、何度かやってみた
けど、結果は同じ。ふと思って、ldd を実行してみた。
knoppix@Knoppix:/tmp$ ldd /tmp/usr/bin/find
not a dynamic executable
そりゃそうか。readelf を実行。
knoppix@Knoppix:/tmp$ readelf -d /tmp/usr/bin/find
Dynamic section at offset 0x19c contains 24 entries:
Tag Type Name/Value
0x00000001 (NEEDED) Shared library: [librt.so.1]
0x00000001 (NEEDED) Shared library: [libm.so.6]
0x00000001 (NEEDED) Shared library: [libc.so.6]
0x0000000c (INIT) 0x402ed8
0x0000000d (FINI) 0x4255a0
0x00000004 (HASH) 0x400284
0x00000005 (STRTAB) 0x401ecc
0x00000006 (SYMTAB) 0x400b7c
0x0000000a (STRSZ) 3330 (bytes)
0x0000000b (SYMENT) 16 (bytes)
0x70000016 (MIPS_RLD_MAP) 0x43c0f0
0x00000015 (DEBUG) 0x0
0x00000003 (PLTGOT) 0x43c100
0x70000001 (MIPS_RLD_VERSION) 1
0x70000005 (MIPS_FLAGS) NOTPOT
0x70000006 (MIPS_BASE_ADDRESS) 0x400000
0x7000000a (MIPS_LOCAL_GOTNO) 12
0x70000011 (MIPS_SYMTABNO) 309
0x70000012 (MIPS_UNREFEXTNO) 40
0x70000013 (MIPS_GOTSYM) 0x6
0x6ffffffe (VERNEED) 0x402e38
0x6fffffff (VERNEEDNUM) 3
0x6ffffff0 (VERSYM) 0x402bce
0x00000000 (NULL) 0x0
ライブラリを3つ使っている。とりあえず libc を確認してみた。
# ls -la /lib/libc*
lrwxrwxrwx 1 admin root 18 Jan 12 18:38 /lib/libcrypt.so.0 -> libcrypt-0.9.28.so
lrwxrwxrwx 1 admin root 18 Jan 12 18:38 /lib/libcrypt.so -> libcrypt-0.9.28.so
-rw-r--r-- 1 admin root 13528 Jan 12 18:38 /lib/libcrypt-0.9.28.so
lrwxrwxrwx 1 admin root 19 Jan 12 18:38 /lib/libc.so.0 -> libuClibc-0.9.28.so
lrwxrwxrwx 1 admin root 19 Jan 12 18:38 /lib/libc.so -> libuClibc-0.9.28.so
# ls -la /usr/lib/libc*
ls: /usr/lib/libc*: No such file or directory
予想通り無い。そもそも libc は、uClibc だし。小さそうな tree コマンドを
ダウンロードして見てみたけど、やっぱり libc.so.6 が必要だし。Debian の
パッケージを使うことはできないようである。かと言って、わざわざ mips の
リトルエンディアンなクロスコンパイル環境を作るのも面倒。他のディストリ
ビューションを探してみるかな。
■ 5/19
設定がほぼ終わった NetBSD 5.0.2 の PC で ps を実行すると、大量の postdrop
が溜まっていた。同じ量の sendmail も溜まっている。ちょっと原因調査。
[toyota@mustafar]% ps axuw | grep postdrop
root 632 0.0 0.1 4796 1780 ? S 9May10 0:18.61 postdrop -r
root 730 0.0 0.1 4796 1828 ? S Fri03AM 0:09.39 postdrop -r
root 850 0.0 0.1 4796 1780 ? I 9May10 0:00.12 postdrop -r
root 985 0.0 0.1 4796 1828 ? I Fri03AM 0:00.08 postdrop -r
root 1148 0.0 0.1 4796 1828 ? S 12May10 0:11.67 postdrop -r
root 1168 0.0 0.1 4796 1828 ? I 11May10 0:00.08 postdrop -r
root 1918 0.0 0.1 4796 1780 ? S 10May10 0:15.03 postdrop -r
root 2023 0.0 0.1 4796 1780 ? I 10May10 0:00.08 postdrop -r
root 2207 0.0 0.1 4796 1828 ? I Mon03AM 0:00.08 postdrop -r
root 2603 0.0 0.1 4796 1828 ? I Sat04AM 0:00.10 postdrop -r
root 3366 0.0 0.1 4796 1828 ? S Sat04AM 0:06.87 postdrop -r
root 3451 0.0 0.1 4796 1828 ? S Mon03AM 0:04.30 postdrop -r
root 4275 0.0 0.1 4796 1828 ? I Sun03AM 0:00.08 postdrop -r
root 4842 0.0 0.1 4796 1828 ? I 3:15AM 0:00.08 postdrop -r
root 5155 0.0 0.1 4796 1828 ? S Tue03AM 0:02.22 postdrop -r
root 5783 0.0 0.1 4796 1828 ? I Tue03AM 0:00.08 postdrop -r
root 7919 0.0 0.1 4796 1828 ? I Sat03AM 0:00.08 postdrop -r
root 9176 0.0 0.1 4796 1828 ? S 3:15AM 0:00.82 postdrop -r
root 14594 0.0 0.1 4796 1828 ? I 12May10 0:00.08 postdrop -r
root 14812 0.0 0.1 4796 1828 ? I Thu03AM 0:00.08 postdrop -r
root 16430 0.0 0.1 4796 1828 ? S Thu03AM 0:10.25 postdrop -r
root 26746 0.0 0.1 4796 1828 ? S Sat03AM 0:07.94 postdrop -r
root 27080 0.0 0.1 4796 1828 ? S 11May10 0:14.70 postdrop -r
root 27706 0.0 0.1 4796 1828 ? S Sun03AM 0:04.99 postdrop -r
送信時間を見ると、cron からのメールみたい。とりあえず、全部 kill する。
[toyota@mustafar]% su
# pkill postdrop
sendmail のプロセスも全部落ちた。cron ジョブの確認。
# crontab -l
SHELL=/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
CRON_WITHIN=7200
*/10 * * * * /usr/libexec/atrun
0 * * * * /usr/bin/newsyslog
15 3 * * * /bin/sh /etc/daily 2>&1 | tee /var/log/daily.out | sendmail -t
30 4 * * 6 /bin/sh /etc/weekly 2>&1 | tee /var/log/weekly.out | sendmail -t
cron の結果をファイル出力していると同時に sendmail にも渡しているので、
ファイル出力のみに変更。
15 3 * * * /bin/sh /etc/daily 2>&1 > /var/log/daily.out
30 4 * * 6 /bin/sh /etc/weekly 2>&1 > /var/log/weekly.out
ここまでが、一昨日の話。昨日プロセスを見ると、postdrop のプロセスが増えて
いる。何かまだ設定が必要みたい、ということで調べると cron 自体からメールが
やってくるみたい。cron の頭に MAILTO の設定を入れた。
MAILTO=""
ここまでが、昨日の話。今日プロセスを見たら、postdrop のプロセスは増えて
なかった。これで解決。
■ 5/20
ということで、MZK-WDPR のあっち側(画面側)のファームを作成して、 telnet
を起動させる。素材を取ってくる。
root@Knoppix# wget -x -nH http://www.planex.co.jp/support/driver/router/
MZK-WDPR/MZK-WDPR.xml
root@Knoppix# wget -x -nH http://www.planex.co.jp/support/driver/router/
MZK-WDPR/firmware.AT035N00_1_1_53.tgz
root@Knoppix# wget -x -nH http://www.planex.co.jp/support/driver/router/
MZK-WDPR/root_uImage_v1.0.0.65
root@Knoppix# wget -x -nH http://www.planex.co.jp/support/driver/router/
MZK-WDPR/MZK-WDPR_checksum.md5
root@Knoppix# cd /tmp/support/driver/router/MZK-WDPR/
ファームウェアの中身をいじる。
root@Knoppix# tar xfz firmware.AT035N00_1_1_53.tgz frm.tgz
root@Knoppix# mkdir /mnt/rootfs0
root@Knoppix# mount -o loop upgrade/upgrade_rootfs0.img /mnt/rootfs0
root@Knoppix# vi /mnt/rootfs0/etc/passwd
root@Knoppix# vi /mnt/rootfs0/etc/init.d/rcS
root@Knoppix# vi /mnt/rootfs0/etc/version
/etc/passwd にパスワードなしのユーザを作成。/etc/init.d/rcS で telnetd を
起動するように追加。最後に念のため /etc/version のバージョンを増やした。
改造ファームのセットを作成。
root@Knoppix# umount /mnt/rootfs0
root@Knoppix# rm upgrade/upgrade_rootfs1.img
root@Knoppix# cp -p upgrade/upgrade_rootfs0.img upgrade/upgrade_rootfs1.img
root@Knoppix# tar cvfz firmware.AT035N00_1_1_54.tgz upgrade
root@Knoppix# md5sum firmware.AT035N00_1_1_54.tgz > MZK-WDPR_checksum.md5
大元の xml ファイルを編集。
root@Knoppix# vi MZK-WDPR.xml
AT035N00_1_1_53 の部分を AT035N00_1_1_54 にした。knoppix 側での Apache の
設定。
root@Knoppix# cp -p /etc/apache/httpd.conf /etc/apache/httpd.conf.org
root@Knoppix# vi /etc/apache/httpd.conf
root@Knoppix# diff /etc/apache/httpd.conf.org /etc/apache/httpd.conf
270c270
< #ServerName localhost
---
> ServerName localhost
272c272
< ServerName www.planex.co.jp
---
> #ServerName new.host.name
279c279
< DocumentRoot /tmp
---
> DocumentRoot /var/www
root@Knoppix# touch /tmp/index.html
root@Knoppix# /etc/init.d/apache start
root@Knoppix# telnet localhost 80
Trying 127.0.0.1...
Connected to Knoppix.
Escape character is '^]'.
GET /index.html HTTP/1.0
HTTP/1.1 200 OK
Date: Tue, 18 May 2010 15:05:59 GMT
Server: Apache/1.3.34 (Debian) mod_ssl/2.8.25 OpenSSL/0.9.8c mod_perl/1.29
Last-Modified: Tue, 18 May 2010 15:05:12 GMT
ETag: "55c1-0-4bf2aca8"
Accept-Ranges: bytes
Content-Length: 0
Connection: close
Content-Type: text/html; charset=iso-8859-1
Connection closed by foreign host.
完璧。MZK-WDPR のこっち側(ルータ側)で www.planex.co.jp の IP をでっち
あげて、設定した knoppix のPC に向ける。
root@Knoppix# telnet 192.168.111.1
Trying 192.168.111.1...
Connected to 192.168.111.1.
Escape character is '^]'.
PCI.com login: admin
Password:
BusyBox v1.12.1 (2010-04-08 10:45:39 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.
# echo "192.168.0.3 www.planex.co.jp" >> /etc/hosts
# ping -c 1 www.planex.co.jp
PING www.planex.co.jp (192.168.0.3): 56 data bytes
64 bytes from 192.168.0.3: seq=0 ttl=64 time=1.129 ms
--- www.planex.co.jp ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 1.129/1.129/1.129 ms
# wget -O - http://www.planex.co.jp/
Connecting to www.planex.co.jp (192.168.0.3:80)
- 100% |*****************************| 0 --:--:-- ETA
これで準備が整った。あっち側で、ファームウェアのアップデートをしてみる。
が、うまくいかない。こっち側の設定を変更して、手っ取り早く /etc/hosts の
追加した行を削除して、knoppix 側の IP を www.planex.co.jp の IP である
210.197.79.10 にして、MZK-WDPR の WAN 側に knoppix の PC を接続すると、
やっとファームウェアのアップデートができるようになった。再起動したが、
telnet での接続ができず。
knoppix@Knoppix$ telnet 192.168.111.100
Trying 192.168.111.100...
Connected to 192.168.111.100.
Escape character is '^]'.
ポートは空いてるみたいだけど、応答がないんだよね。どうしたものか。
■ 5/21
昨日の telnet がログインできない問題。-l オプションで色々指定してみたり、
xinetd 経由で起動してみたけど、現象は変わらず。並行して、ftp デーモンを
起動させることも行う。xinetd 経由での vsftpd なので、とりあえず xinetd を
起動するだけで、ftp の動作はした。しかし、一般ユーザのログインはできず、
さらに anonymous で入っても /mnt/sknand ディレクトリ以下の参照。これじゃ、
USB で PC に接続したのと変わらない。/etc/vsftpd/vsftpd.conf の設定を変更
した。
local_root=/mnt/sknand
anon_root=/mnt/sknand
なのを。
local_root=/
anon_root=/
にしてみた。
knoppix@Knoppix$ ftp 192.168.111.100
Connected to 192.168.111.100.
220 Welcome to PDF FTP service.
Name (192.168.111.100:knoppix): anonymous
500 OOPS: vsftpd: refusing to run with writable anonymous root
Login failed.
だって。一般ユーザでは、引き続き
530 Login incorrect.
念のため、3種類のユーザを作ってみた。
・パスワードなしのユーザ
・/etc/passwd にハッシュのパスワードがあるユーザ
・/etc/shadow にハッシュのパスワードがあるユーザ
どのユーザでもログインできず。どうしてだろう。
■ 5/22
今日も何度か loop デバイスの mount と umount を繰り返していた。すると、
mount: could not find any free loop device
なんてメッセージが出た。調べると、knoppix では loop デバイス /dev/loopx
は8つしかない。つまり、8回マウントすると umount していても上記のエラーが
出るみたい。使ってないので再利用できないかと調べてみたら。
losetup -d /dev/loop0
で再利用できるみたい。でも、今どの loop デバイスを使っていて、どのデバイス
が umount したのかわからないな、なんて考えてやってみたら、現在使っている
デバイスは
# losetup -d /dev/loop3
ioctl: LOOP_CLR_FD: Device or resource busy
と出て losetup -d ができない。とりあえず、loop デバイスの再利用はできた
ので、作業の再開。
■ 5/23
一昨日の続き。ftp に一般ユーザで入れない+anonymous では / へ行けないという
状態。vsftpd version 2.0.7 のソースを眺めること20分。一般ユーザでログイン
できないのは、/etc/shells がないからだ、と気が付いた。/etc/shells を作成
してもよいけど、/etc/vsftpd/vsftpd.conf に
check_shell=NO
を追加して、一般ユーザでログインすることができた。/etc/init.d/rcS での
コマンド実行と組み合わせて、色々実行はできた。
# cat /proc/cpuinfo
Processor Number : 0
Processor version : 0 (ARCtangent A4 processor family)
CPU speed : 162.00 Mhz
Bogo MIPS : 80.89
Timers: TIMER1 TIMER0
INT_VECBASE: 0x80008000
PERIPHERAL_BASE: 0x0
Icache:(type/size/length): 2 way/32KB/32B
Dcache:(type/size/length): 4 way/32KB/32B
MMU:(Version/uDTLB/uITLB/JTLB/JA):Extensions:CRC TEL_INSTR MAC SWAP NORM
MIN/MAX MUL(32*32) BARREL
# df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/sknandc 9912 9120 280 97% /
none 6392 24 6368 0% /tmp
/dev/sknande 40928 1680 39248 4% /mnt/umdi0
/dev/sknandf 61302 31006 30296 51% /mnt/umdi1
/dev/sknandg 40928 1680 39248 4% /mnt/umdi2
/dev/sknandh 61302 35782 25520 58% /mnt/umdi3
/dev/sknandi 10212 4 10208 0% /mnt/umdi4
# ifconfig
eth0 Link encap:Ethernet HWaddr 00:22:CF:xx:xx:xx
inet addr:192.168.111.100 Bcast:192.168.111.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11 errors:0 dropped:0 overruns:0 frame:0
TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1718 (1.6 KiB) TX bytes:1780 (1.7 KiB)
eth0:1 Link encap:Ethernet HWaddr 00:22:CF:xx:xx:xx
inet addr:10.88.88.95 Bcast:10.88.88.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
な、感じ。dmesg は、えらい量のデバッグメッセージみたいなのを吐いている
みたいで、頭の部分がなかったので省略。ps コマンドの結果は。
# ps -ef
PID Uid VSZ Stat Command
1 root 1160 SW init
2 root Z [splash]
3 root SWN [ksoftirqd/0]
4 root SW< [events/0]
5 root SW< [khelper]
6 root SW< [kthread]
7 root SW< [kblockd/0]
8 root SW< [khubd]
9 root SW [pdflush]
10 root SW [pdflush]
11 root SW< [kswapd0]
12 root SW< [aio/0]
13 root SW< [krfcommd]
15 root 1160 SW init
16 root 1256 SW /bin/sh /etc/init.d/rcS
30 root 784 SW /sky/respawn_tardis
31 root 1544 DW tardis
33 root 1280 SW /sbin/xinetd
35 root 1160 SW /usr/sbin/telnetd
36 root 1160 RW /bin/ps -ef
telnetd は動いているみたいなんだけど、どうしてログインメッセージがでない
のだろう。
■ 5/24
MZK-WDPR は、2G の MLC NAND フラッシュが搭載されているので、メールサーバに
してしまおうかと少し考えていた。しかし、あっち側のCPU のクロックが 160MHz
だし、メモリも 32M とかなり寂しい。クロスコンパイル環境を少し作ろうかと
binutils を用意してやってみたけど、いきなり大変そうだし。メールサーバの
計画はやめることにした。そもそもマルチメディア用の CPU なので、用途向き
ではないし。で、ちょうど良い画面が付いているのから、Android が入れば凄く
遊べそうなのだけど、arc じゃ Android 入らないし。どうしたもんかの、と少し
考えている状況。
■ 5/25
なんだか、BBC の週末にあった Big Weekend が終わってから、rtsp での聴取が
できなくなった。iPlayer 以外での受信ができなくなる、という制限の一環なの
だろうか。ちょっと色々調べてみたけど、解決策は見つからず。これは iPlayer
を使うしかないみたい。残念。
■ 5/26
NetBSD 5.0.2 の PC で起動している httpd の設定の変更。cgi の実行ができない
みたいなので、実行させる。とりあえず、得体のしれない httpd を確認する。
[toyota@mustafar]% ps axw | grep httpd
268 ? Is 0:00.00 /usr/libexec/httpd -U _httpd -b /var/www
手動で叩いてみる。
[toyota@mustafar]% /usr/libexec/httpd -v
httpd: option requires an argument -- v
usage: httpd [options] slashdir [myname]
options:
-s always log to stderr
-u enable ~user/public_html support
-p dir change `public_html' directory name]
-M arg t c c11 add this mime extenstion
-C arg prog add this CGI handler
-c cgibin enable cgi-bin support in this directory
-b background and go into daemon mode
-f keep daemon mode in the foreground
-i address bind on this address (daemon mode only)
-I port bind on this port (daemon mode only)
-S version set server version string
-t dir chroot to `dir'
-U username change user to `user'
-e don't clean the environment (-t and -U only)
-v virtualroot enable virtual host support in this directory
-r make sure sub-pages come from this host via referrer
-X enable automatic directory index support
-H hide files starting with a period (.) in index mode
-x index change default `index.html' file name
-Z cert privkey specify path to server certificate and private key file
in pem format and enable bozohttpd in SSL mode
httpd failed to start
設定は、設定ファイルで行うのではなく、全てオプションで行うみたい。起動
させるときの設定ファイル /etc/defaults/rc.conf の。
httpd=YES httpd_flags=""
httpd_wwwdir="/var/www"
httpd_wwwuser="_httpd"
部分で -c オプションの設定をすれば良いのかな。確認のため、httpd の man を
眺めていたら。
HISTORY
The httpd program was first written in perl, based on another perl http
server called ``tinyhttpd''. It was then rewritten from scratch in perl,
and then once again in C. It was known for many years as ``bozohttpd''.
``bozohttpd'' version 20060517 was integrated into NetBSD 5.0 as httpd.
The focus has always been simplicity and security, with minimal features
and regular code audits. This manual documents httpd version 20080303.
ということらしい。httpd のアクセスログはどこに吐かれるのかしらべたら、
/var/log/xferlog だった。
May 26 15:59:54 mustafar httpd[20880]: got request ``GET /''
from host localhost to port 80
May 26 16:19:03 mustafar httpd[21532]: got request ``GET / HTTP/1.1''
from host localhost to port 80
こんな感じ。User-Agent を出して欲しいなぁ。あと、できれば Referer も。
ま、アクセス解析は Google Analytics にやらせているので、そんなに必要でも
ないけど。
■ 5/27
今度の旅行でデジカメを買ってしまおうか、と調べていた。多分買わないけど。
で、GPS 付きのデジカメがあったので、調べてみた。見つけたのは3機種。
各メーカの web ページのサンプル写真の EXIF を見てみた。P6000 のサンプル
画像は GPS 情報が入っていない。折角 GPS 機能があるのに何で入ってないの?
という気分。そんなことは置いて、EXIF 情報を見てみると、GPS Date Stamp とか
GPS Time Stamp が入っていて、デジカメの時計がずれていても正確な時刻が記録
されるみたい。これはありがたい。web ページで拾った iPhone の GPS 記録が
ある写真も入れて色々見てみたら、TZ10 以外はどの方角を向いて撮影をされた
のかも記録されていた。さらに DSC-HX5V は進行方向までもが。何だかすごいと
思ったけど、良く考えるとそんな記録がある分、余計なデータ量を使ってしまう
んだよなと。でも、便利そうだなぁ。電池の持ちが良ければ、買おうか悩む。
■ 5/28
iPad が発売されたようで、巷は騒いでいるようである。あれって、一体どんな
人が使うのだろうと考えてしまう。通勤に毎日持っていくには大きくて邪魔だし、
電車で本代わりにするにも重すぎ、家で使うなら PC があるのでいらないし。
携帯電話以上、ノート PC 未満だけど、通話できないから両方の良いところが
無くなったような気もする。機能的に画期的という感じもしないけど、安いなら
買っても良いかな、と思うぐらい。2万円を切ったら、ちょっと考えようかな。
■ 5/29
Skype を起動したら、見慣れないウィンドウが出た。
Skype - 便利なヒント
SkypeNames2.exeがSkypeの使用をリクエストしています
アクセスを許可 / アクセスを拒否
全くもって、便利なヒント、じゃない気がするけど、そもそもこれは何か調べて
みた。この SkypeNames2.exe は、C:\Program Files\Skype\Toolbars\Shared に
あった。そんなに新しいファイルじゃないので、今日突然出てきた理由は不明。
それ以上わからなかったので、web で調べると、ブラウザと連携するものらしい。
ブラウザ上の電話番号とかをリンクにして、クリックすると Skype が起動する
ようなプログラムみたい。いらないので、拒否した。
■ 5/30
デジカメの Jpeg を眺めて思っていたのだけど、格納されているサムネイルって
大きさが 160×120 がほとんどで、これって固定なのかなと EXIF の仕様なんかを
眺めてみた。このサムネイルは EXIF 2.0 に規定されたもので、大きさの制限は
特にないみたい。サンプルの EXIF を見ると 80×60 なので、固定でもないみたい
だし。ただ、サイズの制限があって、全ての EXIF(?) で 64kb 以内じゃないと
駄目ということみたい。このぐらいあったら、640×480 ぐらいいけそう。元の
画像より大きいサムネイルとかできそうだし。
ついでに、GPS 周りも調べてみた。exif.org のページでは、EXIF 2.1 と EXIF
2.2 とが見られるのだけど、1998年の EXIF 2.1 で既に GPS についての記述が
あった。すごい先見の明だな、と感心した。
■ 5/31
27日に GPS のことを調べたけど、色々考えていたら準天頂のことを思い出した。
そう言えば、国産の準天頂を三菱が作っていた気がしたな、と。で、少し調べて
みると、既に衛星は種子島にあって、夏に打ち上げらしい。名前は「みちびき」
だって。必ず真上に近い場所に衛星があるので、あとアメリカの GPS 衛星が2つ
捕捉できれば位置が割り出せる。これからの製品で対応できれば、精度がかなり
あがるのだろうか。楽しみな気がする。
|