LATITUDE D430にWindows XPをインストールする

1年程前に秋葉原で買った中古。8000円くらいだった。
出張中に主にメールのやりとりと会社へVPNアクセスするのに使った。
その後その必要がなくなり、CentOSを入れたりFreeBSDを入れたりしていた。
やっぱりWindowsは何かと便利で必要になることも多いのでまたWindowsに戻すことにした。
CDドライブは外付けのものが付属している。ケーブルはUSBに似ているがプラグが二個重なったような特殊なものだ。

XPのCDをいれてブートする。BSDの入っていたパーティションを削除し、NTSFでクイックフォーマットする。
XPのインストールは特に問題なく進む。
ネットワークアダプタは認識されず、1394インタフェースのみが認識される。間違ってそちらにアドレス等を設定してしまう。

自宅にはデスクトップPCがあって、NICが2枚ついていてブリッジ接続して、ノートPCはそこに有線LANでつなぎIPアドレスは固定で設定していた。無線LANアダプタはあるがLinuxで無線LAN設定がうまくいかなかったためだ。
XPなら無線が使える。だが、当然XPはドライバを持っていない。

デスクトップPCでLATITUDE D430のドライバをダウンロードし、USBメモリにコピーしてD430にうつしてインストールする。ネットワークのドライバさえ入れてしまえば後はインターネットで、と思ったがインストールしたてのXPでIE6ではWindows UpdateやMSのダウンロードサイトすらまともに見えない。

XPのSP3もデスクトップPCでダウンロードしてUSBメモリでコピーしてまずSP3をインストールする。
それからネットワーク、オーディオ、ビデオなどのドライバを入れていく。
ここまでは有線LANでデスクトップPCにブリッジ接続している。


最後に無線LANのドライバを入れる。アダプタは指の爪くらいの小さなもので、「Buffalo」の文字しか書いていない。ほかに小さく英数字でいろいろ書いてあるがどれも型番ではなく、どのドライバを落とせばいいのかわからない。
説明書を探して、ようやく型番がわかる。

EMOBILEの無線LANルータにつなげる。
有線LANのケーブルを抜く。

Chrome、Evernote、秀丸などをインストールする。
メインブラウザはChromeを使うが、IEが必要になる場合もあるだろうから8にしておく。

終わり。

Linuxなどではドライバインストールが不要だったことがなぜだろうと思ったがそれは単に新しくてドライバを持っているだけだ、と気づいた。
でもありとあらゆるPCのディスプレイやネットワークのドライバなどを持つのも大変じゃないかなあと思う。
汎用的なものを使ったりしているのだろうか?

cobolは一行にかける文字数に制限がある

ということを忘れていた。

1行の桁数は80桁であり、さらにそのなかでコードを書ける領域は限られていて、
8桁目から72桁めの65桁である。最初の6桁は行番号を書く場所である。
ずいぶん少ないな。
7桁めに "-" を書くことで前行に続けて書くことができるのだが、あまり使った記憶がない。
というわけで謎のエラーは後ろがはみ出していたことが原因であった。

opencobol

ちょっとcobolをやってみようと思う。
かつて仕事で使っていた。
opencobolをインストールしてみる。

wget http://sourceforge.net/projects/open-cobol/files/open-cobol/1.1/open-cobol-1.1.tar.gz/download

解凍して、configure, make, make install...
と思ったらmakeができない。
よく見るとconfigureの最後にエラーが出ている。

configure: error: gmp.h is required

gmpとは、The GNU Multiple Precision Arithmetic Library のことのようだ。http://gmplib.org/ からダウンロードしてくる。

wget ftp://ftp.gmplib.org/pub/gmp-5.1.2/gmp-5.1.2.tar.lz

拡張子がlz.... LHAで圧縮されているのか?なんで?
linuxでlzhのファイルを扱うのは初めてだ。
tarに --lzip というオプションがあることがわかったので指定するが失敗する。lhaをインストールしないといけないのか。

# tar xf gmp-5.1.2.tar.lz --lzip
tar (child): lzip: exec 不能: そのようなファイルやディレクトリはありません
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now

lzipを持ってくる。

http://sourceforge.jp/projects/freshmeat_lzip/releases/

windowsで落としてftpでさくらのVPSのcentosに送った。
解凍してconfigure, make, make install
tarの--lzipオプションが使えるようになった。
無事解凍。

gmpをconfigure, make, make install

opencobol再度configure... できた。make, make install

サンプルソースをコンパイルしてみる。

cobc -x hello.cob

実行してみると、

./hello: error while loading shared libraries: libcob.so.1: cannot open shared object file: No such file or directory

