2011年4月アーカイブ



菜園状況。人参の寒冷紗を外して雑草とり。もうそろそろ間引きかな。



至るところで去年収穫漏れしたジャガイモが出てきた。全部で6株程。隣はとう もろこし。今日は一番隊の種を蒔きました。一週間づつずらして受粉をしやす くしようという目論見。前に挑戦した時には雌花が出てきたころには雄花はほ とんど散ってしまったので。

トマトとナスも順調。そろそろ夜も外に出しておいていいかな。

ひたすらガレージ掃除。ルーターユニットを作り終えてから放置されていたの でいろいろ錆とりやら。



V7FS続き。ガツガツファイルを作ったり消したり移動したりしてみると、バグ
バグ。スーパーブロックのフリーinodeがなくなった時の更新(フリーブロック
はnewfs時にファイルシステム上に構築したリストを辿ってスーパブロックの
キャッシュを更新していくけれど、inodeは、なくなった時点でilistを辿って
空いているinodeを補充する。空いている判断はmodeが0)が間違ってたり、ディ
レクトリをムーブした時に親".."のinodeを変更するのを忘れていて、昔の親を
削除した時点で親なしになってしまうとか(".."が間違っていても、その親がど
こかに存在すればNetBSDからは普通に移動できてしまう。vnopsのlookupでへま
してるかも。ISDOTDOTは面倒なんだ)。ここで整合性を調べるだけのfsckプログ
ラムが意外に活躍しました。とりあえずNetBSD側は
この辺でいいや。
spcefsをからませると、どうしてもumount時にロックでパニックするので外した。

次はこれをマイOSに。思ったより実装が大きくなってしまったので心配だ。 ここからがお楽しみなんだけど。


バイス棚、設置。フライスのハンドルと干渉しない位置に設定して、台輪の穴
から下の台にφ6.4開けて下からM6で固定。アオリ止めもハンドルに干渉しない
位置に取り付け。バイスを収納しました。これで錆の心配がちょっとなくなる。



この調子で工具を外気放置しないように収納を作っていきたい。

人参もやっと。人参は芽が出るまでまめに水やりするのが大変。

V7FS続き。ひたすらfsck書いてた。とりあえず
int
check_filesystem (struct v7fs_self *_)
{
  _=_;
  int error = 0;
スーパーブロック内のキャッシュとデータブロック内のリストを辿って、その
中に重複がないかどうか。と、スーパーブロック内のフリーブロックの数が
あっているかどうか。
  printf ("checking freeblock...(DUP)\n");
  v7fs_freeblock_check (_);

inodeはスーパーブロック内のキャッシュを調べるのみ(なくなったら、その場
でilistから空いているのをとってくるので)
  printf ("checking freeinode...(DUP)\n");
  v7fs_freeinode_check (_);

ilistを全て辿って、freeinodeの数がスーパーブロックに記憶されている数と
等しいか
  printf ("checking ilist...\n");
  v7fs_ilist_check (_);

ilistの中の有効なinodeのデータブロックの中にフリーブロックの中のブロックが
含まれていないかどうか
  printf ("checking datablock (vs freeblock)...\n");
  v7fs_datablock_vs_freeblock_check (_);

同じくデータブロックが他のinodeに使われていないか。
  printf ("checking datablock (vs datablock)...\n");
  v7fs_datablock_vs_datablock_check (_);

ilist中のinodeに対してファイルだったら、そのinodeがどこかのディレクトリ
のエントリに含まれていることを確認。ディレクトリだったら、子ディレクト
リの数がnlinkであり、親のinodeが存在することを確認。
  printf ("checking path name...\n");
  v7fs_pathname_check (_);

  return error;
}
ここまで整合性を調べてみた。修復は実際に問題が起きてから書き足そう。た だ、思いっきりout of coreでぶん廻したので、とてつもなく遅い。ディスクを 殺す勢いでアクセスします。


菜園状況。トマト、ナスの苗は順調。ホーム桃太郎がうちには合ってるかも。
去年は4月になって雪が降るというアクシデントがあったけれど...。



バイス棚、扉をピアノ丁番で取りつけ、アオリ止めをどこにつけるか見積るた めに設置場所に配置。ギリギリの設計なのでフライスのハンドルにぶつからな い場所に取り付けないといけない。色合いはばっちし。

V7FS続き。newfsは実装したところで、fsck、これが問題だ。調べることはデー タブロックが重複して登録されていないこと。フリーinodeリストに重複がない こと。inodeの参照数が正しいこと。ディレクトリの場合、親が存在すること。 このあたりがメインか。無理して修復はせずに、だめなのは異界送りにして最 低限整合性が保たれるようにしよう。
$ dd if=/dev/zero of=ohayo bs=512 count=18000 conv=notrunc
18000+0 records in
18000+0 records out
9216000 bytes transferred in 0.113 secs (81557522 bytes/sec)
$ ./a.out -ep -s 18000 -n 20000 -c ohayo
pdp endian
target=0 ohayo
target=1 (null)
v7fs_newfs: device:ohayo volume size:18000  ilist size:2500
open ohayo block size 512byte
make_filesystem: Clear entire volume...
make_filesystem: done.
make_filesystem: Initial Superblock setuped.
make_freeblocklist: last freeblock #17999
make_freeblocklist: last freeblock list #48
new inode#2
ROOTINO=2
v7fs_datablock_expand: 0->32, required block=1
daddr_map_dump: level 0 [0]
daddr_map_dump: level 0 [0]
v7fs_datablock_allocate: Get freeblock 2502
v7fs_datablock_expand: direct index 0 = blk2502
$ ./a.out -ep -s 18000 -n 20000 -f ohayo
pdp endian
target=0 ohayo
target=1 (null)
open ohayo block size 512byte
datablock_start_sector: 2502
volume_size: 18000
nfreeblock: 49
nfreeinode: 99
update_time: 1303909029
lock_freeblock: 0
lock_freeinode: 0
modified: 0
readonly: 0
Wed Apr 27 21:57:09 2011
total_freeblock: 15496
total_freeinode: 19999
checking freeblock...
freeblock DUP! 15483 15484 blk=17988
DUP in freeblock list
total freeblock=15484
corrupt # of freeblocks. 15496(sb) != 15484(cnt)
checking freeinode...
checking ilist...
*** corrupt total freeinode. 19999(sb) != 19998(cnt)
inode usage: 1/19999 (19998)
$ dd if=ohayo of=ohayo.img bs=512 seek=2 conv=notrunc
18000+0 records in
18000+0 records out
9216000 bytes transferred in 0.124 secs (74322580 bytes/sec)
$ su
Password:
$ vnconfig vnd0 ohayo.img
$ disklabel -e vnd0
$ disklabel vnd0
# /dev/rvnd0d:
type: vnd
disk: vnd
label: fictitious
flags:
bytes/sector: 512
sectors/track: 32
tracks/cylinder: 64
sectors/cylinder: 2048
cylinders: 8
total sectors: 18002
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0		# microseconds
track-to-track seek: 0	# microseconds
drivedata: 0 

