■ 8/1
最近、使っている WX320K の電池がすぐなくなる。旅行中は、電波入らないから
電源が切れていても、あまり気にしてなかったけど、普段大事なときに使えないと
困る。そもそもいつから使っているのか調べてみたら、NTT DoCoMo が PHS の
停波をした2008年1月から。なので、2年半使っていることになる。新機種に変更
しても良いけど、WILLCOM があんな状況なので少しためらってしまう。HYBRID
W-ZERO3 のSIM 側で音声通話ができれば、HYBRID W-ZERO3 にしたんだけど、駄目
そうなので、電池だけ替えようかな。時間を見つけて WILLCOM だな。
■ 8/2
なんだか、仕事が IT 関係というだけで、web ページのアクセス数が少ないとか
なんとかの相談があったりして。デザインとかやったことがないし、全くの畑違い
なのだけど。見るだけ見てみたけど、何でアクセスカウンターなんか付けたがる
のかな、とかそんな感じが多々。まずは、検索エンジンに登録しないと始まらない
けど、それ以前の問題なんだよね。ま、他人のことを言えたようなページを書いて
いるわけじゃないけど。
■ 8/3
1か月ほど前に、ある人から SD カードを預かったのだけど、PC に差し込んだ
瞬間に Avira AntiVir が反応した。中を見ると、k.exe というファイルがある
のと、autorun で起動させているようなのと。この SD から2つのファイルを
消せばとりあえず問題ないのだけど、元の SD の持ち主にどう駆除の方法を伝える
ものかと考える。Avira とか Avast とか Microsoft Security Essentials なんて
インストールするのは面倒そうだし。
McAfee FreeScan
http://www.mcafee.com/japan/mcafee/home/freescan.asp
とか良いかなと思ったけど、hosts ファイルとかを書き換えられている気もする
ので悩みどころ。
@niftyウイルスチェックサービス
http://www.nifty.com/security/vcheck/
を教えてあげておこうかな。
■ 8/4
ちょっと CentOS 5.4 な環境で sshfs を使おうかと。fuse が入っているかの
確認をしてみる。
[toyota@zonama]$ find /lib/modules -name "*fuse*"
/lib/modules/2.6.18-164.el5PAE/kernel/fs/fuse
/lib/modules/2.6.18-164.el5PAE/kernel/fs/fuse/fuse.ko
入ってそうなので、sshfs を落としてくる。
[toyota@zonama]$ wget http://sourceforge.net/projects/fuse/files/sshfs-fuse/2.2
/sshfs-fuse-2.2.tar.gz/download
2回 302 のリダイレクトでダウンロードした。
[toyota@zonama]$ tar xvfz sshfs-fuse-2.2.tar.gz
[toyota@zonama]$ cd sshfs-fuse-2.2
[toyota@zonama]$ ls
configure はあるみたい。実行してみた。
[toyota@zonama]$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking whether gcc and cc understand -c and -o together... yes
checking for library containing dlsym... -ldl
checking OpenSSH version... 4.3 < 4.4, enabling NODELAY workaround
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for SSHFS... configure: error: Package requirements (fuse >= 2.2 glib-
2.0 gthread-2.0) were not met:
No package 'fuse' found
No package 'glib-2.0' found
No package 'gthread-2.0' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables SSHFS_CFLAGS
and SSHFS_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
なんか、fuse と glib と gthread が見つからないって。ライブラリ周りが入って
いるか確認してみた。
[toyota@zonama]$ ls /lib/libfuse*
/lib/libfuse.so.2 /lib/libfuse.so.2.7.4
[toyota@zonama]$ ls /lib/libglib*
/lib/libglib-2.0.so.0 /lib/libglib-2.0.so.0.1200.3
[toyota@zonama]$ ls /lib/libgthread*
/lib/libgthread-2.0.so.0 /lib/libgthread-2.0.so.0.1200.3
入ってそうな感じ。無理やり configure を通して、make を実行してみた。
[toyota@zonama]$ vi configure
[toyota@zonama]$ ./configure
~snip~
[toyota@zonama]$ make
~snip~
sshfs.c:12:18: error: fuse.h: No such file or directory
sshfs.c:36:18: error: glib.h: No such file or directory
~snip~
ということで、ヘッダファイルがないみたい。変な位置にヘッダファイルがある
かもしれないので、見てみた。
[toyota@zonama]$ find /usr/include -name "fuse.h"
/usr/include/linux/fuse.h
[toyota@zonama]$ find /usr/include -name "glib.h"
/usr/include/glib-1.2/glib.h
あるのはあるけど、これじゃ駄目っぽい気がする。入っている rpm の確認をして
みた。
[toyota@zonama]$ rpm -qa | grep fuse
fuse-2.7.4-8.el5
[toyota@zonama]$ rpm -qa | grep glib
glibc-devel-2.5-42.el5_4.3
dbus-glib-0.73-8.el5
glibc-common-2.5-42.el5_4.3
glib2-2.12.3-4.el5_3.1
avahi-glib-0.6.16-6.el5
glibc-2.5-42.el5_4.3
NetworkManager-glib-0.7.0-9.el5
glibc-headers-2.5-42.el5_4.3
gthread での検索では、何も見つからなかった。fuse とか glib は -devel の
パッケージみたいなものが必要なのでしょう。yum が入っていたので、yum で
検索して、インストールしてみた。
[toyota@zonama]$ yum search fuse
~snip~
========================== Matched: fuse ==========================
fuse.i386 : File System in Userspace (FUSE) utilities
fuse-devel.i386 : File System in Userspace (FUSE) devel files
fuse-libs.i386 : File System in Userspace (FUSE) libraries
psmisc.i386 : Utilities for managing processes on your system.
[toyota@zonama]$ su
[root@zonama]# yum install fuse-devel fuse-libs
~snip~
fuse 周りはインストールできた。次は glib 。
[toyota@zonama]$ yum search glib
~snip~
========================== Matched: glib ==========================
NetworkManager-glib.i386 : Libraries for adding NetworkManager support to appli
cations that use glib.
NetworkManager-glib-devel.i386 : Header files for adding NetworkManager support
to applications that use glib.
compat-glibc.i386 : Compatibility C library
compat-glibc-headers.i386 : Header files for development using standard C libra
ries.
glib.i386 : A library of handy utility functions.
glib-devel.i386 : The GIMP ToolKit (GTK+) and GIMP Drawing Kit (GDK) support li
brary.
avahi-glib.i386 : Glib libraries for avahi
avahi-glib-devel.i386 : Libraries and header files for avahi glib development
dbus-glib.i386 : GLib bindings for D-Bus
dbus-glib-devel.i386 : Libraries and headers for the D-Bus GLib bindings
glib-java.i386 : Base Library for the Java-GNOME libraries
glib-java-devel.i386 : Compressed Java source files for glib-java.
glib2.i386 : A library of handy utility functions
glib2-devel.i386 : The GIMP ToolKit (GTK+) and GIMP Drawing Kit (GDK) support l
ibrary
glibc.i686 : The GNU libc libraries.
glibc.i386 : The GNU libc libraries.
glibc-common.i386 : Common binaries and locale data for glibc
glibc-devel.i386 : Object files for development using standard C libraries.
glibc-headers.i386 : Header files for development using standard C libraries.
glibc-utils.i386 : Development utilities from GNU C library
gob2.i386 : GOB2, The GObject Builder
gtk-doc.noarch : API documentation generation tool for GTK+ and GNOME
gtk-sharp2-gapi.i386 : Glib and GObject C source parser and C generator for the
creation and maintenance of managed bindings for Mono and .NET
jakarta-taglibs-standard.i386 : An open-source implementation of the JSP Standa
rd Tag Library
jakarta-taglibs-standard-javadoc.i386 : Javadoc for jakarta-taglibs-standard
kernel-headers.i386 : Header files for the Linux kernel for use by glibc
libsoup.i386 : Soup, an HTTP library implementation
nss_db.i386 : An NSS library for the Berkeley DB.
yp-tools.i386 : NIS (or YP) client programs.
yum-protect-packages.noarch : Yum plugin to prevents Yum from removing itself a
nd other protected packages
とりあえず、glib と glib-devel をインストールすることに。
[toyota@zonama]$ su
[root@zonama]# yum install glib glib-devel
~snip~
glib のインストール完了。次は gthread 。
[toyota@zonama]$ yum search gthread
~snip~
Warning: No matches found for: gthread
No Matches found
見つからない。ちょっと web で調べてみたら、gthread は glib に入っている
ものらしい。なので、飛ばして、configure の再実行。
[toyota@zonama]$ ./configure
~snip~
checking for SSHFS... configure: error: Package requirements (fuse >= 2.2 glib-
2.0 gthread-2.0) were not met:
No package 'glib-2.0' found
No package 'gthread-2.0' found
~snip~
fuse のパッケージが入ったことは確認できた。glib がうまく入ってないみた。
pkg-config で確認してみた。
[toyota@zonama]$ /usr/bin/pkg-config --modversion glib-2.0
Package glib-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `glib-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'glib-2.0' found
なんか、わかった気がした。インストールする必要があったのは、glib, glib-devel
じゃなくて glib2, glib2-devel だったみたい。glib2 は既に入っているのを
確認しているので、glib2-devel をインストールする。
[toyota@zonama]$ su
[root@zonama]# yum install glib2-devel
~snip~
インストールできた。pkg-config で確認。
[toyota@zonama]$ /usr/bin/pkg-config --modversion glib-2.0
2.12.3
[toyota@zonama]$ /usr/bin/pkg-config --modversion gthread-2.0
2.12.3
大丈夫そうなので、configure を実行。
[toyota@zonama]$ ./configure
~snip~
config.status: creating Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
問題なく通った。make も問題なく、sshfs ができた。ちょっと時間かかりすぎ
だな。
■ 8/5
ARC CPU Linux のクロスコンパイル環境なんかを作ろうと。sourceforge から
ARC Rel 2.0 という少し古い toolchain をダウンロードしてきた。古いものを
使うのは、理由があって。これを CentOS の Linux 機でコンパイルしてみた。
cygwin でも良かったけど、Linux のクロスコンパイルなので、Linux でやった
方が融和性が高いかな、と少しだけ期待して。
[toyota@zonama]$ wget -q http://downloads.sourceforge.net/project/arc-linux/ARC
%20GNU%20Toolchain/ARC%20Rel%202.0/ARC_rel2.0_sourceforge.tar.gz
[toyota@zonama]$ tar xfz ARC_rel2.0_sourceforge.tar.gz
[toyota@zonama]$ cd ARC_rel2.0_sourceforge
ここでちょっと PDF 文章を読む。build_elf32.sh を実行すれば良いみたい。
[toyota@zonama]$ mkdir /tmp/arc
[toyota@zonama]$ ./build_elf32.sh /tmp/arc
固まったかと思ったけど、なんとか動いている様子。結局20分ぐらい待たされた。
その間、PC がかなり重くなった。cygwin でやらなくて良かった、と思って。
出来上がったバイナリを見たが、全然足りない気がする。
[toyota@zonama]$ ls /tmp/arc
bin include info lib libexec man share
[toyota@zonama]$ ls /tmp/arc/bin
arc-elf32-gdb arc-elf32-insight tclsh8.4
arc-elf32-gdbtui arc-elf32-run wish8.4
ちょっと、スクリプトに目を通して見る。
[toyota@zonama]$ vi build_elf32.sh
~snip~
INSTALLDIR=$1
#build binutils
cd binutils/build
../src/configure --prefix=$INSTALLDIR --target=arc-elf32 --disable-werror > ../
../log.txt 2>> ../../log.txt
make >> ../../log.txt 2>> ../../log.txt
make install >> ../../log.txt 2>> ../../log.txt
~snip~
ログに吐いているみたいなので、見てみたけどサイズがでかくて、どこが問題
なのかわからない。
[toyota@zonama]$ ls -l log.txt
-rw-rw-r-- 1 toyota toyota 1000388 8月 5 17:35 log.txt
仕方ない、手動で実行してみる。
[toyota@zonama]$ cd binutils/build
[toyota@zonama]$ ../src/configure --prefix=/tmp/arc --target=arc-elf32
~snip~
[toyota@zonama]$ make
~snip~
WARNING: `makeinfo' is missing on your system. You should only need it if
you modified a `.texi' or `.texinfo' file, or any other file
indirectly affecting the aspect of the manual. The spurious
call might also be the consequence of using a buggy `make' (AIX,
DU, IRIX). You might want to install the `Texinfo' package or
the `GNU make' package. Grab either from any GNU archive site.
make[3]: *** [bfd.info] Error 1
~snip~
原因が判明した。makeinfo がないみたい。makeinfo は Texinfo に入っている
とのことなので、ちょっと調べてみる。
[toyota@zonama]$ rpm -qa | grep texinfo
やっぱり入ってないようなので、インストールする。
[toyota@zonama]$ yum search texinfo
~snip~
============================== Matched: texinfo ==============================
info.i386 : A stand-alone TTY-based reader for GNU texinfo documentation.
texi2html.noarch : A highly customizable texinfo to HTML and other formats tran
slator
texinfo.i386 : Tools needed to create Texinfo format documentation files.
texinfo-tex.i386 : Tools for fromating Texinfo documentation files using TeX
[toyota@zonama]$ su
[root@zonama]# yum install texinfo
~snip~
[toyota@zonama]$ make
~snip~
エラーは出なくなった。最初からやり直して、問題なく完了。
■ 8/6
ARC CPU Linux のクロスコンパイル環境ができたので、テストしてみた。いくつか
エンディアンなんかのオプションが指定できるみたいなので、いくつかやって
みた。
[toyota@zonama]$ arc-elf32-gcc -EL -mA6 -o A6lsb test.c
[toyota@zonama]$ arc-elf32-gcc -EB -mA6 -o A6msb test.c
[toyota@zonama]$ arc-elf32-gcc -EL -mA7 -o A7lsb test.c
[toyota@zonama]$ arc-elf32-gcc -EB -mA7 -o A7msb test.c
これを file コマンドなんかで見て、どう違うのか比較をしようと思ったが。
[toyota@zonama]$ file A6lsb
A6lsb: ELF 32-bit LSB executable, version 1 (SYSV), statically linked, not stri
pped
な感じで、全てマシンタイプを認識してくれない。手元の NetBSD では表示される
ので、file-5.04 をダウンロードしてきてコンパイルした。これで実行してみた。
[toyota@zonama]$ ./src/file -m magic/magic.mgc /tmp/A*
/tmp/A6lsb: ELF 32-bit LSB executable, ARC Cores Tangent-A5, version 1 (SYSV),
statically linked, not stripped
/tmp/A6msb: ELF 32-bit MSB executable, version 1 (SYSV), statically linked, not
stripped
/tmp/A7lsb: ELF 32-bit LSB executable, ARC Cores Tangent-A5, version 1 (SYSV),
statically linked, not stripped
/tmp/A7msb: ELF 32-bit MSB executable, version 1 (SYSV), statically linked, not
stripped
ビッグエンディアンだと、ARC Cores Tangent-A5 だと認識してくれないみたい。
ARC は bi-endian だと思っていたけど、昔は違っていたのかな。MZK-WDPR の
向こう側に入っている busybox を file してみた。
[toyota@zonama]$ ./src/file -m magic/magic.mgc /tmp/rootfs0/bin/busybox
/tmp/rootfs0/bin/busybox: ELF 32-bit LSB executable, ARC Cores Tangent-A5, vers
ion 1 (SYSV), dynamically linked (uses shared libs), stripped
なので、リトルエンディアンということろまでわかった。A6 と A7 との違いが
わからないので、readelf してみた。
[toyota@zonama]$ readelf -h A6lsb
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: <unknown>: 5d
Version: 0x1
Entry point address: 0x114
Start of program headers: 52 (bytes into file)
Start of section headers: 116520 (bytes into file)
Flags: 0x2
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 2
Size of section headers: 40 (bytes)
Number of section headers: 27
Section header string table index: 24
[toyota@zonama]$ readelf -h A6msb
ELF Header:
Magic: 7f 45 4c 46 01 02 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, big endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: <unknown>: 5d
Version: 0x1
Entry point address: 0x114
Start of program headers: 52 (bytes into file)
Start of section headers: 112828 (bytes into file)
Flags: 0x2
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 2
Size of section headers: 40 (bytes)
Number of section headers: 27
Section header string table index: 24
[toyota@zonama]$ readelf -h A7lsb
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: <unknown>: 5d
Version: 0x1
Entry point address: 0x114
Start of program headers: 52 (bytes into file)
Start of section headers: 114984 (bytes into file)
Flags: 0x3
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 2
Size of section headers: 40 (bytes)
Number of section headers: 28
Section header string table index: 25
[toyota@zonama]$ readelf -h A7msb
ELF Header:
Magic: 7f 45 4c 46 01 02 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, big endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: <unknown>: 5d
Version: 0x1
Entry point address: 0x114
Start of program headers: 52 (bytes into file)
Start of section headers: 115136 (bytes into file)
Flags: 0x3
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 2
Size of section headers: 40 (bytes)
Number of section headers: 28
Section header string table index: 25
A6 と A7 の違いは Flags の部分のような気がするけど、気がするだけなのかも
しれない。前述の busybox は。
[toyota@zonama]$ readelf -h /tmp/rootfs0/bin/busybox
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: <unknown>: 5d
Version: 0x1
Entry point address: 0x139ec
Start of program headers: 52 (bytes into file)
Start of section headers: 199016 (bytes into file)
Flags: 0x3
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 5
Size of section headers: 40 (bytes)
Number of section headers: 23
Section header string table index: 22
となっていた。この CentOS の readelf を新しくしたら、Machine って出てくるの
かな。
■ 8/7
昨日の続きで、新しい readelf をダウンロードしてきた。実際には、readelf
じゃなくて、binutils なのだけど。binutils-2.20.1 の中身の readelf 部分を
覗いてみた。binutil/readelf.c の中に get_machine_name といういかにもと
いう名前の関数があって。
switch (e_machine)
{
case EM_NONE: return _("None");
case EM_M32: return "WE32100";
case EM_SPARC: return "Sparc";
case EM_SPU: return "SPU";
case EM_386: return "Intel 80386";
case EM_68K: return "MC68000";
case EM_88K: return "MC88000";
case EM_486: return "Intel 80486";
case EM_860: return "Intel 80860";
case EM_MIPS: return "MIPS R3000";
case EM_S370: return "IBM System/370";
case EM_MIPS_RS3_LE: return "MIPS R4000 big-endian";
case EM_OLD_SPARCV9: return "Sparc v9 (old)";
case EM_PARISC: return "HPPA";
case EM_PPC_OLD: return "Power PC (old)";
case EM_SPARC32PLUS: return "Sparc v8+" ;
case EM_960: return "Intel 90860";
case EM_PPC: return "PowerPC";
case EM_PPC64: return "PowerPC64";
case EM_V800: return "NEC V800";
case EM_FR20: return "Fujitsu FR20";
case EM_RH32: return "TRW RH32";
case EM_MCORE: return "MCORE";
case EM_ARM: return "ARM";
case EM_OLD_ALPHA: return "Digital Alpha (old)";
case EM_SH: return "Renesas / SuperH SH";
case EM_SPARCV9: return "Sparc v9";
case EM_TRICORE: return "Siemens Tricore";
case EM_ARC: return "ARC";
case EM_H8_300: return "Renesas H8/300";
case EM_H8_300H: return "Renesas H8/300H";
case EM_H8S: return "Renesas H8S";
case EM_H8_500: return "Renesas H8/500";
case EM_IA_64: return "Intel IA-64";
case EM_MIPS_X: return "Stanford MIPS-X";
case EM_COLDFIRE: return "Motorola Coldfire";
case EM_68HC12: return "Motorola M68HC12";
case EM_ALPHA: return "Alpha";
case EM_CYGNUS_D10V:
case EM_D10V: return "d10v";
case EM_CYGNUS_D30V:
case EM_D30V: return "d30v";
case EM_CYGNUS_M32R:
case EM_M32R: return "Renesas M32R (formerly Mitsubishi M32r)";
case EM_CYGNUS_V850:
case EM_V850: return "NEC v850";
case EM_CYGNUS_MN10300:
case EM_MN10300: return "mn10300";
case EM_CYGNUS_MN10200:
case EM_MN10200: return "mn10200";
case EM_CYGNUS_FR30:
case EM_FR30: return "Fujitsu FR30";
case EM_CYGNUS_FRV: return "Fujitsu FR-V";
case EM_PJ_OLD:
case EM_PJ: return "picoJava";
case EM_MMA: return "Fujitsu Multimedia Accelerator";
case EM_PCP: return "Siemens PCP";
case EM_NCPU: return "Sony nCPU embedded RISC processor";
case EM_NDR1: return "Denso NDR1 microprocesspr";
case EM_STARCORE: return "Motorola Star*Core processor";
case EM_ME16: return "Toyota ME16 processor";
case EM_ST100: return "STMicroelectronics ST100 processor";
case EM_TINYJ: return "Advanced Logic Corp. TinyJ embedded processor";
case EM_FX66: return "Siemens FX66 microcontroller";
case EM_ST9PLUS: return "STMicroelectronics ST9+ 8/16 bit microcontrolle
r";
case EM_ST7: return "STMicroelectronics ST7 8-bit microcontroller";
case EM_68HC16: return "Motorola MC68HC16 Microcontroller";
case EM_68HC11: return "Motorola MC68HC11 Microcontroller";
case EM_68HC08: return "Motorola MC68HC08 Microcontroller";
case EM_68HC05: return "Motorola MC68HC05 Microcontroller";
case EM_SVX: return "Silicon Graphics SVx";
case EM_ST19: return "STMicroelectronics ST19 8-bit microcontroller";
case EM_VAX: return "Digital VAX";
case EM_AVR_OLD:
case EM_AVR: return "Atmel AVR 8-bit microcontroller";
case EM_CRIS: return "Axis Communications 32-bit embedded processor";
case EM_JAVELIN: return "Infineon Technologies 32-bit embedded cpu";
case EM_FIREPATH: return "Element 14 64-bit DSP processor";
case EM_ZSP: return "LSI Logic's 16-bit DSP processor";
case EM_MMIX: return "Donald Knuth's educational 64-bit processor";
case EM_HUANY: return "Harvard Universitys's machine-independent objec
t format";
case EM_PRISM: return "Vitesse Prism";
case EM_X86_64: return "Advanced Micro Devices X86-64";
case EM_L1OM: return "Intel L1OM";
case EM_S390_OLD:
case EM_S390: return "IBM S/390";
case EM_SCORE: return "SUNPLUS S+Core";
case EM_XSTORMY16: return "Sanyo Xstormy16 CPU core";
case EM_OPENRISC:
case EM_OR32: return "OpenRISC";
case EM_CRX: return "National Semiconductor CRX microprocessor";
case EM_DLX: return "OpenDLX";
case EM_IP2K_OLD:
case EM_IP2K: return "Ubicom IP2xxx 8-bit microcontrollers";
case EM_IQ2000: return "Vitesse IQ2000";
case EM_XTENSA_OLD:
case EM_XTENSA: return "Tensilica Xtensa Processor";
case EM_LATTICEMICO32: return "Lattice Mico32";
case EM_M32C_OLD:
case EM_M32C: return "Renesas M32c";
case EM_MT: return "Morpho Techologies MT processor";
case EM_BLACKFIN: return "Analog Devices Blackfin";
case EM_NIOS32: return "Altera Nios";
case EM_ALTERA_NIOS2: return "Altera Nios II";
case EM_XC16X: return "Infineon Technologies xc16x";
case EM_CYGNUS_MEP: return "Toshiba MeP Media Engine";
case EM_CR16:
case EM_CR16_OLD: return "National Semiconductor's CR16";
case EM_MICROBLAZE: return "Xilinx MicroBlaze";
case EM_MICROBLAZE_OLD: return "Xilinx MicroBlaze";
default:
snprintf (buff, sizeof (buff), _("<unknown>: 0x%x"), e_machine);
return buff;
}
あーあーあーという感じで。目的の ARC っぽいのは。
case EM_ARC: return "ARC";
なのだけど、どうなのだろうと、EM_ARC の定義は include/elf/common.h でして
いて、その中で ARC CPU っぽいのが2つ見つかった。
#define EM_ARC 45 /* ARC Cores */
#define EM_ARC_A5 93 /* ARC Cores Tangent-A5 */
昨日の readelf の結果を見る限り、Machine は 5d なので、93 の方になる。
定義はしているけど、readelf は EM_ARC_A5 の応答をしないみたい。この定義は
誰が使っているか調べてみたら、誰も使っていない。せっかく定義しているの
だから、readelf で使えば良いのに。
■ 8/8
昨日の elf の Machine 一覧を眺めていたら、懐かしい CPU とか聞いたことが
ない CPU とか、色々あって調べていたら、いつの間にか NEC エレクトロニクスと
ルネサステクノロジ合併して、ルネサスエレクトロニクスになったんだって。
どちらも平成21年3月期の売り上げがかなり落ち込んでいるので、そんな感じの
合併だったのでしょう。それにしても、V850 から、H8 から SH4 から M32C まで、
なんでもありの感じだな。ラインナップを半分ぐらいに減らさないと、混乱する
だけな気がする。
■ 8/9
6日の続きに戻って、ARC CPU 用のクロスコンパイル環境を作成したが、CPU が
どの CPU なのかわからないので、CPU 向けのオプションがわからない。MZK-WDPR
の向こう側での cpuinfo は。
# 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
web なんかで調べると、この CPU のロードマップは、A4 -> A5 -> 600 -> 700 と
進化しているみたい。向こう側の kernel の中を覗くと、cpuinfo の部分(?)用に
5つ用意されていた。
ARCtangent A4 processor family
ARCtangent A5 processor family
ARC 600 processor family
ARC 700 processor family
ARC Unkown processor family
file コマンドの判定では A5 、cpuinfo の結果では A4 、クロスコンパイルの
オプションは 600 と 700 用しかない。バイナリ作って、向こう側で実行させる
手もあるけど、動かなくなったら嫌だし。仕方なく、web で検索。Skymedi と
ARC で検索すると、Skymedi は ARC の 700 シリーズのビデオサブシステムを
採用とかなんとかというページが見つかった。じゃ、ARC 700 なんだろうなぁ。
いや、ARC 700 であって欲しい。
■ 8/10
なんだか、珍しく ZoneEdit からのメールが来ていた。
Subject: The new ZoneEdit is coming!
We’re making some long-overdue improvements to ZoneEdit this fall. Our goal
is to improve the interface and add functionality while maintaining the
simplicity and ease-of-use that has made ZoneEdit popular.
One of the primary changes affecting free users is that the number of free
zones allowed will be reduced from 5 to 2. However, all users that have ever
purchased a credit will maintain their 5 free zones, so the easy solution if
you've valued your ZoneEdit service is to purchase at least 1 credit ($10.95
per credit) before the transition to keep all 5 free zones.
~続く~
だそうで。無料で使えるのが5つから2つに減るんだと。私、いくつ使っていた
のか覚えてない。というか、使っているのかも覚えていない。ZoneEdit の DNS
サーバがえらい落ちるので、見切りをつけた記憶もあるし。今度、調べておこう。
それにしても、無料の DNS サービスって、他の web サービスと違って広告を
出すことなんかできないし、あまりおいしくないんだろうね。
■ 8/11
Linux の ping コマンドで遊んでいた。man ping(8) を見ると、送信サイズを
変えられたり、flood ping のオプションなんかあって、これだけでしばらくは
遊べそう。試しに、-s オプションで送信サイズを 2000 とかに増やして、その
トラフィックをキャプチャして見てみたら、フラグメントして送信されていた。
icmp echo ごときで、フラグメントするなんて、と感心して。もっとサイズを
大きくしてみよう、ということで、Fragment offset が2バイトなので、65535 を
指定して実行したら。
[toyota@zonama]$ ping -c 1 -s 65535 -p ff 192.168.10.220
PATTERN: 0xff
Error: packet size 65535 is too large. Maximum is 65507
だそうで。28バイトはどこいっちゃうの?と思って調べてみると、IP ヘッダで
28バイト使うので 65507 という数字みたい。Fragment offset に 0xff を入れて
1472 バイトのデータを付ければ、67000 バイトぐらい送れるのにな、と考えて
いたのだけど、IP の制限を見てみたら、最大長が65535バイトと書いてあった。
フラグメントするのは Ethernet を通すからなので、IP 層からしたら、そんな
こと気にしないので、単純に 65535 - 28 になるのね。各層だけで考えないと、
変なことになるのか。
■ 8/12
やや昨日の続きで。ping のサイズを変化させて実験していた。
$ perl -e 'for($i=0;$i>9;$i++){system("ping -c 1 -s $i -p ff star");}'
こんな感じで。で、送信側は tcpdump でキャプチャ、受信側は wireshark で
キャプチャしていたのだけど、どうも結果が違う。一度、両方ファイルに保存
してみて、tcpdump で見てみた。送信側の tcpdump だと。
[toyota@zonama]$ /usr/sbin/tcpdump -s 1518 -x -r tcpdump.pcap
reading from file tcpdump.pcap, link-type EN10MB (Ethernet)
11:01:38.679536 IP zonama > star: ICMP echo request, id 56886, seq 1, length 8
0x0000: 4500 001c 0000 4000 4001 b98d c0a8 0001
0x0010: c0a8 0002 0800 19c8 de36 0001
11:01:38.681187 IP zonama > star: ICMP echo request, id 57142, seq 1, length 9
0x0000: 4500 001d 0000 4000 4001 b98c c0a8 0001
0x0010: c0a8 0002 0800 19c7 df36 0001 ff
11:01:38.682929 IP zonama > star: ICMP echo request, id 57398, seq 1, length 10
0x0000: 4500 001e 0000 4000 4001 b98b c0a8 0001
0x0010: c0a8 0002 0800 17c8 e036 0001 ffff
11:01:38.684492 IP zonama > star: ICMP echo request, id 57654, seq 1, length 11
0x0000: 4500 001f 0000 4000 4001 b98a c0a8 0001
0x0010: c0a8 0002 0800 17c7 e136 0001 ffff ff
11:01:38.686206 IP zonama > star: ICMP echo request, id 57910, seq 1, length 12
0x0000: 4500 0020 0000 4000 4001 b989 c0a8 0001
0x0010: c0a8 0002 0800 15c8 e236 0001 ffff ffff
11:01:38.687930 IP zonama > star: ICMP echo request, id 58166, seq 1, length 13
0x0000: 4500 0021 0000 4000 4001 b988 c0a8 0001
0x0010: c0a8 0002 0800 15c7 e336 0001 ffff ffff
0x0020: ff
11:01:38.689628 IP zonama > star: ICMP echo request, id 58422, seq 1, length 14
0x0000: 4500 0022 0000 4000 4001 b987 c0a8 0001
0x0010: c0a8 0002 0800 13c8 e436 0001 ffff ffff
0x0020: ffff
11:01:38.691250 IP zonama > star: ICMP echo request, id 58678, seq 1, length 15
0x0000: 4500 0023 0000 4000 4001 b986 c0a8 0001
0x0010: c0a8 0002 0800 13c7 e536 0001 ffff ffff
0x0020: ffff ff
受信側の wireshark だと。
[toyota@zonama]$ /usr/sbin/tcpdump -s 1518 -x -r wireshark.pcap
reading from file wireshark.pcap, link-type EN10MB (Ethernet)
11:01:35.241616 IP zonama > star: ICMP echo request, id 56886, seq 1, length 8
0x0000: 4500 001c 0000 4000 4001 b98d c0a8 0001
0x0010: c0a8 0002 0800 19c8 de36 0001 0000 0000
0x0020: 0000 0000 0000 0000 0000 0000 0000
11:01:35.243318 IP zonama > star: ICMP echo request, id 57142, seq 1, length 9
0x0000: 4500 001d 0000 4000 4001 b98c c0a8 0001
0x0010: c0a8 0002 0800 19c7 df36 0001 ff00 0000
0x0020: 0000 0000 0000 0000 0000 0000 0000
11:01:35.245012 IP zonama > star: ICMP echo request, id 57398, seq 1, length 10
0x0000: 4500 001e 0000 4000 4001 b98b c0a8 0001
0x0010: c0a8 0002 0800 17c8 e036 0001 ffff 1919
0x0020: 1919 1919 1919 1919 1919 1919 1919
11:01:35.246622 IP zonama > star: ICMP echo request, id 57654, seq 1, length 11
0x0000: 4500 001f 0000 4000 4001 b98a c0a8 0001
0x0010: c0a8 0002 0800 17c7 e136 0001 ffff ff00
0x0020: 0000 0000 0000 0000 0000 0000 0000
11:01:35.248309 IP zonama > star: ICMP echo request, id 57910, seq 1, length 12
0x0000: 4500 0020 0000 4000 4001 b989 c0a8 0001
0x0010: c0a8 0002 0800 15c8 e236 0001 ffff ffff
0x0020: 0000 0000 0000 0000 0000 0000 0000
11:01:35.250107 IP zonama > star: ICMP echo request, id 58166, seq 1, length 13
0x0000: 4500 0021 0000 4000 4001 b988 c0a8 0001
0x0010: c0a8 0002 0800 15c7 e336 0001 ffff ffff
0x0020: ff00 0000 0000 0000 0000 0000 0000
11:01:35.251704 IP zonama > star: ICMP echo request, id 58422, seq 1, length 14
0x0000: 4500 0022 0000 4000 4001 b987 c0a8 0001
0x0010: c0a8 0002 0800 13c8 e436 0001 ffff ffff
0x0020: ffff 9a9a 9a9a 9a9a 9a9a 9a9a 9a9a
11:01:35.253357 IP zonama > star: ICMP echo request, id 58678, seq 1, length 15
0x0000: 4500 0023 0000 4000 4001 b986 c0a8 0001
0x0010: c0a8 0002 0800 13c7 e536 0001 ffff ffff
0x0020: ffff ff00 0000 0000 0000 0000 0000
この違いは、何なんだろうと。wireshark 側が buffer overrun している気も
したのでソースを見たけど、問題なさそうだし。調べること30分、tcpdump と
wireshark で request, reply 両方見ると、逆の現象が起きているので、原因が
わかった。Ethernet の最小フレームサイズが 64 バイトだからだった。それより
短いサイズのパケットだったため、Ethernet で最後に Trailer が付けられて
60 バイト(+FCS 4バイト) になるのだった。Wireshark で Ethernet の部分を
見ると、ちゃんと Trailer が付加されている表示になっていた。IP 層以上の
問題だと思って、見てなかった。昨日は IP 層、今日は Ethernet 層の制限に
ぶつかって、なんだか勉強になった。wireshark さん、バグを疑ってごめんな
さい。
■ 8/13
使っているカードリーダー、口がいくつもあって何種類かのメディアを読めるの
だけど、SDHC が読めないんだよね。SDHC を読ませるときは、EeePC 901 の SD
カードリーダで読ませて、別の SD に書き直すという面倒なことをしている。
4G もあるので、コピーにかなり時間がかかるし、非常に面倒なので、SDHC が
読めるカードリーダを買った。他の種類のメディアは、ほとんど読むことがない
ので、SD + SDHC のみのもの。PC にリーダを刺すと収まりがいまいち悪いけど
だいぶ便利になった。もっと早く買えば良かった。
■ 8/14
カードリーダーを買ったついでに、SD カードも買った。SD カードを買うと、
ケースが付いてくることがあるのだけど、決まって同じ大きさのプラスチックの
ケース。どこのメーカーも同じ大きさで、大きさを測ると 52mm×42mm だった。
この大きさの CF のケースもあったし、確かスマートメディアのケースも同じ
大きさだった気がする。これは、何かの規格の大きさなのだろうか。調べてみた
けど、良くわからなかった。なんだろう、この大きさ。
■ 8/15
web で Picasa を使って画像の管理をしていたが、すぐに IE が落ちる。何で、
IE なんかでやっているかと、Picasa のアカウントがいつも使っている Gmail と
違うから。いちいち、ログインし直したりするのが面倒だから、IE で操作して
いた。何度も落ちるので、やっぱり IE6 が問題なのかな、という結論になり、
仕方なく IE のバージョンアップをして、IE7 に。これで、落ちるようなら、
もう Picasa なんか使わないぞ、なんて思ったけど、IE7 だと安定するように
なった。ただ、管理を web 越しにすると、どうしても遅さが気になる。仕方が
ないけど。
■ 8/16
久しぶりに家から電話をかけようとして IP 電話の受話器を上げたが、発信音が
しない。YahooBB の ADSL モデムの Trio3-G Plus を見ると、警告ランプが付いて
いる。リセットしたり、電源を抜いてから入れ直してみたけど、現象が変わらず。
面白いのが、外から電話をしてみると、呼び出し音が鳴って繋がっているように
応答すること。これじゃ、電話に出ないと思われるな。ということで、Yahoo に
電話して、交換することになった。それにしても、Yahoo のサポートっていつも
繋がりにくい。
■ 8/17
家のサーバが外から繋がらなくなった。昨日は繋がっていたので、今日の暑さで
サーバが壊れてしまったのかもしれない、と思いながら家に帰ると、特に問題
なく。原因は何だろうな、と調べていたら ADSL モデムの設定だった。昨日の
IP 電話不通のときに、何度か電源を入れ直したため、ポート転送の設定が消えて
しまったみたい。どこも何ともなくて、安心した。
■ 8/18
DELL E207WFP という液晶モニタをメインで使っている。今日、電源を落とそうと
電源ボタンを押したけど、押した感覚がない。さらに、電源も消えない。どうも
ボタンのところが壊れてしまったようである。分解したら、なおるのかなぁ。
とりあえず電源を切るには、裏の電源コードを抜いたのだけど、これは良くある
現象なのか、調べてみた。E207WFP としてはあまりないみたいだけど、DELL の
液晶モニタとしては、同じような現象が見つかった。保証期間外だと、修理が
えらい高いみたい。使えなくはないけど、不便なので、モニタを買い替えよう
かな。順番的に言うと、次に買う予定だったのは地デジのテレビだったのだけど。
■ 8/19
すっかり見落としていたけど、Dovecot v2.0.0 がリリースされていた。v1.2 から
だいぶ変更があった中で、一番大きいと思われるのが必要なユーザアカウントが
2つになったことだと思う。デフォルトで dovenull, dovecot の2つ。訳が全く
止まっているけど、とりあえず dovecot.jp は更新しておいた。v1.0.0 からの
メジャーリリースの日付は。
v2.0.0 2010年8月17日
v1.2.0 2009年7月2日
v1.1.0 2008年6月21日
v1.0.0 2007年4月13日
1年ちょっとの良いペースで出ている感じがする。
■ 8/20
6V で CDI 点火のバイクを 12V 化したいな、と調べていた。12V 化の障害として
ジェネレータが対応してないとな、とは思っていたけど、6V で駆動している CDI
を使う場合は 6V に電圧を落とすか、似たような機種の 12V 用の CDI を見つけ
ないといけない。せっかく 12V にしたのに、わざわざ 6V を作り出すのもどうかと
思うし、かと言って似たような機種の 12V 用の CDI なんか見つからないし。
なんか、調べていくうちに、おとなしく 6V で乗れば?と言われているような
気がしてきた。続きは、時間があるときに調べよう。
■ 8/21
1週間前に IP 電話が使えない件、今日代わりの ADSL モデムが来た。やっと、
なのだけど土曜日に指定したから仕方がない。機械を繋ぎ変えて、繋がるのを
待つこと30分、ネットワークが繋がらない。さらに待つこと1時間、やっぱり
繋がらない。なんだか、ストレスが溜まってきた。ちょっと調べ物をしたいと
思って PC を触るけど、ネットワークが繋がらなくて、イラっとする感じで。
明日までに繋がらなかったら、サポートに電話するか、ネットワークは繋がる
古い奴に戻そうか。あ、でも古いのは返すんだっけ。困ったな。
■ 8/22
昨日の続きで。Network が使えないので、YahooBB に電話した。今日は日曜日
だからか、自動ガイダンスの自動診断となり、自動診断の結果は回線が不安定に
なっているそうで。なんか、不安定って言葉で片付けられてもね。24時間以内に
改善するので、回線を切らずそのまま放置しろと。この調子だと、今日は家に
居るのに Network がない1日になりそう。
■ 8/23
5日の続きで。クロスコンパイル環境の作り直しをして、arc-elf32 じゃなく、
arc-linux-uclibc な環境に変更した。実行したスクリプトを build_elf32.sh
から build_uclibc.sh にしただけ。問題なく実行できたかのように見えたが。
[toyota@zonama]$ arc-linux-uclibc-gcc test.c
/usr/local/arc/lib/gcc/arc-linux-uclibc/4.2.1/../../../../arc-linux-uclibc/bin/
ld: crt1.o: No such file: No such file or directory
collect2: ld returned 1 exit status
build_uclibc.sh の実行ログ uclibc_log.txt を確認してみると、確かにエラーが
起きている。
checking for ld that supports -Wl,--gc-sections... configure: error: Link tests
are not allowed after GCC_NO_EXECUTABLES.
make[1]: *** [configure-target-libstdc++-v3] error 1
libstdc++-v3 をごにょごにょいじってみたが、埒があかないので、web 検索を
してみた。なんだか、これと言った簡単な解決法は見つからず。さて、どうした
ものか。
■ 8/24
昨日の続きで、ちょっと configure をいじったり泥臭いことをして、なんとか
環境ができた(と思う)。試しに dropbear をコンパイルしてみたが、その前に
zlib が必要みたいなので、zlib をコンパイルしてから突っ込んで、dropbear の
コンパイル。あっさりできるような簡単な感じじゃなかったけど、なんとか完了。
動くかどうか、わからないが。久しぶりのクロスコンパイルは、面倒ばかりを
感じてしまう。
■ 8/25
22日の続き。結局、24時間経っても直らないので、YahooBB に電話して、再度
ADSL モデムの交換になった。配達を土曜日にしたので、BB フォンはそれまで
使えない。それは良いとして、外から中のサーバに接続できなくなった。ADSL
モデムの故障のせいだと思ってたら、どうやら外側の IP アドレスが変わった
みたい。ここ数年変わってなかったし、ちょっと離れた IP アドレスだったので
ちょっと驚いた。
■ 8/26
10日にちょっと書いたけど、ZoneEdit の期限の話。24日に ZoneEdit からメールが
来ていた。27日から新しい仕組みを始めるとかなんとか。明日じゃん、と手元の
ドメインを調べてみた。
私が管理しているドメインは全部で(多分)7つ。このうち ZoneEdit を利用
しているのが3つ。そのうち2つは、ZoneEdit 以外の所も併記してあったので
最悪 ZoneEdit が止まっても、ドメインが引けないことはない。残りの1つが
ZoneEdit のみに依存しているので、ここをなんとかしないといけない。なんか、
調べていたら来月で切れるドメインも見つけちゃったし。明日までに ZoneEdit の
件をなんとかしないとな。
■ 8/27
昨日の続きで。結局、ZoneEdit が噛んでいるところは、全てレジストラの DNS
サーバに置き換えた。なんか、DNS を複数登録していて、その中に ZoneEdit が
あるドメインで、うまくメールが届いていないような現象を指摘されたので。
DNS の変更なんて3年振りぐらいだから、サブドメインに MX と CNAME と同時に
指定できないなんてすっかり忘れてた。
42.195.jp MX 10 195.jp
42.195.jp CNAME 195.jp
ってやっちゃいけなくて、この場合 CNAME の部分を A レコードにするとか、
なんだって。とりあえず、ドメイン3つ分の DNS サーバ指定と DNS の設定が
完了した。なんか、抜けている気もしないことないけど。
■ 8/28
今日やっと YahooBB の新しい ADSL モデムを受け取って、IP 電話が使えるように
なった。で、色々と接続していたら、少し変な感じが。IP アドレスがまた変わって
前の IP に戻った。折角色々設定を変更したのに、また変更し直し。前の情報を
バックアップしておいて、良かった。
■ 8/29
ちょっと Android について調べていたら、Intel と Nokia が作っている MeeGO
という OS を知った。どうやら Atom ベースの PC でも動作するようなので、
家の EeePC 901 に入れてみようか、とまで思ったけど少し考えた。メリットが
何かあるのか。色々見てみたけど、私が得られるメリットって Btrfs ぐらいで
他にこれといったものがなさそうな気がしてきた。面白そうだけど、もっと時間が
あるときにしよう。
■ 8/30
24日に Dovecot v2.0.1 と v1.2.14 がリリースされていた。また、すっかりと
見落としていた。どちらも大きな変更はなさそう。とりあえず、dovecot.jp の
ページを更新しておいた。
■ 8/31
ちょっと海外にメールなんかをしていて、ダメダメな英語を書いて、伝わって
いるのか不安に駆られつつも、送信ボタンを祈る気持ちで送ったりしているの
だけど、ふと Gmail の Content-Type の charset って途中まで日本語で書いて
いても(というか、デフォルトのシグネチャが日本語なので)、英語のみの本文
だと ISO-8859-1 になるのか、という疑問が浮かんだ。試しに何通かテストして
みたら、アルファベットのみだと自動的に ISO-8859-1 になるみたい。別に他の
charset にしていても、相手が読めないことはないだろうから安心していたけど、
ちゃんと判断してくれるのはありがたい。あとは、ちゃんとした英語が書けるか
どうか、だな。
|