/usr/local/libにちゃんと libcob.so.1はある。
調べると、ldconfigをすればよいことがわかる。

参考 http://d.hatena.ne.jp/GARAPON/20100406/1270567339

動いた!

# ./hello
Hello World
0
Hello World
0
Hello World
2

ちなみにソースは http://codezine.jp/article/detail/2291?p=4
にあったもの。

123456*890123456789012345678901234567890123456789012345678901234567890
IDENTIFICATION DIVISION.
PROGRAM-ID.    SAMPLE1.
AUTHOR. Eiichi Fuse.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 CMD PIC 9.
PROCEDURE DIVISION.
PG-TOP.
DISPLAY "Hello World".
ACCEPT CMD.
IF CMD = 0 THEN GO TO PG-TOP.
STOP RUN.

ファイルを読んで集計する。

123456*890123456789012345678901234567890123456789012345678901234567890123456789
IDENTIFICATION   DIVISION.
PROGRAM-ID.      MYPROG01.
ENVIRONMENT      DIVISION.
INPUT-OUTPUT     SECTION.
FILE-CONTROL.
SELECT  MEIBO   ASSIGN  TO "meibo.txt"
ORGANIZATION    LINE    SEQUENTIAL
FILE STATUS IS MEIBO-STS.
DATA             DIVISION.
FILE             SECTION.
FD       MEIBO.
01       MEIBO-RECORD.
05      BANGOU          PIC X(8).
05      NAMAE           PIC X(20).
05      TELEPHONE       PIC X(15).
05      JUSHO           PIC X(20).
05      SALARY          PIC 9(8).
WORKING-STORAGE  SECTION.
01 MEIBO-STS     PIC XX.
01 GOUKEI        PIC 9(10)       VALUE ZERO.
01 JUDGE         PIC X.
88      ZOKKO           VALUE "1".
88      SHURYO          VALUE "2".
PROCEDURE        DIVISION.
MAIN             SECTION.
HAJIME.
OPEN    INPUT           MEIBO.
SET     ZOKKO           TO      TRUE.
YOMIKOMI.
PERFORM UNTIL           SHURYO
READ    MEIBO
AT END
SET     SHURYO  TO      TRUE;
NOT AT END
DISPLAY BANGOU NAMAE SALARY
ADD SALARY      TO      GOUKEI
END-READ
END-PERFORM.
DISPLAY         GOUKEI.
OWARI.
CLOSE                   MEIBO.
STOP                    RUN.


DISPLAY文で見出しをつけようと "number:" などというのを挟むと正しく表示されなかったりコンパイルエラーになったりする・・・

なぜだろう・・・

ファイルの項目を日本語にしてみたがうまくいかない・・・日本語対応が不十分という情報もみかけた・・・

FreeBSDでマウスが動かない

インストール中は動いていたのだが、startxをやるとマウスカーソルが動かない。
マウスの設定ができていないのかと、sysinstallでもう一度やってみるが変わらず。

http://www.freebsd.org/doc/ja/books/handbook/x-config.html

に、/etc/rc.confに以下の記述をしましょうとあったのでやって、再起動したら動くようになった。

hald_enable="YES"
dbus_enable="YES"

味も素っ気もないウィンドウ画面である。だが、これがUNIXっぽくていい。

起動するとき、"Starting sshd." が表示されて10秒程度止まるのが気になる。

FreeBSD

久しぶりに使ってみる。

Linuxとの違いはなんだろう?ほとんどわからない。
インストールするためにisoイメージをダウンロードしCDやDVDに焼くが、失敗する。
1回目、9.1をCDに焼く。失敗。もういちど同じイメージを別ディスクに焼く。失敗。
9.1のDVD用のイメージがあるのでそちらを焼く。失敗。
8.3のDVDイメージを焼く。ようやくインストールできた。

インストール中にSSHを有効にするかと聞いてきたので設定するが、
ログインできない。
ポート番号22とか、PermitRootLogin=noとかを有効にして、
ようやく入れるようになった。

だが、今度はsuできない。
wheelグループに入れればよいことがわかった。

pw hoge -n user -G wheel


psで表示した特定のプロセスをkillする

以下のようにプロセスを起動した。

bash loop.bash&

表示

ps au
# ps au
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      1899  0.0  0.0   4060   456 tty1     Ss+  Apr21   0:00 /sbin/mingetty /dev/tty1
root      1900  0.0  0.0   4076   504 ttyS0    Ss+  Apr21   0:00 /sbin/agetty /dev/ttyS0 115200 vt100-nav
root     18518  0.0  0.1 108468  1872 pts/1    S+   13:09   0:00 -bash
root     19122  0.0  0.1 106092  1220 pts/0    S    14:27   0:00 bash loop.bash
root     19277  0.0  0.1 110232  1136 pts/0    R+   14:30   0:00 ps au