4 partitions:
#        size    offset     fstype [fsize bsize cpg/sgs]
 a:     18000         2     4.2BSD      0     0     0  # (Cyl.      0*-      8*)
 d:     18002         0     unused      0     0        # (Cyl.      0 -      8*)
$ mount_v7fs -ep /dev/vnd0a /mnt
$ ls -al /mnt
total 4
drwxrwxrwx   2 root  wheel   32 Apr 27 21:57 .
drwxr-xr-x  26 root  wheel  512 Apr 25 23:39 ..
$ df
Filesystem      512-blocks       Used      Avail %Cap Mounted on
/dev/wd0a         149496448   44157272   97864356  31% /
/dev/wd0e            987856       2066     936398   0% /w
kernfs                    2          2          0 100% /kern
ptyfs                     2          2          0 100% /dev/pts
procfs                    8          8          0 100% /proc
alexandrite:/usr  284659588  224514208   45912404  83% /alexandrite
/dev/vnd0a            15498          2      15496   0% /mnt
$ 
$ cd /mnt
$ ls
$ tar xfzp /home/uch/v7files.tar.gz 
tar: Cannot create ./bin/diff.00844u (No space left on device)
tar: Cannot create ./lib/libt300s.a.00844g (No space left on device)
tar: Cannot create ./lib/libt4014.a.00844h (No space left on device)
tar: Cannot create ./usr/src/libc/sys/fstat.s.00844u (No space left on device)
tar: Cannot create ./usr/src/libc/sys/getgid.s.00844v (No space left on device)
tar: Cannot create ./usr/src/libm/jn.c.00844o (No space left on device)
tar: Cannot create ./usr/src/libm/log.c.00844p (No space left on device)
tar: Cannot create ./usr/src/cmd/adb/defs.h.00844d (No space left on devic
[snip]
tar: Cannot create ./mdec (No such file or directory)
tar: Failed write to file ./rphtunix (No space left on device)
tar: Failed write to file ./rptmunix (No space left on device)
$ ls
bin       dev       hphtunix  lib       rl2unix   rptmunix
boot      etc       hptmunix  rkunix    rphtunix  usr
$ ls -al
total 432
drwxrwxrwx   7 root      wheel    224 Sep 22  1988 .
drwxr-xr-x  26 root      wheel    512 Apr 25 23:39 ..
drwxrwxr-x   2 bin       sys     2496 Sep 22  1988 bin
-rwxr-xr-x   1 bin       sys     8986 Jun  8  1979 boot
drwxrwxr-x   2 bin       sys      160 Sep 22  1988 dev
drwxrwxr-x   2 bin       sys      336 Sep 22  1988 etc
-rwxr-xr-x   1 operator  kmem   53302 Jun  8  1979 hphtunix
-rwxr-xr-x   1 operator  kmem   52850 Jun  8  1979 hptmunix
drwxrwxr-x   2 bin       sys      288 Sep 22  1988 lib
-rwxr-xr-x   1 root      kmem   50990 Jun  8  1979 rkunix
-rwxr-xr-x   1 root      kmem   51982 Jun  8  1979 rl2unix
-rwxr-xr-x   1 operator  kmem       0 Jun  8  1979 rphtunix
-rwxr-xr-x   1 operator  kmem       0 Jun  8  1979 rptmunix
drwxrwxr-x   9 root      10       144 Sep 22  1988 usr
$ ls -al
total 432
drwxrwxrwx   7 root      wheel    224 Sep 22  1988 .
drwxr-xr-x  26 root      wheel    512 Apr 25 23:39 ..
drwxrwxr-x   2 bin       sys     2496 Sep 22  1988 bin
-rwxr-xr-x   1 bin       sys     8986 Jun  8  1979 boot
drwxrwxr-x   2 bin       sys      160 Sep 22  1988 dev
drwxrwxr-x   2 bin       sys      336 Sep 22  1988 etc
-rwxr-xr-x   1 operator  kmem   53302 Jun  8  1979 hphtunix
-rwxr-xr-x   1 operator  kmem   52850 Jun  8  1979 hptmunix
drwxrwxr-x   2 bin       sys      288 Sep 22  1988 lib
-rwxr-xr-x   1 root      kmem   50990 Jun  8  1979 rkunix
-rwxr-xr-x   1 root      kmem   51982 Jun  8  1979 rl2unix
-rwxr-xr-x   1 operator  kmem       0 Jun  8  1979 rphtunix
-rwxr-xr-x   1 operator  kmem       0 Jun  8  1979 rptmunix
drwxrwxr-x   9 root      10       144 Sep 22  1988 usr
$ df
Filesystem      512-blocks       Used      Avail %Cap Mounted on
/dev/wd0a         149496448   44326712   97694916  31% /
/dev/wd0e            987856       2066     936398   0% /w
kernfs                    2          2          0 100% /kern
ptyfs                     2          2          0 100% /dev/pts
procfs                    8          8          0 100% /proc
alexandrite:/usr  284659588  224514208   45912404  83% /alexandrite
/dev/vnd0a            15498      15498          0 100% /mnt
$ rm -rf *
$ df
Filesystem      512-blocks       Used      Avail %Cap Mounted on
/dev/wd0a         149496448   44342328   97679300  31% /
/dev/wd0e            987856       2066     936398   0% /w
kernfs                    2          2          0 100% /kern
ptyfs                     2          2          0 100% /dev/pts
procfs                    8          8          0 100% /proc
alexandrite:/usr  284659588  224514208   45912404  83% /alexandrite
/dev/vnd0a            15498          2      15496   0% /mnt
$ 
この後、umountでlock errorでメモリダンプ。


底面にはM6の鬼目ナットを埋めこみました。



台輪にはこれに合わせてφ12で穴をあけてあります。今回、設置場所が下から 固定できるので、この台輪の穴に合わせて設置場所に穴を開けて、裏からM6で 固定しようという目論見。せっかくがんばって仕上げたのにL字金具でビス止め で地震対策は避けたい。今回は下から固定できたけれど、これはなかなか難し い問題だ。

V7FS続き。デバイスファイルはspecfsをテンプレートに、access, getattr, setattr, fsyncをブロックデバイス、キャラクタデバイスにも対応するように 実装したらそこそこ動いた。
$ cd /mnt/dev
$ ls -al
total 2
drwxrwxr-x  2 bin   sys       160 Sep 22  1988 .
drwxrwxrwx  8 root  wheel     240 Sep 22  1988 ..
crw-rw-r--  1 root  daemon   0, 0 Sep 22  1988 console
crw-rw-r--  1 root  daemon   8, 1 Sep 22  1988 kmem
-rw-r--r--  1 bin   sys      1345 Jun  8  1979 makefile
crw-rw-r--  1 root  daemon   8, 0 Sep 22  1988 mem
crw-rw-r--  1 root  daemon   8, 2 Sep 22  1988 null
crw-rw-r--  1 root  daemon  17, 0 Sep 22  1988 tty
crw-rw-r--  1 root  daemon   0, 1 Sep 22  1988 tty1
crw-rw-r--  1 root  daemon   0, 2 Sep 22  1988 tty2
$ mknod nulltest c 2 2
$ mknod ttytest c 1 0
$ ls -al
total 2
drwxrwxr-x  2 bin   sys       192 Sep 22  1988 .
drwxrwxrwx  8 root  wheel     240 Sep 22  1988 ..
crw-rw-r--  1 root  daemon   0, 0 Sep 22  1988 console
crw-rw-r--  1 root  daemon   8, 1 Sep 22  1988 kmem
-rw-r--r--  1 bin   sys      1345 Jun  8  1979 makefile
crw-rw-r--  1 root  daemon   8, 0 Sep 22  1988 mem
crw-rw-r--  1 root  daemon   8, 2 Sep 22  1988 null
crw-r--r--  1 root  wheel    2, 2 Jan  1  1970 nulltest
crw-rw-r--  1 root  daemon  17, 0 Sep 22  1988 tty
crw-rw-r--  1 root  daemon   0, 1 Sep 22  1988 tty1
crw-rw-r--  1 root  daemon   0, 2 Sep 22  1988 tty2
crw-r--r--  1 root  wheel    1, 0 Jan  1  1970 ttytest
$ echo 'ohayo' > ttytest
ohayo
$ ls -li ../rkunix
124 -rwxr-xr-x  1 root  kmem  50990 Jun  8  1979 ../rkunix
$ cp nulltest ../rkunix
$ ls -li ../rkunix
124 -rwxr-xr-x  1 root  kmem  0 Jun  8  1979 ../rkunix
$ ls -al
total 2
drwxrwxr-x  2 bin   sys       192 Sep 22  1988 .
drwxrwxrwx  8 root  wheel     240 Sep 22  1988 ..
crw-rw-r--  1 root  daemon   0, 0 Sep 22  1988 console
crw-rw-r--  1 root  daemon   8, 1 Sep 22  1988 kmem
-rw-r--r--  1 bin   sys      1345 Jun  8  1979 makefile
crw-rw-r--  1 root  daemon   8, 0 Sep 22  1988 mem
crw-rw-r--  1 root  daemon   8, 2 Sep 22  1988 null
crw-r--r--  1 root  wheel    2, 2 Apr 25 18:32 nulltest
crw-rw-r--  1 root  daemon  17, 0 Sep 22  1988 tty
crw-rw-r--  1 root  daemon   0, 1 Sep 22  1988 tty1
crw-rw-r--  1 root  daemon   0, 2 Sep 22  1988 tty2
crw-r--r--  1 root  wheel    1, 0 Apr 25 18:32 ttytest
$ 
ttytestの更新時刻がおかしいのはv7fs_updateが呼ばれる前にlsしたため。今、 V7FSが頭に入ってるのでキャッシュ落ちする前に一気にfsck, newfsまで書いて おこう。


塗装は終了し、最後の研磨。一見ピカピカしているようだけど、これはぼこぼこ。



#400〜#600で削ります。ちょっと光ってる部分が凹んでるところ。といってあ まり追いつめるとこの先の削り代がなくなってしまうので、このあたりで。

全部削ります。下地以上には仕上らないのであまり無理せず。

ラビングコンパウンドでポリッシャー使いながら研磨。うんうん

うっかり手がすべって地肌まで削ってしまったりもしつつ、このあたりで終了。

V7FS続き。バグ取りしつつここまで
$ ls -al /mnt/dev
total 2
drwxrwxr-x  2 bin   sys      160 Sep 22  1988 .
drwxrwxrwx  8 root  wheel    240 Sep 22  1988 ..
crw-rw-r--  1 root  daemon  0, 0 Sep 22  1988 console
crw-rw-r--  1 root  daemon  0, 0 Sep 22  1988 kmem
-rw-r--r--  1 bin   sys     1345 Jun  8  1979 makefile
crw-rw-r--  1 root  daemon  0, 0 Sep 22  1988 mem
crw-rw-r--  1 root  daemon  0, 0 Sep 22  1988 null
crw-rw-r--  1 root  daemon  0, 0 Sep 22  1988 tty
crw-rw-r--  1 root  daemon  0, 0 Sep 22  1988 tty1
crw-rw-r--  1 root  daemon  0, 0 Sep 22  1988 tty2
これにはまずv7fs_vgetの時点でそのファイルがデバイスファイルなら
	  if (vp->v_type == VBLK || vp->v_type == VCHR)
	    {
	      dev_t rdev = 0;//XXX
	      vp->v_op = v7fs_vnodeop_p; //XXX
	      spec_node_init(vp, rdev);
	    }
のようにしてでデバイスファイル用のopsを付けてやる必要がある。これはとり あえずlsが通ればいいや(getattrが通ればいい)程度に、普通のファイルの vnopsをつけてごまかし。vnopsの中でVBLKとVCHRで振りわけてもいい。そっち の方が楽かな。正直vnopsのテンプレートだけで膨大で気が遠くなりそうだ。


最後の研磨に入ろうかとまず#600で削ってみたところ、どうも気にくわなくて
#320で削って、最後の一吹き。マルチトップQクリアー主剤100gでシンナー1.3
倍でちょっと伸びで。



あまりピカピカにするとアラも目立つのが悩ましい。逆目掘れもばっちし。

V7FS続き。黙々と実装。link, mkdir, rmdirまで。symlink, readlinkはV7だと 実装されてないので今のとこなし。実装はユーザランド上で詰めて最後vnopsに のっけるだけなのだけど、"locking against myself..."にぶちあたって結構時 間かかる。この手のロックは定番の手順ではあるのだけど、歴史的な構造から かそれが独特なのがつらい。
$ cd /mnt
$ ls
bin       dev       hphtunix  lib       rkunix    rphtunix  usr
boot      etc       hptmunix  mdec      rl2unix   rptmunix
$ ls -al
total 633
drwxrwxrwx   8 root      wheel    240 Sep 22  1988 .
drwxr-xr-x  26 root      wheel    512 Apr 12 19:43 ..
drwxrwxr-x   2 bin       sys     2512 Sep 22  1988 bin
-rwxr-xr-x   1 bin       sys     8986 Jun  8  1979 boot
drwxrwxr-x   2 bin       sys      160 Sep 22  1988 dev
drwxrwxr-x   2 bin       sys      336 Sep 22  1988 etc
-rwxr-xr-x   1 operator  kmem   53302 Jun  8  1979 hphtunix
-rwxr-xr-x   1 operator  kmem   52850 Jun  8  1979 hptmunix
drwxrwxr-x   2 bin       sys      320 Sep 22  1988 lib
drwxrwxr-x   2 root      bin       96 Sep 22  1988 mdec
-rwxr-xr-x   1 root      kmem   50990 Jun  8  1979 rkunix
-rwxr-xr-x   1 root      kmem   51982 Jun  8  1979 rl2unix
-rwxr-xr-x   1 operator  kmem   51790 Jun  8  1979 rphtunix
-rwxr-xr-x   1 operator  kmem   51274 Jun  8  1979 rptmunix
drwxrwxr-x  11 root      10       176 Sep 22  1988 usr
$ mkdir ttt
$ ls -al
total 633
drwxrwxrwx   9 root      wheel    256 Sep 22  1988 .
drwxr-xr-x  26 root      wheel    512 Apr 12 19:43 ..
drwxrwxr-x   2 bin       sys     2512 Sep 22  1988 bin
-rwxr-xr-x   1 bin       sys     8986 Jun  8  1979 boot
drwxrwxr-x   2 bin       sys      160 Sep 22  1988 dev
drwxrwxr-x   2 bin       sys      336 Sep 22  1988 etc
-rwxr-xr-x   1 operator  kmem   53302 Jun  8  1979 hphtunix
-rwxr-xr-x   1 operator  kmem   52850 Jun  8  1979 hptmunix
drwxrwxr-x   2 bin       sys      320 Sep 22  1988 lib
drwxrwxr-x   2 root      bin       96 Sep 22  1988 mdec
-rwxr-xr-x   1 root      kmem   50990 Jun  8  1979 rkunix
-rwxr-xr-x   1 root      kmem   51982 Jun  8  1979 rl2unix
-rwxr-xr-x   1 operator  kmem   51790 Jun  8  1979 rphtunix
-rwxr-xr-x   1 operator  kmem   51274 Jun  8  1979 rptmunix
drwxr-xr-x   2 uch       staff     32 Apr 23 21:45 ttt
drwxrwxr-x  11 root      10       176 Sep 22  1988 usr
$ mkdir ttt/bbb
$ ls -al ttt
total 0
drwxr-xr-x  3 uch   staff   48 Apr 23 21:45 .
drwxrwxrwx  9 root  wheel  256 Sep 22  1988 ..
drwxr-xr-x  2 uch   staff   32 Apr 23 21:45 bbb
$ ls -al ttt/bbb
total 0
drwxr-xr-x  2 uch  staff  32 Apr 23 21:45 .
drwxr-xr-x  3 uch  staff  48 Apr 23 21:45 ..
$ ln rkunix ttt/bbb/aaa
$ ls -al rkunix
-rwxr-xr-x  2 root  kmem  50990 Jun  8  1979 rkunix
$ ls -al ttt/bbb/aaa
-rwxr-xr-x  2 root  kmem  50990 Jun  8  1979 ttt/bbb/aaa
$ rm rkunix
override rwxr-xr-x  root:kmem for 'rkunix'? y
$ ls -al ttt/bbb/aaa
-rwxr-xr-x  1 root  kmem  50990 Jun  8  1979 ttt/bbb/aaa
$ mv ttt/bbb/aaa rkunix
$ rmdir ttt
rmdir: ttt: File exists
$ rmdir ttt/bbb
$ ls -al ttt
total 0
drwxr-xr-x  2 uch   staff   32 Apr 23 21:45 .
drwxrwxrwx  9 root  wheel  256 Sep 22  1988 ..
$ rmdir ttt
$ ls -al
total 633
drwxrwxrwx   8 root      wheel    240 Sep 22  1988 .
drwxr-xr-x  26 root      wheel    512 Apr 12 19:43 ..
drwxrwxr-x   2 bin       sys     2512 Sep 22  1988 bin
-rwxr-xr-x   1 bin       sys     8986 Jun  8  1979 boot
drwxrwxr-x   2 bin       sys      160 Sep 22  1988 dev
drwxrwxr-x   2 bin       sys      336 Sep 22  1988 etc
-rwxr-xr-x   1 operator  kmem   53302 Jun  8  1979 hphtunix
-rwxr-xr-x   1 operator  kmem   52850 Jun  8  1979 hptmunix
drwxrwxr-x   2 bin       sys      320 Sep 22  1988 lib
drwxrwxr-x   2 root      bin       96 Sep 22  1988 mdec
-rwxr-xr-x   1 root      kmem   50990 Jun  8  1979 rkunix
-rwxr-xr-x   1 root      kmem   51982 Jun  8  1979 rl2unix
-rwxr-xr-x   1 operator  kmem   51790 Jun  8  1979 rphtunix
-rwxr-xr-x   1 operator  kmem   51274 Jun  8  1979 rptmunix
drwxrwxr-x  11 root      10       176 Sep 22  1988 usr
$ 


マルチトップQクリアー、主剤100gで吹きました。これは捨て吹きにして、もう
一度吹きたいところだけど、まぁいいか。



V7 Filesystem on NetBSDは、なんとか書き込みがちょこっとできたまで。V7の ファイルシステムの仕組みなんて十年前から知っていたけれど、実際作ってみ るとスーパーブロックの中のフリーブロックのリストの扱いとか、データブロッ クがダイレクトからインデックス1、インデックス1からインデックス2に変わる 時の処理とか、一体どこでディスクに同期する?とか、I/Oエラーでどこまでの 層であきらめるのかとか、結構大変...。マイOS用に共用したいので呑気にその 場でmallocなんてのも避けたいので、結構無理したり。マウント時に必要なメ モリを見積れる構造にしたいんだ。
$ cd /mnt
$ ls -al
total 633
drwxrwxrwx   8 root      wheel    240 Sep 22  1988 .
drwxr-xr-x  26 root      wheel    512 Apr 12 19:43 ..
drwxrwxr-x   2 bin       sys     2512 Sep 22  1988 bin
-rwxr-xr-x   1 bin       sys     8986 Jun  8  1979 boot
drwxrwxr-x   2 bin       sys      160 Sep 22  1988 dev
drwxrwxr-x   2 bin       sys      336 Sep 22  1988 etc
-rwxr-xr-x   1 operator  kmem   53302 Jun  8  1979 hphtunix
-rwxr-xr-x   1 operator  kmem   52850 Jun  8  1979 hptmunix
drwxrwxr-x   2 bin       sys      320 Sep 22  1988 lib
drwxrwxr-x   2 root      bin       96 Sep 22  1988 mdec
-rwxr-xr-x   1 root      kmem   50990 Jun  8  1979 rkunix
-rwxr-xr-x   1 root      kmem   51982 Jun  8  1979 rl2unix
-rwxr-xr-x   1 operator  kmem   51790 Jun  8  1979 rphtunix
-rwxr-xr-x   1 operator  kmem   51274 Jun  8  1979 rptmunix
drwxrwxr-x  11 root      10       176 Sep 22  1988 usr
$ cp /bin/ls .
$ ls -al
total 688
drwxrwxrwx   8 root      wheel    256 Jan  1  1970 .
drwxr-xr-x  26 root      wheel    512 Apr 12 19:43 ..
drwxrwxr-x   2 bin       sys     2512 Sep 22  1988 bin
-rwxr-xr-x   1 bin       sys     8986 Jun  8  1979 boot
drwxrwxr-x   2 bin       sys      160 Sep 22  1988 dev
drwxrwxr-x   2 bin       sys      336 Sep 22  1988 etc
-rwxr-xr-x   1 operator  kmem   53302 Jun  8  1979 hphtunix
-rwxr-xr-x   1 operator  kmem   52850 Jun  8  1979 hptmunix
drwxrwxr-x   2 bin       sys      320 Sep 22  1988 lib
-r-xr-xr-x   1 uch       staff  28448 Jan  1  1970 ls
drwxrwxr-x   2 root      bin       96 Sep 22  1988 mdec
-rwxr-xr-x   1 root      kmem   50990 Jun  8  1979 rkunix
-rwxr-xr-x   1 root      kmem   51982 Jun  8  1979 rl2unix
-rwxr-xr-x   1 operator  kmem   51790 Jun  8  1979 rphtunix
-rwxr-xr-x   1 operator  kmem   51274 Jun  8  1979 rptmunix
drwxrwxr-x  11 root      10       176 Sep 22  1988 usr
$ ./ls
bin      dev      hphtunix lib      mdec     rl2unix  rptmunix
boot     etc      hptmunix ls       rkunix   rphtunix usr
$ cd /
$ umount /mnt
$ mount_v7fs -o nodev,nosuid /dev/vnd0a /mnt
$ cd /mnt
$ ./ls
bin      dev      hphtunix lib      mdec     rl2unix  rptmunix
boot     etc      hptmunix ls       rkunix   rphtunix usr
$ rm ls
override r-xr-xr-x  uch:staff for 'ls'? y
$ ls
bin      dev      hphtunix lib      rkunix   rphtunix usr
boot     etc      hptmunix mdec     rl2unix  rptmunix
$ df
Filesystem      512-blocks       Used      Avail %Cap Mounted on
/dev/wd0a         149496448   43818464   98203164  30% /
/dev/wd0e            987856       2066     936398   0% /w
kernfs                    2          2          0 100% /kern
ptyfs                     2          2          0 100% /dev/pts
procfs                    8          8          0 100% /proc
alexandrite:/usr  284659588  224135196   46291416  82% /alexandrite
/dev/vnd0a            17278      15776       1502  91% /mnt
$ 


そしてまた塗装準備。最終塗装が二回というのはきついな。息切れ気味。そも
そも塗装好きじゃないし...。





このままだと扉を開く度にテーブルの上を掃いてしまうな...と気付き、台輪を
用意しました。コントラスト重視で白にしてみたのだけど、やり過ぎかな...。



本屋で漫画のチェックをしていると、哭きの竜外伝? 懐しくなって買ってしまっ た。やっぱいい! ついリターンキーを叩く小指に力が入ってしまう。


内側と同じくニッペの水性木部用ステイン(セージグリーン)を。今回はちょっ
と水で希釈して刷毛捌き中の乾燥を押さえてみたのだけど、今度はタレの問題
がでてうまくいかず。



あぁぁ。かといってここから刷毛入れると思いっきり刷毛跡が残ってしまう。 これはどっちかっていうとクリアーグリーンの塗料に近い感じがする。なかなか 思ったような仕上りは難しい。



仕上げの鉋かけ。なかなか追いこめなかった。



なかなか今回、このスーパーフロントバイスが活躍。うれしい。

いいね。死に節はポンチで打って押しこんでから鉋かけた。

緑の下地の白ステインを塗ったとこまで。



内側の塗装が終わったところでやって組み立て。留めの組み立ては位置が決ま
らないので苦手。楔もきちんと奥まで入ったかどうか...。



本体も組み立て。棚板は一つ一つは多少ゆるめな感じでも、いざ組み立てると 思いっきりゴムハンマーで叩くくらいになってしまう。

0.5mm突き出しです。

なんとかそこそこ目論見通り。今回底の内側は多めに削ってみた。

明日の鉋がけに備えて仕込んでいたのだけど、どうもパッとせず。不安だ。ガッ ときたら泣ける。



菜園状況。ナスもポット上げしました。期限切れの種は発芽率が目に見えて悪い。
50%かな。



棚板の塗膜が悪いので、#400で削ってもう一度吹きました。切削油、その他に まみれるので塗膜はきっちりしておかないと。ロックエースの二液アクリルウ レタンなのでガソリンでも溶けません。



塗装セッティング。毎度ながら気の進まない作業だ。



ロックエースのマルチトップクリアーQで。主剤350gも使った。刷毛塗りしよう かとも思ったのだけど、無難にガン吹きで。木だとどうしても木からの空気で 気泡ができてしまう。
#400で削ってもう一度吹けばかなりシャキっとするのだけど、どうしようかな。



#400で研磨して塗り直しました。ましにはなったものの、一度失敗したところ
は残ってしまった。



白組も#400研磨。これはこのままクリア塗装の下地に。

マイコンクラスにファイルシステムを実装するとなると、大体FATになる。実装 の小ささ、データのやりとりのしやすさから妥当な選択だ。マイOSではSystem V Boot File Systemを使っていたのだけど、このファイルシステムはブートロー ダからカーネルが読みやすいことを目的にしたものなので、inodeの数があまり に少ないし、ディレクトリも掘れない。連続ブロックのファイルシステムなの で、先頭セクタさえわかってれば強引にデータを拾ってこれるという利点もあ る。やっぱり普通のファイルシステムが欲しい。今更FATを実装するのもおもし ろくない。ということでFATくらいにコンパクトに実装できそうなところで UNIX 7th Editionのファイルシステムを採用することにしてみた。勝手に採用 してみたところで、ホストとデータのやりとりができなくては困る。というこ とで、ちまちまNetBSDにVersion 7のファイルシステムサポートを書いていたの だけど、なんとか対岸に辿りついた。まだ読み込みだけだけど、この瞬間がい い。PDP-11のディスクイメージをマウント。
$ dd if=unix_v7_rl.dsk of=test.img bs=512 seek=2 conv=notrunc
20480+0 records in
20480+0 records out
10485760 bytes transferred in 0.116 secs (90394482 bytes/sec)
$ vnconfig vnd0 test.img
$ disklabel -e vnd0
$ disklabel vnd0
# /dev/rvnd0d:
type: vnd
disk: vnd
label: fictitious
flags:
bytes/sector: 512
sectors/track: 32
tracks/cylinder: 64
sectors/cylinder: 2048
cylinders: 10
total sectors: 20482
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0		# microseconds
track-to-track seek: 0	# microseconds
drivedata: 0 

4 partitions:
#        size    offset     fstype [fsize bsize cpg/sgs]
 a:     20480         2  Version 7                     # (Cyl.      0*-     10*)
 d:     20482         0     unused      0     0        # (Cyl.      0 -     10*)
$ mount_v7fs -o nodev,nosuid /dev/vnd0a /mnt
$ ls -al /mnt
total 633
drwxrwxrwx   8 root      wheel    240 Sep 22  1988 .
drwxr-xr-x  26 root      wheel    512 Apr 12 19:43 ..
drwxrwxr-x   2 bin       sys     2512 Sep 22  1988 bin
-rwxr-xr-x   1 bin       sys     8986 Jun  8  1979 boot
drwxrwxr-x   2 bin       sys      160 Sep 22  1988 dev
drwxrwxr-x   2 bin       sys      336 Sep 22  1988 etc
-rwxr-xr-x   1 operator  kmem   53302 Jun  8  1979 hphtunix
-rwxr-xr-x   1 operator  kmem   52850 Jun  8  1979 hptmunix
drwxrwxr-x   2 bin       sys      320 Sep 22  1988 lib
drwxrwxr-x   2 root      bin       96 Sep 22  1988 mdec
-rwxr-xr-x   1 root      kmem   50990 Jun  8  1979 rkunix
-rwxr-xr-x   1 root      kmem   51982 Jun  8  1979 rl2unix
-rwxr-xr-x   1 operator  kmem   51790 Jun  8  1979 rphtunix
-rwxr-xr-x   1 operator  kmem   51274 Jun  8  1979 rptmunix
drwxrwxr-x  11 root      10       176 Sep 22  1988 usr
$ cd /mnt
$ file rkunix
rkunix: PDP-11 separate I&D not stripped
$ ls -lR usr/mdec
total 25
-rwxr-xr-x  1 bin   sys   476 Jun  8  1979 hpuboot
-rw-r--r--  1 bin   sys  3243 Jun  8  1979 hpuboot.s
-rw-r--r--  1 bin   sys   264 Jun  8  1979 makefile
-rwxr-xr-x  1 root  sys   446 Jun  8  1979 rkuboot
-rw-r--r--  1 root  sys  2961 Jun  8  1979 rkuboot.s
-rw-r--r--  1 root  sys   500 Jun  8  1979 rluboot
-rw-r--r--  1 root  sys  3611 Jun  8  1979 rluboot.s
-rwxr-xr-x  1 bin   sys   460 Jun  8  1979 rpuboot
-rw-r--r--  1 bin   sys  3137 Jun  8  1979 rpuboot.s
drwxrwxr-x  3 bin   sys    48 Sep 22  1988 usr
-rwxr-xr-x  1 root  sys   516 Jun  8  1979 xxx

usr/mdec/usr:
total 0
drwxrwxr-x  2 bin  sys  288 Sep 22  1988 mdec

usr/mdec/usr/mdec:
total 8
-rw-r--r--  1 bin   sys     2997 Jun  8  1979 bootstrap.s
-rw-r--r--  1 bin   sys      450 Jun  8  1979 hk6.s
-rw-r--r--  1 root  sys      472 Jun  8  1979 hk6uboot
-rw-r--r--  1 bin   sys      471 Jun  8  1979 hk7.s
-rw-r--r--  1 root  sys      472 Jun  8  1979 hk7uboot
-rw-r--r--  1 bin   sys      529 Jun  8  1979 hp.s
-rw-r--r--  1 root  sys      468 Jun  8  1979 hpuboot
-rw-r--r--  1 bin   sys      422 Jun  8  1979 makefile
-rw-r--r--  1 bin   sys      277 Jun  8  1979 rk.s
-rw-r--r--  1 root  sys      438 Jun  8  1979 rkuboot
-rw-r--r--  1 bin   sys      920 Jun  8  1979 rl.s
-rw-r--r--  1 root  daemon   508 Jun  8  1979 rluboot
-rw-r--r--  1 bin   sys      528 Jun  8  1979 rm.s
-rw-r--r--  1 root  sys      468 Jun  8  1979 rmuboot
-rw-r--r--  1 bin   sys      423 Jun  8  1979 rp.s
-rw-r--r--  1 root  sys      452 Jun  8  1979 rpuboot
$ cat usr/mdec/hk6.s
cat: usr/mdec/hk6.s: No such file or directory
$ cat usr/mdec/usr/mdec/hk6.s
/ rk06 disk driver

.globl dno,buf,dktmp

hkcs2 = 177450
hkdc  = 177460
clear   = 40
pkack = 3
read  = 21

dkinit:
	rts pc

dkrblk:
	mov	r1,-(sp)
	mov	dno,r1
	clr	r0
	div	$20.,r0
	mov	r1,dktmp
	mov	r0,r1
	clr	r0
	div	$3,r0
	ash	$10,r1
	bis	r1,dktmp
	mov	$hkcs2,r1
	mov	$clear,(r1)
	mov	r0,*$hkdc
	mov	dktmp,-(r1)
	mov	$buf,-(r1)
	mov	$256.,-(r1)
	mov	$pkack,-(r1)
1:	tstb	(r1)
	bpl	1b
	mov	$read,(r1)
2:	tstb	(r1)
	bpl	2b
	mov	(sp)+,r1
	rts	pc

end:
$ df
Filesystem      512-blocks       Used      Avail %Cap Mounted on
/dev/wd0a         149496448   43552656   98468972  30% /
/dev/wd0e            987856       2066     936398   0% /w
kernfs                    2          2          0 100% /kern
ptyfs                     2          2          0 100% /dev/pts
procfs                    8          8          0 100% /proc
alexandrite:/usr  284659588  223930272   46496340  82% /alexandrite
/dev/vnd0a            17278       6477      10801  37% /mnt
$ 



緑と白のツートンカラーにするのと、内側は塗りにくいので組み立て前に内側
は塗装。ワシンのポアーステイン白(水性)を塗って、緑部分はその上にニッペ
の水性木部用ステイン(セージグリーン)。緑をむらなく塗るのが難しく、最初
の一掃きで一発で決めないとだめだ。



こっちは白組。白はかなり塗りやすかったのだけど...。




前板と後板も切断し、側板にこれを入れる溝も切って、切断切削作業は終わり。
この構造を自分の定番にしようと思う。



扉の部分はこんな感じに面とりしてみた。扉の留めは構造的に強度ないので前 板はかなりゆる目にした。



扉は留め接ぎにしてみることにしました。以前使ったジグを使って加工したの
ですが、もうちょっと大きいのを作っておくとクランプが楽かも。



この時期、部屋からは常に花見状態。ついぼけーっと眺めてしまう。今日から 散りはじめて風情がいい。でもガレージの扉は閉めておかないと花びらの掃除 が大変。

接いでおいた前板と後板の目違い払い。ここは気合いなのでまずは鉋を研いで から。研いだ直後は気持ちいい。うっかり無意味に削り過ぎてしまいそう。自 動鉋の段階で思いっきり逆目掘れしてしまった部分はもうリカバリ不能。節の まわりはどうしても辛い...。



二つの習作を経て、ついにダブテールスレッドの本番。ケガキはCADで原寸大プ
リントしたのをスプレー糊ではりつけているのだけど、切削部分をハッチング
しておくの忘れた。のでまた手でハッチング。ここまでしておかないと、どう
しても、もやもや感がある。



1mもあると結構大変。このあたりが限界かな。

桜は今日が満開のピーク。

テーブルソー部分終了。

底は糸鋸盤でケガキ線ぴったしに切断。おおまかに切断して後は鑿でというの はあまりうまくいかった。

鑿とカッターで角を修正。ここまで並ぶと天秤差しという感じ。やっぱり8度は ゆるいよね...。とはいえあまり角度がきついと、スレッドで作るのには辛くな る。(テーブルソー天面からのオフセットが大きくなり過ぎる)
組みあがりが楽しみだ。

刻み終わるとうっとりする。

棚板の加工。ここは例によって縦ルーターテーブルで。ルーターテーブルにそ の場でセットするんじゃなく専用に欲しいところ。

ルーターテーブルで面取りしてホゾを切断。刃物はキンキンに研いでおくと削 りの楽しさが全然違う。とはいえちょっと面倒なのも事実。



ついにルータユニットの出番。実用にあたってセットアップしてみると、ビッ
トの出し具合の調整がとても難しい。というのもこの9800円のルータのプラン
ジがやたら渋いこともあり。一度バラしてあたりつけないとだめかも。

ガイドユニットの直角を調整して、ルータガイドのセンタをケガキ線に合わせ て開始。これ、プレート下に降ろさなくても上から目視でOKだった。

6mmのストレートでおおまかに掘って、そのままアリビットのルータに交換して 切削。この限られた用途ならこの安いルータでも十分いける。

さくさくと移動して切削。クランプユニットの最後に押しクランプをつけてお いたのはやっぱりよかった。上からのクランプは今回は必要なかった。

一ヶ月半かけて作ったルーターユニット。なんとか実用できてほっとしました。

菜園状況、トマトは本葉が出てきた。そろそろポットに移さないと。ヒョロヒョ ロなのが気になる。ちょっと芽が出たら風にさらした方がいいのかな。呑気な 温室のせいで無闇に光を求めて成長してるような気がする。



シーズニングが足りないのだけど、作りはじめました。16mm厚に製材して前板
を後板を接ぎました。ストレートエッジあてながら鉋で平面出すのはなかなか
難しい。





電気鉋を新調。今迄のは40年物の日立のだからいいでしょう。もうこれに合う
刃もなくて、使えそうなサイズの刃をルーズホール化して強引につけていた。

作りとしては40年前のはとてつもなく贅沢なんだよね。

今回235mm幅と手押し鉋にのらない材をそのまま使うので、平面出しを手でやる 必要があるのだ。反り、節上等材なので、電動鉋がないと...。



今日はニッペの木部用水性ステイン、セージグリーンを試してみた。奥が素の
パインに塗ってみたもの。手前の左側は昨日の緑の上にさらに塗ってみたもの。
見えてきたかも。



バイス棚の設計まで終わりました。前回の習作通りホゾは0.5mm突き出るようにした。



桜も三分咲き。花好きの鳥が花を食べてました。


今回作るのはフライス盤の横に置く、バイス棚(扉付き)。ガレージは密閉性が 悪く、大雨の時には浸水するのでとにかく外気に触れさせないようにしたい。 おおまかに設計して荒木取り。

ステインを試してみた。白は弱いし、緑の発色は好みじゃないな...。この上の クリアとの相性も確かめないといけないし。

モデラー時代(30年以上前)はウェザリングの鬼だっただけあって、こういう Rustyなテイストは大好きなんだけど、パリっと仕上げたい気持ちもある。実用 性は高く(耐候性、維持性)、木のテクスチャは残しつつ、自由に色付けしたい のだけど...。



目違いを払いました。鉋を新調して以来、なかなかこの作業が気持ちがいい。



最近の水性塗料ってどんな感じだろうということでニッペのフレッシュ水性ワイドを使ってみた。

隠蔽力も強く、速乾。が、もっさりし過ぎかなということで途中から水で希釈 してみたところ、最初に塗ったところはもう乾いてしまっていた。いわゆるペ ンキ用途にはなかなかの性能だけれど、ちょっと違うな。

昔の水性塗料は乾燥時の悪臭がいやだったけれど、ほとんど無臭。塗膜表面は 粗い。内側は白で塗ってみた。塗料:水 1:1で。白一回塗りでこの隠蔽力は凄い。 でもこれは本質的に耐候性をもたせるためだけの塗料かな。
塗り直そうかと思ってもう一度サンディングしたけれど、これはこのままでア ンティーク調ってことにしておこうか。

菜園状況。ナス(一番左列)も遅ればせながら発芽してきました。

---------------------------------------------------------------------E-
110403
----------------------------------------------------------------------
次回作へのお膳立ても、そこそこ終わったので久々に木工。といってもしばら くやっていないと、どうも日和がち。練習がてらに端材で小物を。ダブテール スレッドは真上から位置を確かめるといい。

スレッドは送りだけで戻さない。戻りでぶれて失敗することがある。スレッド の固定がしっかりしていないことが原因なのだけど、ここはどうしたものだろ うか。

鎬鑿はホームセンターで買ってきた三分の鑿をグラインダで削って作りました。 きっちり寸法通りに底をさらうのがとても難しい。むしろ外側は寸法より多め くらいで、内側はゆるめになるように斜めにさらうと楽だし見た目もいいかも。

仮り組み。ダブテールスレッドの時点での失敗もあり、ちょっとゆる目。

これはビットを出したままルーターを置いておくための台。

マイOS on NetBSD/amd64はとりあえず、いつものが見えるとこまで。ちょこっ とやればできたんだから、もっと早く作っておけばよかった。これで論理的な とこはほぼユーザランドで作れるはずだ。
$ ./test3.lua.elf 
SIO@
stack_start: 0x1035c68
data: 0x358a0-0x35a40 416byte
bss: 0x35a40-0x35c68 552byte
hello world pc=0xc1e sp=0x1035c40
sizeof short :2
sizeof int :4
sizeof long :8
sizeof long long:8
>help
help
avaliable command: help reset lua_test 
>lua_test
lua_test
->lua
sbrk:base=0x35c68 size=0
sbrk:base=0x35c68 size=64
sbrk:base=0x35ca8 size=1024
sbrk:base=0x360a8 size=1024
sbrk:base=0x364a8 size=1024
sbrk:base=0x368a8 size=1024
sbrk:base=0x36ca8 size=1024
sbrk:base=0x370a8 size=1024
sbrk:base=0x374a8 size=1024
sbrk:base=0x378a8 size=2048
sbrk:base=0x380a8 size=1024
sbrk:base=0x384a8 size=1024
sbrk:base=0x388a8 size=1024
sbrk:base=0x38ca8 size=1024
sbrk:base=0x390a8 size=3072
sbrk:base=0x39ca8 size=1024
sbrk:base=0x3a0a8 size=1024
sbrk:base=0x3a4a8 size=1024
sbrk:base=0x3a8a8 size=1024
sbrk:base=0x3aca8 size=1024
sbrk:base=0x3b0a8 size=3072
sbrk:base=0x3bca8 size=1024
sbrk:base=0x3c0a8 size=1024
Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio
> io.write ("hello world")
io.write ("hello world")
sbrk:base=0x3c4a8 size=1024
fwrite
hello world>   C-c C-c
$ 



マイOSの開発にはユーザランドで動くマイOSがあるといいので、NetBSD/amd64
上で動くものを作ることにしました。本当はi386の方が楽だったんだけど、
amd64に触れるいい機会かも。まずはlibcなしのhello world.
.note.netbsd.identを作っておき、これがELFセクションとして見えるようにし
ておけばいい。

rm -f main.o a.out
$ cat main.c
#define	ELF_NOTE_NETBSD_NAMESZ		7
#define	ELF_NOTE_NETBSD_DESCSZ		4
#define	ELF_NOTE_TYPE_NETBSD_TAG	1
#define	ELF_NOTE_NETBSD_NAME		"NetBSD\0\0"
#define	__NetBSD_Version__	599002400	/* NetBSD 5.99.24 */

#define	__STRING(x)	#x
#define	__S(x)	__STRING(x)
__asm(
	".section\t\".note.netbsd.ident\", \"a\"\n"
	"\t.p2align\t2\n\n"

	"\t.long\t" __S(ELF_NOTE_NETBSD_NAMESZ) "\n"
	"\t.long\t" __S(ELF_NOTE_NETBSD_DESCSZ) "\n"
	"\t.long\t" __S(ELF_NOTE_TYPE_NETBSD_TAG) "\n"
	"\t.ascii\t" __S(ELF_NOTE_NETBSD_NAME) "\n"
	"\t.long\t" __S(__NetBSD_Version__) "\n\n"

	"\t.previous\n"
	"\t.p2align\t2\n"
);

__asm(".text;.align 8;.global sys_write;sys_write:;\
mov $4, %eax;mov %rcx, %r10;syscall;retq");

int sys_write(int, const void *, int);

void
_start ()
{
  char str[] = "hello world\n";

  sys_write (1, str, sizeof str - 1);

  while (/*CONSTCOND*/1)
    ;
  //NOTREACHED
}
$ cat ldscript
OUTPUT_FORMAT ("elf64-x86-64")
OUTPUT_ARCH (i386:x86-64)

SECTIONS
{
  .note.netbsd.ident :
  {
	*(.note.netbsd.ident)
	. = ALIGN (8);
  }

  .text :
  {
	*(.text*)
	*(.rodata.*)
	. = ALIGN (8);
  }

  .data :
  {
	*(.data.*)
	. = ALIGN (8);
  }

  .bss :
  {
	bss_start = .;
	*(.bss.*)
	. = ALIGN (8);
  }
  bss_end = .;

/*
	/DISCARD/ : { *(*plt*) }
	/DISCARD/ : { *(.eh_frame) }
	/DISCARD/ : { *(.comment) }
*/
}
$ gmake
x86_64-netbsd-elf-gcc -nostdinc -fno-builtin -c -o main.o main.c
x86_64-netbsd-elf-ld -T ldscript -entry=_start main.o
$ ./a.out
hello world
  C-c C-c
$ objdump -x a.out

a.out:     file format elf64-x86-64
a.out
architecture: i386:x86-64, flags 0x00000112:
EXEC_P, HAS_SYMS, D_PAGED
start address 0x0000000000000023

Program Header:
    LOAD off    0x0000000000200000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**21
         filesz 0x00000000000000a8 memsz 0x00000000000000a8 flags r-x
    NOTE off    0x0000000000200000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**2
         filesz 0x0000000000000018 memsz 0x0000000000000018 flags r--

Sections:
Idx Name          Size      VMA               LMA               File off  Algn
  0 .note.netbsd.ident 00000018  0000000000000000  0000000000000000  00200000  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  1 .text         00000048  0000000000000018  0000000000000018  00200018  2**3
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  2 .rodata       0000000d  0000000000000060  0000000000000060  00200060  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  3 .eh_frame     00000038  0000000000000070  0000000000000070  00200070  2**3
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  4 .comment      0000003c  0000000000000000  0000000000000000  002000a8  2**0
                  CONTENTS, READONLY
SYMBOL TABLE:
0000000000000000 l    d  .note.netbsd.ident	0000000000000000 .note.netbsd.ident
0000000000000018 l    d  .text	0000000000000000 .text
0000000000000060 l    d  .rodata	0000000000000000 .rodata
0000000000000070 l    d  .eh_frame	0000000000000000 .eh_frame
0000000000000000 l    d  .comment	0000000000000000 .comment
0000000000000000 l    df *ABS*	0000000000000000 main.c
0000000000000018 g       .text	0000000000000000 sys_write
0000000000000023 g     F .text	000000000000003b _start
00000000000000a8 g       *ABS*	0000000000000000 bss_end
00000000000000a8 g       .eh_frame	0000000000000000 bss_start


$ 


ルーターユニット、再組みたて。チェーンユニットの部分にガタが大きいので
カラーを切削したり、地味にまだまだ作業。



今日はこんな部品を。苦手な長穴加工も慣れてきたかも。両端だけ指定円でド リルで開けて、その間は小さめのドリルでラフに開けて、指定サイズより2mm小 さいエンドミルでまずは送り3mmくらいづつでゆっくり穴をつなげて、最後に端 面を一気につなげるといい。

これはルータのベースプレートの中心線プレートを位置を変えずに上下できる ようにするためのガイド。