grepで特定する

# ps au|grep loop.bash
root     19122  0.0  0.1 106092  1220 pts/0    S    14:27   0:00 bash loop.bash
root     19343  0.0  0.0 107456   912 pts/0    S+   14:31   0:00 grep loop.bash


grep自体が表示されてしまうのでそれを除く

# ps au|grep loop.bash|grep -v grep
root     19122  0.0  0.1 106092  1224 pts/0    S    14:27   0:00 bash loop.bash


これでプロセスが特定できた。
kill するには以下のようにプロセス番号を指定すればよい。

kill 19122

まず、プロセス番号のみを表示する。

# ps au|grep loop.bash |grep -v grep|awk '{print $2}'
19483

xargsで渡して killする。

# ps au|grep loop.bash |grep -v grep|awk '{print $2}'|xargs kill
[1]+  終了しました      bash loop.bash


強制終了するなら

# ps au|grep loop.bash |grep -v grep|awk '{print $2}'|xargs kill -9
[1]+  強制終了            bash loop.bash


備忘録

unset_linguas () {
export LC_ALL=C
export LC_MESSAGES=C
export LANGUAGE=C
export LANG=C
}

make_tmp_dir () {
local TMP_ROOT="${1:-${TMP_ROOT:-${HOME}}}"
local tmpdir=$(basename "$0")$$

tmpdir="${TMP_ROOT}/${tmpdir}"

mkdir "${tmpdir}" > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "${tmpdir}"
chmod 700 "${tmpdir}"
else
echo "Can't create cirectory: ${tmpdir}" 1>&2
return 1
fi
}


clean_tmp_dir () {
local TMP_ROOT="${1:-${TMP_ROOT:-${HOME}}}"
local tmpdir=$(basename "$0")$$

tmpdir="${TMP_ROOT}/${tmpdir}"

if [ ! -d "${tmpdir}" ]; then
echo "No such directory: ${tmpdir}" 1>&2
return 1
fi

if [ -L "${tmpdir}" ]; then
echo "Can't delete unexpected symlink: ${tmpdir}" 1>&2
return 1
fi

rm -rf "${tmpdir}" > /dev/null 2>&1

}


#!/bin/bash

MAIL_FROM="hoge@example.com"
MAIL_TO="foo@example.com"
MAIL_SUBJECT="テストメール"
MAIL_ID="<$(date +%Y%m%d%H%M%S).$(id -ru).$$@$(hostname)>"
SENDMAIL=/usr/lib/sendmail

FILE_UTIL=util_common.bash
. "${FILE_UTIL}" 2> /dev/null \
|| . "${0%/*}/${FILE_UTIL}" 2> /dev/null
if [ $? -ne 0 ]; then
echo "Can't load ${FILE_UTIL}!" 1>&2
exit 1
fi

unset_linguas

tmpdir=$(make_tmp_dir 2>/dev/null)
if [ $? -ne 0 ]; then
echo "Can't create temporary directory!" 1>&2
exit 2
fi

SIGNALS="HUP INT QUIT PIPE TERM"
trap "{ clean_tmp_dir; exit; }" ${SIGNALS}

subject=$(echo -n "${MAIL_SUBJECT}" |
iconv -f UTF-8 -t ISO-2022-JP |
perl -MMIME::Base64 -ne 'print encode_base64($_)')

mail_data="${tmpdir}/mail_data"
cat <<EOF > "${mail_data}"
Mime-Version: 1.0
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encording: 7bit
From: ${MAIL_FROM}
To: ${MAIL_TO}
Subject: =?ISO-2022-JP?B?${subject}?=
Message-Id: ${MAIL_ID}
Date: $(date +"%a, %e %b %Y %H:%M:%S %z")

テストメールです。
-----------------------------------------------------
UPTIME
-----------------------------------------------------
$(uptime)

-----------------------------------------------------
W
-----------------------------------------------------
$(w)

-----------------------------------------------------
FREE
-----------------------------------------------------
$(free)

EOF

iconv -f UTF-8 -t ISO-2022-JP "${mail_data}" |
"${SENDMAIL}" -oi "${MAIL_TO}" > /dev/null 2>&1

clean_tmp_dir
trap ${SIGNALS}


#!/bin/bash

select member in john paul george ringo
do
echo "You chose $member."
break
done


while :; do netstat -tp; sleep 5; done