れんとう

まいにち なにか ひとつ

秋葉原回顧録 第2回 ぷらっとホーム 〜UNIXの理想郷は本当にあったんだ!〜

ビルまるごとUNIX専門店、そんなところがあったなんて信じられますか?
本当にあったんです。その名も、ぷらっとホーム。

ミツワビル、今は、@ほぉ〜むカフェになってる、あのビルです。
「ぷらっとホームが@ほぉ〜むになった!」というのは有名なネタセリフですね。

デジカメデータを漁っていたら、在りし日のぷらっとホームの姿があったので、貼っておきますね。
2002年12月に撮影したもののようです。

 

f:id:dawon2015:20191202011445j:plain

かつては、店主の本多さんの似顔絵看板だったのも懐かしい。

ほんと、すごいお店だったんですよ。
BeBoxも展示してたし。

BeOSのパッケージも販売してた!パッケージではないけど、以前、DLしてインストールしたBeOSの写真も貼っておきますね。

これ…VMじゃなくて、実機で動かしてた頃の、貴重なスクショなんだぜ!

f:id:dawon2015:20191202011948j:plain



レゴマインドストームなんかもいち早く輸入販売初めててたし。
あの頃は、ネット回線も細かったし、CD-RWも一般的じゃなかったんですね。
なので、PC-UNIXのインストールディスクが売ってるのは嬉しかったし、日本ではまだメジャージャないもの、NetBSDとかOpenBSDとか珍しいものがゴロゴロしてた。OpenBSDがまだ2.9だった頃にCDセットを買ったのもこのお店。
PCパーツにしても、PC-UNIXで完動するブツが揃っていて、大変お世話になりました。
ISAバスのNE2000互換NICとかSoundBlaster16とか、色々、ね。

陳腐な言葉かもしれないけど…未来を見せてくれて、ドキドキとワクワクをくれるお店だったんだ…。
UNIXの理想郷は本当にあったんだ!

そんなUNIXの理想郷も、2005年、店舗を閉鎖して、通販サイトと法人事業に特化した時は…とても悲しかったことをよく覚えている。

時代の流れだったんですかね?
2005年といえば、秋葉原ダイビルの開業、電車男ブーム、ヨドバシAkibaの開店。そして2006年には秋葉原UDXの開業。
ちょうど、秋葉原が変貌する時期に姿を消しました。
でも、それはよかったのかもしれない。
2000年にアプライアンスマイクロサーバーとして登場したOpenBlocksは、OpenBlocksIoTと進化したラインナップも加えて、今も存在している。
数々の店舗が、閉鎖から通販特化へと移行しつつも姿を消したという事実を思うと、今もそのDNAが脈々と受け継がれて企業として続いていることは、嬉しい限りだな、と思う。

キャッシュDNSの夢を見た

またDNSをいじってる…

かつて、「DNSは全ての基本」と教わった。
三つ子の魂百まで。DNSの設定ができてこそ一人前だと思っている。
基本的なことしかできないけどね(笑)

で、だ。
また、BeagleBone Blackでセカンダリを立ち上げたので、嬉々として、各クライアントにDNSIPアドレスを書き込んで喜んでいたのだよ。
そして、ふと、気がつく…これ…DNSのアドレスが変更になったら、すごくめんどくさくないか?とね。

ならばcacheのアドレスを書けばいいじゃない?

ということで、cacheDNSのアドレスを書き込んでおけば、MasterDNSのアドレスが変更になったら、cacheDNSでの設定を変えるだけで済むよね?ということで、cacheの設定を見直すことにした。

今のDNSの構成はこんな感じ。

 

MainRouter

├──RouterA

  ├──DNS(Master)

      ├──DNS(Slave1)

      ├──DNS(Slave2)

      └──DNS(cache)

  └──DNS(MasterCopy)

└──RouterB

    └──DNS(Master)

 


このツリーが示すように、cacheはマスターの下にぶら下がっていて、全ての問い合わせをMasterDNSに投げている。
MasterDNSがローカルかグローバルかを判断して、自分自身(ローカル)かMainRouter(グローバル)に問い合わせして、cacheDNSに答えを返している。
でもね、これ、よく考えてみると、MasterDNSがこけたら、全てアウト。SlaveDNSを2つも構築している意味がないじゃんね。

なので、こうした。

・ローカルゾーンの名前解決は、MasterDNS、SlaveDNS1、SlaveDNS2のいずれかに問い合わせする。
・それ以外のゾーンはグローバルとみなして、MainRouterに問い合わせする。

という方針で、設定を考えてみた。

unboundの設定を変える

cachheDNSはunboundで構築してるわけだが…これ楽だね?
BINDはキャッシュと権威が同居してるけど、unboundはキャッシュ機能がメインなので、設定がすっきりとかける。
はじめ、間違って、stub-zoneに設定を書いたけど、forward-zoneにちゃんと書いてうまくいったよ。

設定ファイルはこんな感じ。

 

# chache server

 

server:

    interface: 172.18.10.9 DNSサービスを稼働するNICIPアドレス

    do-ip6: no

 

    access-control: 0.0.0.0/0 refuse ← 全拒否

    access-control: 172.18.0.0/16 allow ← からの、ローカルIPからは許可

 

    hide-identity: yes

    hide-version: yes

 

local-zone: "18.172.in-addr.arpa." transparent ← 名前解決したいプライベートIPのゾーンを指定

 

remote-control:

        control-enable: yes

        control-use-cert: no

 

forward-zone:

name: "dedara.jp." ← 名前解決したいローカルドメインを指定

forward-addr: 172.18.0.1 ← MasterDNSにフォワード

forward-addr: 172.18.10.8 ← SlaveDNS1にフォワード

forward-addr: 172.18.101.103 ← SlaveDNS2にフォワード

 

forward-zone:

name: "18.172.in-addr.arpa." ← プライベートIPのゾーンを指定

forward-addr: 172.18.0.1 ← MasterDNSにフォワード

forward-addr: 172.18.10.8 ← SlaveDNS1にフォワード

forward-addr: 172.18.101.103 ← SlaveDNS2にフォワード

 

forward-zone:

        name: "." ← 上記以外の全てのゾーン

        forward-addr: 192.168.0.1 ← プロバイダ接続しているルーターフォワード

 


うん、言われて見ればそうだよね。
こうなるよね。

MasterやSlaveをstopとstartを繰り返して、片肺で動かしつつ、digしながらローカルとグローバルを正引き、逆引き、ちゃんとできるか試してO.K.でした。

こうしてcacheは完成!

実稼働環境では、DNSって1度構築すると設定をやり直すことって少ないよね。
停止したらえらいことになるからね。
若い頃にしくじって実環境で止めちゃってシヌかと思ったこと何回かあるよ。
だからこそ自宅のテスト環境で色々試して遊びたい!
単純なDNSの案件しかやったことないけど、こういうちょっと変わったのの設定もやれるようになりたいな。
と、初心に返って思うのですよ。

BeagleBone BlackにOpenBSD6.5をインストールしてみた

BBBとの出会い

あれは2013年の暮れのこと。
秋葉原をふらふらとしていたら、ふと目に止まったビーグル犬のパッケージ。
それが、BeagleBoneBlack(以下、BBB)だった。

 

f:id:dawon2015:20191117111634j:plain

 

Arduinoが2005年、BeagleBoardが2008年、RaspberryPiは2012年。
この頃は、シングルボードコンピュータの流行時期ではあったと思う。

 

f:id:dawon2015:20191117111718j:plain

 

2BeagleBoardをDigi-Keyに発注したのだが、品切れでなかなか手に入らず、「入荷したからいついつまでに入金してくれたら出荷するよ?」ってメールが届いてたんだが、諸事情で入金できずに手に入れられなかったのが2012年のこと。

そんなこともあったので、BBBを目にした瞬間、「多分、BeagleBoradの新しい版なのだろうな、手に入るうちに買っておくか」ととりあえず購入した。
そして、その後、放置プレイになってしまった、BBBだったのであった。

ちなみに、BBBの公式サイトはこちら。

beagleboard.orgBBBに何を入れる?BBBに何を入れる?

BBBに何を入れる?

性能的にはRaspberryPi初代とほぼ同じかな?と感覚的に思うのが、このBBB。
オンボードflashストレージにはAngstromがプレインストールされていてる。
SDカードを使えば、他のLinuxディストリビューションAndroidも動かすことができる。
GPIOも付いているが、今回はマイクロサーバーとして使うつもりなので、それはまあどうでもいいか。
ということでいろいろと調べていて、わかったこと。
OpenBSDBeagleBoardに付いては公式対応しているとのこと。RaspberryPiは公式対応していない。
いろんなLinuxはRaspberryPiで試せばいいことだし、ここは、OpenBSDをインストールすることにする。
で、いろいろと調べてみたら、こちらのようなサイトがありました。

 

unosodoku638kam.hatenablog.com

 

インストーラーはminirootなので、ネットワークインストール必須
HDMI出力でインストール画面をディスプレイに出力できないので、シリアル接続
・シリアル変換アダプターは5Vと3.3Vの変換アダプタが必要

OpenBSD自体、興味はあったものの、インストールなんてほとんどやったこと無いし、シリアル接続にしろネットワークインストールにしろやったこと無い。なんかめんどくさいなぁ(当時の俺)だったので、必要な部品は買い集めたものの、長い放置に入ってしまうのである。

再始動 2019

OpenBSDルーターを作った。
macOSからYAMAHAルーターにシリアル接続して操作するのにも慣れた。
BBBを放置してる間、RaspberryPiをいくつも立ち上げてマイクロサーバーの扱いにも慣れた。
いろいろと高まった今なら、できる!とふと思い立って、BBBにOpenBSDをインストールすることにした。

SDカードにminiroot書き込みして、シリアルコンソール繋いで、ネットワークインストールする。
うん、それだけだ。よし、やるぞ!

シリアルコンソールの接続

FTDI USBシリアル変換アダプターを使って、PCとBBBをUSB接続する。
変換アダプタはスイッチサイエンスさんのこちらを使用。

www.switch-science.com

ドライバは下記からダウンロードしてインストールできる

www.ftdichip.com

BBBへの接続はこんな感じ。

f:id:dawon2015:20191117112507j:plain

ちなみに、向きは注意!逆向きに接続してしまうと何も表示されなくて、何で?とハマるので気をつけて。うん…実はそれでハマったんだ。
(*ノω・*)テヘw

今回の母艦はmacOSを使用した。
macOSで認識してるか、ターミナルで確認。

 

$ ls -l /dev/tty.* ← 接続前

crw-rw-rw-  1 root  wheel   18,   0 11 10 03:23 /dev/tty.Bluetooth-Incoming-Port

$ ls -l /dev/tty.* ← 接続後

crw-rw-rw-  1 root  wheel   18,   0 11 10 03:23 /dev/tty.Bluetooth-Incoming-Port

crw-rw-rw-  1 root  wheel   18,   2 11 11 00:09 /dev/tty.usbserial-A901OE8R ← 認識できてる

$ screen /dev/tty.usbserial-A901OE8R 115200 ← スクリーンコマンドで接続

 

 

よしよし、認識してる。

screenコマンドで接続後は、

ctrl+aでコマンド選択モードになる。
ctrl+a y なら screenを終了。
ctrl+a h なら ハードコピー。
ctrl+aの後に:の入力でコマンドモードになるので、
:hardcopy -h ログファイル名
でバッファ内の作業ログも保存できる。

SDカードへの書き込み

OpenBSDのminirootをダウンロードしてきて、SDカードに書き込む。
いつものjaistさんのお世話になることにした。

ftp.jaist.ac.jp

 

armv7のam335xを使用することにする。

f:id:dawon2015:20191117113025j:plain

macOSで書き込みするときは、

diskutil list でデバイスの確認
diskutil eraseDisk でフォーマット
diskutil unmountDisk でアンマウント
dd で書き込み
diskutil unmountDisk でアンマウントしてから抜き取り

の手順になる。

 

$ diskutil list ← デバイスリストを表示

/dev/disk0 (internal, physical):

   #:                       TYPE NAME                    SIZE       IDENTIFIER

   0:      GUID_partition_scheme                        *1.1 TB     disk0

   1:                        EFI EFI                     209.7 MB   disk0s1

   2:                 Apple_APFS Container disk1         1.1 TB     disk0s2

 

/dev/disk1 (synthesized):

   #:                       TYPE NAME                    SIZE       IDENTIFIER

   0:      APFS Container Scheme -                      +1.1 TB     disk1

                                 Physical Store disk0s2

   1:                APFS Volume Machintosh SSD          382.0 GB   disk1s1

   2:                APFS Volume Preboot                 46.5 MB    disk1s2

   3:                APFS Volume Recovery                507.4 MB   disk1s3

   4:                APFS Volume VM                      3.2 GB     disk1s4

 

/dev/disk2 (disk image):

   #:                       TYPE NAME                    SIZE       IDENTIFIER

   0:      GUID_partition_scheme                        +524.3 GB   disk2

   1:                        EFI EFI                     209.7 MB   disk2s1

   2:                  Apple_HFS Time Machine バッ...    523.9 GB   disk2s2

 

/dev/disk3 (internal, physical): ← SDカードは/dev/disk3であることを確認。

   #:                       TYPE NAME                    SIZE       IDENTIFIER

   0:     FDisk_partition_scheme                        *8.0 GB     disk3

   1:             Windows_FAT_32 boot                    43.5 MB    disk3s1

   2:                      Linux                         8.0 GB     disk3s2

 

$ sudo diskutil eraseDisk MS-DOS NONAME /dev/disk3 ← まずは、フォーマット

Started erase on disk3

Unmounting disk

Creating the partition map

Waiting for partitions to activate

Formatting disk3s2 as MS-DOS (FAT) with name NONAME

512 bytes per physical sector

/dev/rdisk3s2: 15268160 sectors in 238565 FAT32 clusters (32768 bytes/cluster)

bps=512 spc=64 res=32 nft=2 mid=0xf8 spt=32 hds=255 hid=411648 drv=0x80 bsec=15271936 bspf=1864 rdcl=2 infs=1 bkbs=6

Mounting disk

Finished erase on disk3

$ sudo diskutil unmountDisk /dev/disk3 ← アンマウントする

Unmount of all volumes on disk3 was successful

$ sudo dd if=miniroot-am335x-65.fs of=/dev/disk3 ← minirootのインストーラーを書き込み

36864+0 records in

36864+0 records out

18874368 bytes transferred in 18.447924 secs (1023116 bytes/sec)

$ 

$ diskutil list ← 書き込み結果の確認

/dev/disk0 (internal, physical):

   #:                       TYPE NAME                    SIZE       IDENTIFIER

   0:      GUID_partition_scheme                        *1.1 TB     disk0

   1:                        EFI EFI                     209.7 MB   disk0s1

   2:                 Apple_APFS Container disk1         1.1 TB     disk0s2

 

/dev/disk1 (synthesized):

   #:                       TYPE NAME                    SIZE       IDENTIFIER

   0:      APFS Container Scheme -                      +1.1 TB     disk1

                                 Physical Store disk0s2

   1:                APFS Volume Machintosh SSD          382.0 GB   disk1s1

   2:                APFS Volume Preboot                 46.5 MB    disk1s2

   3:                APFS Volume Recovery                507.4 MB   disk1s3

   4:                APFS Volume VM                      3.2 GB     disk1s4

 

/dev/disk2 (disk image):

   #:                       TYPE NAME                    SIZE       IDENTIFIER

   0:      GUID_partition_scheme                        +524.3 GB   disk2

   1:                        EFI EFI                     209.7 MB   disk2s1

   2:                  Apple_HFS Time Machine バッ...    523.9 GB   disk2s2

 

/dev/disk3 (internal, physical):

   #:                       TYPE NAME                    SIZE       IDENTIFIER

   0:     FDisk_partition_scheme                        *8.0 GB     disk3

   1:             Windows_FAT_32 BOOT                    2.1 MB     disk3s1

   2:                    OpenBSD                         15.7 MB    disk3s4

 

$ sudo diskutil unmountDisk /dev/disk3

Unmount of all volumes on disk3 was successful

 

これで、書き込みは完了!

BBBへの起動とインストール

BBBには起動スイッチは無い。
USBケーブルかACアダプタを接続し、通電すると起動する。
5V2Aの電源が必要になる。今回はUSBタップを接続してみた。
ACアダプタなら、外径5.5mm、内径2.1mm、センター側プラス、5V2Aの規格品を使用する。ちなみに、手元にある、AD-P50P200がちょうどよかった。

SDカードをさしていざ起動!なのだが、そのまま起動すると、内臓flashstorageのOSがロードされてしまう。SDカードスロット側にあるスイッチを長押ししながら起動すると、SDカード内のOSがロードされる。

ちなみに、今回使ったBBBのケースは、長押しスイッチ用の穴が空いていて、治具も付いていたので、便利だった。

f:id:dawon2015:20191117113436j:plain

起動するとscreenにログが流れてくる。

 

** Unrecognized filesystem type **

switch to partitions #0, OK

mmc0 is current device

Scanning mmc 0:1...

34886 bytes read in 4 ms (8.3 MiB/s)

Found EFI removable media binary efi/boot/bootarm.efi

Scanning disks on usb...

Disk usb0 not ready

Disk usb1 not ready

Disk usb2 not ready

Disk usb3 not ready

Scanning disks on mmc...

MMC Device 2 not found

MMC Device 3 not found

Found 4 disks

87292 bytes read in 8 ms (10.4 MiB/s)

## Starting EFI application at 82000000 ...

>> OpenBSD/armv7 BOOTARM 1.3

boot>

cannot open sd0a:/etc/random.seed: No such file or directory

booting sd0a:/bsd: 2808332+461476+8058240+448068 [188996+120+208352+183702]=0x0

 

OpenBSD/armv7 booting ...

arg0 0xc0ec9c5c arg1 0xe05 arg2 0x87ef4000

Allocating page tables

IRQ stack: p0x80ef8000 v0xc0ef8000

ABT stack: p0x80ef9000 v0xc0ef9000

UND stack: p0x80efa000 v0xc0efa000

SVC stack: p0x80efb000 v0xc0efb000

Creating L1 page table at 0x80ecc000

Mapping kernel

Constructing L2 page tables

undefined page type 0x2 pa 0x80000000 va 0x80000000 pages 0x2000 attr 0x8

type 0x7 pa 0x82000000 va 0x80000000 pages 0x5ef4 attr 0x8

type 0x6 pa 0x87ef4000 va 0x87ef4000 pages 0x18 attr 0x8000000000000008

type 0x7 pa 0x87f0c000 va 0x80000000 pages 0x1438b attr 0x8

type 0x2 pa 0x9c297000 va 0x9c297000 pages 0xb74 attr 0x8

type 0x4 pa 0x9ce0b000 va 0x9ce0b000 pages 0x1 attr 0x8

type 0x2 pa 0x9ce0c000 va 0x9ce0c000 pages 0x100 attr 0x8

type 0x1 pa 0x9cf0c000 va 0x9cf0c000 pages 0x16 attr 0x8

type 0x6 pa 0x9cf22000 va 0x9cf22000 pages 0x1 attr 0x8000000000000008

type 0x0 pa 0x9cf23000 va 0x9cf1e000 pages 0x5 attr 0x8

type 0x6 pa 0x9cf28000 va 0x9cf28000 pages 0x1 attr 0x8000000000000008

type 0x0 pa 0x9cf29000 va 0x9cf29000 pages 0x2 attr 0x8

type 0x2 pa 0x9cf2b000 va 0x9cf2b000 pages 0x302c attr 0x8

type 0x5 pa 0x9ff57000 va 0x9ff57000 pages 0x2 attr 0x8000000000000008

type 0x2 pa 0x9ff59000 va 0x9cf2b000 pages 0xa7 attr 0x8

pmap board type: 3589

Copyright (c) 1982, 1986, 1989, 1991, 1993

        The Regents of the University of California.  All rights reserved.

Copyright (c) 1995-2019 OpenBSD. All rights reserved.  https://www.OpenBSD.org

 

OpenBSD 6.5 (RAMDISK) #146: Mon Apr 15 07:16:38 MDT 2019

    deraadt@armv7.openbsd.org:/usr/src/sys/arch/armv7/compile/RAMDISK

real mem  = 472379392 (450MB)

avail mem = 447512576 (426MB)

mainbus0 at root: TI AM335x BeagleBone Black

cpu0 at mainbus0: ARM Cortex-A8 r3p2 (ARMv7)

cpu0: DC enabled IC enabled WB disabled EABT branch prediction enabled

cpu0: 32KB(64b/l,4way) I-cache, 32KB(64b/l,4way) wr-back D-cache

omap0 at mainbus0

prcm0 at omap0 rev 0.2

dmtimer0 at omap0 rev 3.1

dmtimer1 at omap0 rev 3.1

simplebus0 at mainbus0: "ocp"

simplebus1 at simplebus0: "l4_wkup"

"wkup_m3" at simplebus1 not configured

simplebus2 at simplebus1: "prcm"

"l4_per_cm" at simplebus2 not configured

"l4_wkup_cm" at simplebus2 not configured

"mpu_cm" at simplebus2 not configured

"l4_rtc_cm" at simplebus2 not configured

"gfx_l3_cm" at simplebus2 not configured

"l4_cefuse_cm" at simplebus2 not configured

simplebus3 at simplebus1: "scm"

syscon0 at simplebus3: "scm_conf"

pinctrl0 at simplebus3

simplebus4 at simplebus3: "scm_conf"

"wkup_m3_ipc" at simplebus3 not configured

"dma-router" at simplebus3 not configured

intc0 at simplebus0 rev 5.0

"edma" at simplebus0 not configured

"tptc" at simplebus0 not configured

"tptc" at simplebus0 not configured

"tptc" at simplebus0 not configured

omgpio0 at simplebus0: rev 0.1

gpio0 at omgpio0: 32 pins

omgpio1 at simplebus0: rev 0.1

gpio1 at omgpio1: 32 pins

omgpio2 at simplebus0: rev 0.1

gpio2 at omgpio2: 32 pins

omgpio3 at simplebus0: rev 0.1

gpio3 at omgpio3: 32 pins

com0 at simplebus0: ti16750, 64 byte fifo

com0: console

tiiic0 at simplebus0 rev 0.11

iic0 at tiiic0

"ti,tps65217" at iic0 addr 0x24 not configured

"atmel,24c256" at iic0 addr 0x50 not configured

"nxp,tda998x" at iic0 addr 0x70 not configured

tiiic1 at simplebus0 rev 0.11

iic1 at tiiic1

"atmel,24c256" at iic1 addr 0x54 not configured

"atmel,24c256" at iic1 addr 0x55 not configured

"atmel,24c256" at iic1 addr 0x56 not configured

"atmel,24c256" at iic1 addr 0x57 not configured

ommmc0 at simplebus0

sdmmc0 at ommmc0: 4-bit, sd high-speed, mmc high-speed

ommmc1 at simplebus0

sdmmc1 at ommmc1: 1-bit

"spinlock" at simplebus0 not configured

omdog0 at simplebus0 rev 0.1

"mailbox" at simplebus0 not configured

"timer" at simplebus0 not configured

"timer" at simplebus0 not configured

"timer" at simplebus0 not configured

"timer" at simplebus0 not configured

"timer" at simplebus0 not configured

"timer" at simplebus0 not configured

"timer" at simplebus0 not configured

"rtc" at simplebus0 not configured

"usb" at simplebus0 not configured

cpsw0 at simplebus0: version 1.12 (0), address 90:59:af:5a:af:30

ukphy0 at cpsw0 phy 0: Generic IEEE 802.3u media interface, rev. 1: OUI 0x0001f0

, model 0x000f

"ocmcram" at simplebus0 not configured

"lcdc" at simplebus0 not configured

"emif" at simplebus0 not configured

"sham" at simplebus0 not configured

"aes" at simplebus0 not configured

"mcasp" at simplebus0 not configured

"rng" at simplebus0 not configured

scsibus0 at sdmmc0: 2 targets, initiator 0

sd0 at scsibus0 targ 1 lun 0: <SD/MMC, NCard, 0010> SCSI2 0/direct removable

sd0: 7663MB, 512 bytes/sector, 15693824 sectors

scsibus1 at sdmmc1: 2 targets, initiator 0

sd1 at scsibus1 targ 1 lun 0: <SD/MMC, MMC02G, 0000> SCSI2 0/direct removable

sd1: 1832MB, 512 bytes/sector, 3751936 sectors

softraid0 at root

scsibus2 at softraid0: 256 targets

bootfile: sd0a:/bsd

boot device: sd0

root on rd0a swap on rd0b dump on rd0b

WARNING: CHECK AND RESET THE DATE!

erase ^?, werase ^W, kill ^U, intr ^C, status ^T

 

Welcome to the OpenBSD/armv7 6.5 installation program.

(I)nstall, (U)pgrade, (A)utoinstall or (S)hell?

今時のLinuxのようにGUIラクラクではなく、どこか懐かしいインストーラーでインストールを始める。
OpenBSDのインストールは普通のインストールとほぼ同じ。

・ネットワークとユーザーの設定
・インストール先のディスクパーティションの設定
・インストール元とパッケージの設定

で進んでいく。それぞれの設定項目をあらかじめまとめておくと作業が楽かもね。
今回は、細かいカスタマイズはあまり考えていないので、デフォルトで提示されている項目で進んでいく。
[kagikakko]がデフォルト提示項目なので、そのままEnterを押せばO.K.だ。

ネットワークとユーザーの設定

DHCPはあるが、今回は、固定IPを使用した。
ユーザーは、いつも管理用に使っているvmriderで作ってみた。

 

Welcome to the OpenBSD/armv7 6.5 installation program.

(I)nstall, (U)pgrade, (A)utoinstall or (S)hell? i ← iキーでインストール開始

At any prompt except password prompts you can escape to a shell by

typing '!'. Default answers are shown in []'s and are selected by

pressing RETURN.  You can exit this program at any time by pressing

Control-C, but this can leave your system in an inconsistent state.

 

Terminal type? [vt220] ← ターミナルタイプはvt200で問題なし。

System hostname? (short form, e.g. 'foo') werwolf ← ホスト名を入力

 

Available network interfaces are: cpsw0 vlan0.

Which network interface do you wish to configure? (or 'done') [cpsw0] NICインターフェイスを選択

IPv4 address for cpsw0? (or 'dhcp' or 'none') [dhcp] 172.18.10.8 IPアドレスを指定、DHCPでも可

Netmask for cpsw0? [255.255.255.0] 255.255.0.0 サブネットマスクを指定

IPv6 address for cpsw0? (or 'autoconf' or 'none') [none] IPv6は今回は設定しない

Available network interfaces are: cpsw0 vlan0.

Which network interface do you wish to configure? (or 'done') [done] ← とりあえずエンター

Default IPv4 route? (IPv4 address or none) 172.18.0.1 IPv4デフォルトゲートウェイを指定 

add net default: gateway 172.18.0.1

DNS domain name? (e.g. 'example.com') [my.domain] dedara.jp ← 今後使用するドメイン名を指定

DNS nameservers? (IP address list or 'none') [none] 172.18.0.1 DNSサーバーを指定

 

Password for root account? (will not echo) ← rootのパスワードを設定(非表示)

Password for root account? (again) ← 再入力(非表示)

Start sshd(8) by default? [yes] ← sshd自動起動をするか設定

Setup a user? (enter a lower-case loginname, or 'no') [no] vmrider ← 管理用のアカウントを作るか選択する。今回はあえて作った。

Full name for user vmrider? [vmrider] vmrider ← 管理用アカウントのフルネームを入力

Password for user vmrider? (will not echo) ← 管理用アカウントのパスワードを設定(非表示)

Password for user vmrider? (again) ← 再入力(非表示)

WARNING: root is targeted by password guessing attacks, pubkeys are safer.

Allow root ssh login? (yes, no, prohibit-password) [no] ← rootでsshログインできるかの選択。もちろん、no

 

インストール先のディスクパーティションの設定

インストール先は、SDカードしか無いので、選択の余地はない。
パーティションレイアウトも今回は初期値をそのまま利用した。

 

Available disks are: sd0 sd1.

Which disk is the root disk? ('?' for details) [sd0] ← インストール先のディスクを選択

Disk: sd0       geometry: 976/255/63 [15693824 Sectors]

Offset: 0       Signature: 0xAA55

            Starting         Ending         LBA Info:

 #: id      C   H   S -      C   H   S [       start:        size ]

-------------------------------------------------------------------------------

*0: 0C      0  32  33 -      0  97  33 [        2048:        4096 ] FAT32L

 1: 00      0   0   0 -      0   0   0 [           0:           0 ] unused

 2: 00      0   0   0 -      0   0   0 [           0:           0 ] unused

 3: A6      0  97  34 -      2  75   9 [        6144:       30720 ] OpenBSD

Use (W)hole disk or (E)dit the MBR? [whole] ← ディスク全体を使用するか、MBR編集するかを選択する。ディスク全体を選択

Creating a msdos partition and an OpenBSD partition for rest of sd0...done.

/dev/rsd0i: 32668 sectors in 8167 FAT16 clusters (2048 bytes/cluster)

bps=512 spc=4 res=1 nft=2 rde=512 sec=32768 mid=0xf8 spf=32 spt=63 hds=255 hid=2

048

The auto-allocated layout for sd0 is:

#                size           offset  fstype [fsize bsize   cpg]

  a:          1060.5M            34816  4.2BSD   2048 16384     1 # /

  b:           256.0M          2206688    swap

  c:          7663.0M                0  unused

  d:          3072.0M          2730976  4.2BSD   2048 16384     1 # /usr

  e:          2048.0M          9022432  4.2BSD   2048 16384     1 # /home

  i:            16.0M             2048   MSDOS

Use (A)uto layout, (E)dit auto layout, or create (C)ustom layout? [a] パーティションレイアウトを編集するか選択、ここでは、初期提案のレイアウトを選択

/dev/rsd0a: 1060.5MB in 2171872 sectors of 512 bytes

6 cylinder groups of 202.47MB, 12958 blocks, 25984 inodes each

/dev/rsd0e: 2048.0MB in 4194304 sectors of 512 bytes

11 cylinder groups of 202.47MB, 12958 blocks, 25984 inodes each

/dev/rsd0d: 3072.0MB in 6291456 sectors of 512 bytes

16 cylinder groups of 202.47MB, 12958 blocks, 25984 inodes each

Available disks are: sd1.

Which disk do you wish to initialize? (or 'done') [done] ← ディスクのイニシャライズ

/dev/sd0a (160519e4f4bd7fc7.a) on /mnt type ffs (rw, asynchronous, local)

/dev/sd0e (160519e4f4bd7fc7.e) on /mnt/home type ffs (rw, asynchronous, local, n

odev, nosuid)

/dev/sd0d (160519e4f4bd7fc7.d) on /mnt/usr type ffs (rw, asynchronous, local, no

dev)

 

インストール元とパッケージの設定

ネットワークインストール元には、いつものjaistさんを利用させてもらった、httpのプロキシなしを選択。
パッケージはデフォルトを選択。
ネットワーク経由のインストールなので、時間はかかるがコーヒーでも飲んで、待つべし。
最後に、タイムゾーンを合わせたら、再起動!

 

Let's install the sets!

Location of sets? (disk http nfs or 'done') [http] ← インストール元を選択

HTTP proxy URL? (e.g. 'http://proxy:8080', or 'none') [none] ← プロキシを使用するか選択

(Unable to get list from ftp.openbsd.org, but that is OK)

HTTP Server? (hostname or 'done') ftp.jaist.ac.jp ← インストール元はjaistさん

Server directory? [pub/OpenBSD/6.5/armv7] ← パッケージのツリーを選択

 

Select sets by entering a set name, a file name pattern or 'all'. De-select

sets by prepending a '-', e.g.: '-game*'. Selected sets are labelled '[X]'.

    [X] bsd           [X] comp65.tgz    [X] xbase65.tgz   [X] xserv65.tgz

    [X] bsd.rd        [X] man65.tgz     [X] xshare65.tgz

    [X] base65.tgz    [X] game65.tgz    [X] xfont65.tgz

Set name(s)? (or 'abort' or 'done') [done] ← インストールパッケージの選択、デフォルトのまま

Get/Verify SHA256.sig   100% |**************************|  1869       00:00

Signature Verified

Get/Verify bsd          100% |**************************|  6235 KB    00:02

Get/Verify bsd.rd       100% |**************************| 11637 KB    00:12

Get/Verify base65.tgz   100% |**************************|   114 MB    01:41

Get/Verify comp65.tgz   100% |**************************| 66595 KB    00:59

Get/Verify man65.tgz    100% |**************************|  7386 KB    00:08

Get/Verify game65.tgz   100% |**************************|  2696 KB    00:01

Get/Verify xbase65.tgz  100% |**************************| 17141 KB    00:18

Get/Verify xshare65.tgz 100% |**************************|  4449 KB    00:05

Get/Verify xfont65.tgz  100% |**************************| 39352 KB    00:30

Get/Verify xserv65.tgz  100% |**************************|  7191 KB    00:03

Installing bsd          100% |**************************|  6235 KB    00:02

Installing bsd.rd       100% |**************************| 11637 KB    00:04

Installing base65.tgz   100% |**************************|   114 MB    02:07

Extracting etc.tgz      100% |**************************|   260 KB    00:00

Installing comp65.tgz   100% |**************************| 66595 KB    01:36

Installing man65.tgz    100% |**************************|  7386 KB    00:22

Installing game65.tgz   100% |**************************|  2696 KB    00:02

Installing xbase65.tgz  100% |**************************| 17141 KB    00:23

Extracting xetc.tgz     100% |**************************|  6949       00:00

Installing xshare65.tgz 100% |**************************|  4449 KB    00:22

Installing xfont65.tgz  100% |**************************| 39352 KB    00:48

Installing xserv65.tgz  100% |**************************|  7191 KB    00:06

Location of sets? (disk http nfs or 'done') [done] ← パッケージのインストール元を選択

 

What timezone are you in? ('?' for list) [Canada/Mountain] Asia/Tokyo  タイムゾーンを日本に

Saving configuration files... done.

Making all device nodes... done.

Relinking to create unique kernel... done.

 

CONGRATULATIONS! Your OpenBSD install has been successfully completed!

 

When you login to your new system the first time, please read your mail

using the 'mail' command.

 

Exit to (S)hell, (H)alt or (R)eboot? [reboot]   ← 再起動を選択

 

BBB、起動

再起動後の起動ログがこちら。ログインプロンプトの表示はインストール成功の証。
途中、カーネルの読み込みで止まったように時間がかかる。
何度か再起動したが、そういうものらしいし、特に異常なログも吐いてないので、問題なさそうだ。

 

SVC stack: p0x809cf000 v0xc09cf000

Creating L1 page table at 0x809a0000

Mapping kernel

Constructing L2 page tables

undefined page type 0x2 pa 0x80000000 va 0x80000000 pages 0x2000 attr 0x8

type 0x7 pa 0x82000000 va 0x80000000 pages 0x5ef4 attr 0x8

type 0x6 pa 0x87ef4000 va 0x87ef4000 pages 0x18 attr 0x8000000000000008

type 0x7 pa 0x87f0c000 va 0x80000000 pages 0x148a4 attr 0x8

type 0x2 pa 0x9c7b0000 va 0x9c7b0000 pages 0x65b attr 0x8

type 0x4 pa 0x9ce0b000 va 0x9ce0b000 pages 0x1 attr 0x8

type 0x2 pa 0x9ce0c000 va 0x9ce0c000 pages 0x100 attr 0x8

type 0x1 pa 0x9cf0c000 va 0x9cf0c000 pages 0x16 attr 0x8

type 0x6 pa 0x9cf22000 va 0x9cf22000 pages 0x1 attr 0x8000000000000008

type 0x0 pa 0x9cf23000 va 0x9cf1e000 pages 0x5 attr 0x8

type 0x6 pa 0x9cf28000 va 0x9cf28000 pages 0x1 attr 0x8000000000000008

type 0x0 pa 0x9cf29000 va 0x9cf29000 pages 0x2 attr 0x8

type 0x2 pa 0x9cf2b000 va 0x9cf2b000 pages 0x302c attr 0x8

type 0x5 pa 0x9ff57000 va 0x9ff57000 pages 0x2 attr 0x8000000000000008

type 0x2 pa 0x9ff59000 va 0x9cf2b000 pages 0xa7 attr 0x8

pmap [ using 891724 bytes of bsd ELF symbol table ]

board type: 3589

Copyright (c) 1982, 1986, 1989, 1991, 1993

        The Regents of the University of California.  All rights reserved.

Copyright (c) 1995-2019 OpenBSD. All rights reserved.  https://www.OpenBSD.org

 

OpenBSD 6.5 (GENERIC) #158: Mon Apr 15 06:26:37 MDT 2019

    deraadt@armv7.openbsd.org:/usr/src/sys/arch/armv7/compile/GENERIC

real mem  = 477724672 (455MB)

avail mem = 458072064 (436MB)

mainbus0 at root: TI AM335x BeagleBone Black

cpu0 at mainbus0: ARM Cortex-A8 r3p2 (ARMv7)

cpu0: DC enabled IC enabled WB disabled EABT branch prediction enabled

cpu0: 32KB(64b/l,4way) I-cache, 32KB(64b/l,4way) wr-back D-cache

omap0 at mainbus0

prcm0 at omap0 rev 0.2

dmtimer0 at omap0 rev 3.1

dmtimer1 at omap0 rev 3.1

simplebus0 at mainbus0: "ocp"

simplebus1 at simplebus0: "l4_wkup"

"wkup_m3" at simplebus1 not configured

simplebus2 at simplebus1: "prcm"

"l4_per_cm" at simplebus2 not configured

"l4_wkup_cm" at simplebus2 not configured

"mpu_cm" at simplebus2 not configured

"l4_rtc_cm" at simplebus2 not configured

"gfx_l3_cm" at simplebus2 not configured

"l4_cefuse_cm" at simplebus2 not configured

simplebus3 at simplebus1: "scm"

syscon0 at simplebus3: "scm_conf"

pinctrl0 at simplebus3

simplebus4 at simplebus3: "scm_conf"

"wkup_m3_ipc" at simplebus3 not configured

"dma-router" at simplebus3 not configured

intc0 at simplebus0 rev 5.0

"edma" at simplebus0 not configured

"tptc" at simplebus0 not configured

"tptc" at simplebus0 not configured

"tptc" at simplebus0 not configured

omgpio0 at simplebus0: rev 0.1

gpio0 at omgpio0: 32 pins

omgpio1 at simplebus0: rev 0.1

gpio1 at omgpio1: 32 pins

omgpio2 at simplebus0: rev 0.1

gpio2 at omgpio2: 32 pins

omgpio3 at simplebus0: rev 0.1

gpio3 at omgpio3: 32 pins

com0 at simplebus0: ti16750, 64 byte fifo

com0: console

tiiic0 at simplebus0 rev 0.11

iic0 at tiiic0

"ti,tps65217" at iic0 addr 0x24 not configured

"atmel,24c256" at iic0 addr 0x50 not configured

nxphdmi0 at iic0 addr 0x70: rev 0x0301

nxphdmi0: no display detected

tiiic1 at simplebus0 rev 0.11

iic1 at tiiic1

"atmel,24c256" at iic1 addr 0x54 not configured

"atmel,24c256" at iic1 addr 0x55 not configured

"atmel,24c256" at iic1 addr 0x56 not configured

"atmel,24c256" at iic1 addr 0x57 not configured

ommmc0 at simplebus0

sdmmc0 at ommmc0: 4-bit, sd high-speed, mmc high-speed

ommmc1 at simplebus0

sdmmc1 at ommmc1: 1-bit

"spinlock" at simplebus0 not configured

omdog0 at simplebus0 rev 0.1

"mailbox" at simplebus0 not configured

"timer" at simplebus0 not configured

"timer" at simplebus0 not configured

"timer" at simplebus0 not configured

"timer" at simplebus0 not configured

"timer" at simplebus0 not configured

"timer" at simplebus0 not configured

"timer" at simplebus0 not configured

"rtc" at simplebus0 not configured

"usb" at simplebus0 not configured

cpsw0 at simplebus0: version 1.12 (0), address 90:59:af:5a:af:30

ukphy0 at cpsw0 phy 0: Generic IEEE 802.3u media interface, rev. 1: OUI 0x0001f0

, model 0x000f

"ocmcram" at simplebus0 not configured

amdisplay0 at simplebus0

amdisplay0: no display attached.

"emif" at simplebus0 not configured

"sham" at simplebus0 not configured

"aes" at simplebus0 not configured

"mcasp" at simplebus0 not configured

"rng" at simplebus0 not configured

scsibus0 at sdmmc0: 2 targets, initiator 0

sd0 at scsibus0 targ 1 lun 0: <SD/MMC, NCard, 0010> SCSI2 0/direct removable

sd0: 7663MB, 512 bytes/sector, 15693824 sectors

scsibus1 at sdmmc1: 2 targets, initiator 0

sd1 at scsibus1 targ 1 lun 0: <SD/MMC, MMC02G, 0000> SCSI2 0/direct removable

sd1: 1832MB, 512 bytes/sector, 3751936 sectors

vscsi0 at root

scsibus2 at vscsi0: 256 targets

softraid0 at root

scsibus3 at softraid0: 256 targets

bootfile: sd0a:/bsd

boot device: sd0

root on sd0a (160519e4f4bd7fc7.a) swap on sd0b dump on sd0b

WARNING: CHECK AND RESET THE DATE!

Automatic boot in progress: starting file system checks.

/dev/sd0a (160519e4f4bd7fc7.a): file system is clean; not checking

/dev/sd0e (160519e4f4bd7fc7.e): file system is clean; not checking

/dev/sd0d (160519e4f4bd7fc7.d): file system is clean; not checking

pf enabled

starting network

reordering libraries: done.

openssl: generating isakmpd/iked RSA keys... done.

ssh-keygen: generating new host keys: RSA DSA ECDSA ED25519

starting early daemons: syslogd pflogd ntpd.

starting RPC daemons:.

savecore: no core dump

checking quotas: done.

clearing /tmp

kern.securelevel: 0 -> 1

creating runtime link editor directory cache.

preserving editor files.

starting network daemons: sshd smtpd sndiod.

running rc.firsttime

Path to firmware: http://firmware.openbsd.org/firmware/6.5/

No devices found which need firmware files to be downloaded.

starting local daemons: cron.

Mon Apr 15 22:16:45 JST 2019

 

OpenBSD/armv7 (beowulf.dedara.jp) (console)

 

login:

 

別端末からsshもできるし、うまくいった!やった!
6年近い放置プレイ永い眠りから目覚めたぞ!BBB!

BeagleBone Black 今後は?

ということで、インストールは無事完了。
こんなに簡単ならもっと早くやればよかった…何でこんなに長く放置したんだろう?と不思議だが、またそれは別の話。

ちなみに、実はインストールは2回やっている。
最初、「最新版がいいよね!」とOpenBSDの6.6を入れてみたら、新しすぎてパッケージがなく、追加のソフトを何もインストールできなくて泣きそうだった。
6.6のパッケージを強引にインストールできそうだったが、あとあと面倒になるのは嫌で入れ直しをした。

さてさて、今後のBegleBoneBlackk。
我が家で常時稼働する2台目のOpenBSDになるので、1台目のバックアップシステムとして動かしてみようと思う。

セカンダリDNS
・各端末の定時リモートオンオフ

がとりあえずの目標かな。

 

DNSアラカルト〜稀に高まるUNIX力〜

連休になるとやってること

不思議なもので、連休になるとUNIX力が急激に高まり、家の中にあるサーバー群に手を入れたくなる。

インフラってそんなに頻繁にいじるものではないんだけどね。でも、手入れって、大切。

ということで、不完全ながらもなんとか使えているので、ほったらかしにしていたDNS群を本格的に整備してみた。

なんでこんなにDNSがたくさんあるんだ?

自宅のネットワーク構成はこんな感じになっている。

MainRouter

├──RouterA

  ├──DNS(Master)

  ├──DNS(Slave)

  ├──DNS(MasterCopy)

  └──DNS(cache)

└──RouterB

    └──DNS(Master)

MainRouterがネットに繋がっていて、その下にルーターが2個。

Aの方には主にPC類をつないでいて、Bの方には家電やゲーム機がつないである。

で、DHCPは嫌いなので、それぞれのセグメントにあるIPアドレスは、DNSを立てて管理している。ローカルのみ名前解決し、グローバルな名前解決はDNSから上位ルーターフォワードして解決する仕組みだ。

なんでセグメントそんなに分けてるのかって?

 

実験用です!

( ー`дー´)キリッ

 

ネットワークってね、なんとなーくで動いちゃうことって結構あるのでね。

なんとなーく動いているように見えるからオッケ!という危ない設定の危機がゴロゴロあるような気がしてる。なので、じっくりゆっくり検証したくて、環境作ってるうちにこうなってしまった。

おかげで、普段使いしてるセグメントAを実験にいじると、支障が出ることもあるので、もう1つセグメントCを増やそうかな?と思ったりもしてます(マテ

ごった煮DNS環境

しかも、環境も複雑かも。

セグメントAのDNS(Master)は、OpenBSD+unbound+NSDDNS(Slave)はScientificLinux+BIND9。DNS(MasterCopy)はOpenBSD+unbound+NSDDNS(Master)と全く同じ設定にしてる、検証機。DNS(cache)はRaspbian+unbound。

セグメントBのDNS(Master)は、Raspbian+BIND9。

 

これだけやってみるとわかることもある。BIND、NSD、unboundと使っているDNSソフトウェアは同じでも、OSが違うと、設定ファイルの配置がかなり違うのだ。

やっぱり、検証って、必要だな、と思うよ?

OpenBSD+NSD+unbound

この組み合わせは、OpenBSDを使うようになってから初めて触った。

それまでBIND一辺倒だったので、戸惑ったけど、慣れてみると、シンプルでいいなと思う。シンプルなのは、設定ファイルの配置にも現れている。

OpenBSDのunbound+NSD

 

var/

├──nsd/

  ├──etc/

  │  └──nsd.conf

  └──zone/

        ├──master/

            ├──local.zone

            └──local.rev.zone

        └──slaves/

            ├──local.zone

            └──local.rev.zone

└──unbound/

    └─etc/

       └──unbound.conf

ね?シンプルでしょ?

バックアップも、/var/nsdと/var/unboundをtarするだけで、楽チンです。

でも、昔のPC-UNIXってこんな感じだったかも?

初期パッケージは/etcに設定ファイルがあるけど、後から足したものは、

/varか/usr/localの下にまとめて配置されたような遠い記憶がある。

ScientificLinux+BIND9

今、RedHat系はこんな感じなのかな?

馴染みのある感じなので、迷わずに設定できるかな。

ScientificLinuxのbind9

 

var/

├──named/

  └──data/

      ├───master/

          ├──local.zone

          └──local.rev.zone

      └──slaves/

            ├──local.zone

            └──local.rev.zone

└──etc/

    └─named.conf

/varと/etcに分かれてると、あちこち見るのがちょっと面倒かも。

Raspbian+BIND9

同じLinuxなのに!BIND9なのに!

debian系だと微妙に違うの?となりました。

設定ファイル、いろいろ書き込んだりすれば、RedHatと同じようなファイル配置で使えるんだろうけど、返って深みにはまりそうなので、標準?のファイル配置で使ってみた。

Raspbian(buster)のbind9

 

var/

├──cache/

  └──bind/

      ├───master/

          ├──local.zone

          └──local.rev.zone

      └──slaves/

            ├──local.zone

            └──local.rev.zone

└──etc/

    └──bind/

        ├───named.conf.d/

            ├──named.conf.options

            ├──named.conf.default-zones

            └──named.conf.local

        └─named.conf

 

設定ファイルの単純移植ができないのは、ヤラシーよなー。

Raspbian+unbound

単純にキャッシュサーバーを作りたかったので、unboundでサクッとやってみた。

こちらは、/etc/unboundの下にまとまってるので、楽だったかな。

最初、余計なincludeしてハマったけど。

 

Raspbian(buster)のunbound

 

etc/

 └──unbound/

      ├───unbound.conf.d/

          └──*.conf.local

      └─unbound.conf

 

DNSは全ての基本

自宅サーバーなんて言葉も流行らなくなってきて、昔ほど、サーバー構築する機会は減った気がする。でもね、ネットワークにおいてDNSは全ての基本。

httpdもsmtpdも名前解決がちゃんとできていないと正常に動作しない。

基本を習得することが上達への近道だよな、と思うので、久々にいろいろ触って、いい経験になりました。

さて、この後も、それぞれの環境で、apache、Nginx、Postfix、OpenSMTPDなどなど、いろんな設定をしてみるよ!

 

秋葉原回顧録 第1回 Flip-Flap

21世紀もあともう少しで四半世紀が経とうとしている。
2000年になったのはついこの前のことと思っていたのに、時の流れは早いものだ。
そんな四半世紀を秋葉原PCショップの栄枯盛衰と共に思い出語りをしてみる。

その1回目で取り上げるのは、「Flip-Flap」だ。

小さい頃から、NECのパーソナルコンピュータを見て育った。
父親が新しい物好きだったからだ。
完全な「趣味」として、PC6001、PC8001、PC8801、PC9801と歴代のNEC製品を買い替えながら使っていた。

「パソコンなら自分でプログラムを打ち込めば、ゲームしたい放題なんだぞ?」と父親にそそのかされて、ベーマガのプログラムリストを打ち込まされたりしたものである。

そんな幼少時代を過ごしたから、「パソコンとはNECの製品であり、メーカー製品を買うもの」という刷り込みがされていた。しかし、大人になって、自分のパソコンを欲しくなって知るのである。

「AT互換機」というものがあり、それは、自由に組み立てることができる、ということを。

「AT互換機はPCパーツが規格化されていて、自分の好みでパーツを組み合わせることができる!」

AT互換機の存在を知ってから、もう、寝ても覚めても頭の中のことはパソコンでいっぱいだ。
まだ、ネット接続は、アナログモデムに28.8kbps、AkibaPCHotlineのサイトも立ち上がったばかりだったろうか?
Google2ちゃんねるもまだ存在していない、それが、1990年代後半。
地方在住者としては、昼間はせっせと雑誌を読み込み、パーツの構成をメモ用紙に書き出して、テレホタイムになったら、せっせとネットにつなぎ、秋葉原のPCショップのサイトを見ながら、値段を調べる、そんな日々を過ごしていた。
少しずつ貯めたバイト代を握りしめて、秋葉原に降り立つ日を夢見て。

秋葉原の電気街に初上陸したのは、1996年だったろうか?
実家への帰省のついでに寄ったと記憶している。
目的は、PCに内蔵するHDDを買うためだった。
今のように、スマホで店舗を現地で調べるなんてできない時代。
プリントアウトした秋葉原MAPを握りしめて、店舗を周った。

そこでふらっと立ち寄ったのが、Flip-Flapだった。

場所は、牛丼のサンボとファミマの間、にある、雑居ビルの階段を登った先のドアを開けた先に、Flip-Flapは存在した。

店舗の広さは12畳くらい。
所狭しと並べられた、PCパーツ。
品揃えはバルク品が多く、当時の有名店である、TWOTOPT-ZONEDOSパラと比べて1〜2割くらい安かった。
その魅力にすっかり魅せられて、盆暮れ帰省の際には、必ず立ち寄る店舗の一つになった。

IDEのHDD(3GB)
・チューリップのLANボード(当時で始めた100BASE)
・MN128SOHO(当時めっちゃ流行った、ISDNルーター)
・NE2000互換のLANボード(当時のPC-UNIXで動作する定番)

などを訪れるたびに一つずつ買ったものである。

そんなこんなで年に2回の訪問を楽しみにしていたのだが…。

1999年の年末のこと。
今年もFlip-Flapに立ち寄ろうか…と思った時にネットで見かけたのが、この記事だった。

https://akiba-pc.watch.impress.co.jp/hotline/991218/etc.html#flipflap

え!そうなの!なんで!ととても驚いたことを覚えている。
なぜならば、Flip-Flapは俺にとっての良店であり、それが儲かってないはずなどないと思い込んでいたからだ。
今にして思えば、PCパーツショップの氷河期、終わりの始まりだったのだろうな。

そして、年明けに、「通販サイトできたかな?」と思ったら、それどころか、こんな感じだった。

https://akiba-pc.watch.impress.co.jp/hotline/991218/etc.html#flipflap

えええええ!なんで!と言葉もなかった。

俺の中で、秋葉原が、楽しい現実から思い出に変わっていく、歴史の始まり、それがFlip-Flapの閉店だったんだなぁ。

YAMAHAのルーターにシリアル接続するのがかっこいい

YAMAHAルーター、それは憧れの機器

2000年になったばかりの頃。
まだ、ブロードバンドもフレッツ接続も地方には来ていない。インターネット接続はアナログモデムからテレホタイムにせっせと接続したものである。
光ファイバー専用線接続サービスINS1500もあったけど、まだまだ高価だった。
128kbpsのメタル専用線サービスがお手頃値段で主流、そんな時代。
YAMAHAのRT100iをせっせと設定して接続したものである。
当時、先輩に教えられながら、TeraTermでシリアル接続して、せっせとコマンドラインからconfigを叩いていた頃も懐かしい。
そんな風に育ったためか、未だに、Webで楽々設定というのには慣れない。あんなものでお気軽設定に慣れてしまったら、ダメになる!そんな風に思っていたこともありました。
ま、今は、「Web設定って楽チンでいいね!」と思ってるけどね。
そんなわけで、YAMAHAルーターは、未だに自分の中では、基準であり憧れの機器でもある。

 

久々にいじろう!RT107e

そんなわけで、うちでもYAMAHAルーターを愛用している。

製品ページはこちら。

https://network.yamaha.com/products/routers/rt107e/index

 

今となっては古い機体で、製造終了してるし、ギガビットにも対応はしていない。けど、お家で使う分には十分でかれこれ6年くらい使っている。

これを、プロバイダーから貸与されているルーターの下に置いて使っている。
で、だ。購入後、忙しかったこともあって、必要最小限の設定をして、それからずっとそのままだったりする。
6年もたってしまったけど、ちゃんと設定したいなぁと思う。
しかも、メインとは別に、「予備」という名目で、中古品のRT107eも持っていたりする。
せっかく、VPN対応のルーターが2台もあるのだから、VPNをはってみたいと思うのは人情ですよね?

と思いったった休日の午後、意外なハマり道の始まりだった。

シリアルポート?え?今って付いてないの?

シリアルポートとかCOMポートとか、今となっては化石ですか?
手持ちのPCはWindowsノートとMac miniなんだが、どちらもシリアル9PINなんぞ付いていない。
どうすんの?という話だが、そこで出てくるのが、USBシリアル変換コネクタなるものでこんな感じ。

 

f:id:dawon2015:20180826024535j:plain

 

いろんなメーカーから出ているようだけど、手持ちのは、秋月電子さんで売ってる、Prolific社のPL2303というチップセットを使っている代物。ググってみると、ちょっと設定は面倒そうだったが、やってみたらそうでもなかった。先人の知恵に感謝!

 

Windowsでの使い方

ドライバは公式ではWindows8までの対応らしい。
Windows10では使えない!という報告もあったようだが、調べてみると、古いドライバであれば動くらしい。
秋月電子さんのサイトでv1210をダウンロードしてきて、インストールしてみた。

 

http://akizukidenshi.com/catalog/faq/goodsfaq.aspx?goods=M-02746

 

インストールしてみると、デバイスマネージャーにCOM3ポートが追加される。

 

f:id:dawon2015:20180826024817j:plain

 

ということで、早速、PuTTYを使って接続してみる。

f:id:dawon2015:20180826024836j:plain

シリアルポート:COM3
スピード:9600

この辺はお約束。

そのほかの設定も。

f:id:dawon2015:20180826024906j:plain

データ長:8
ストップビット:1

この辺もお約束。

パリティ:None
フロー制御:XON/XOFF

は自動で設定されるようだ。

で、接続してみる。

f:id:dawon2015:20180826024937j:plain

 

うん、あっさり繋がった。

 

Macでの使い方

macOSについては、ちゃんとドライバが用意されているし、HighSierraにも対応している。

http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=229&pcid=41

ダウンロードしてインストールして、再起動。
インストールの途中で、実行許可を求められるので、そこだけ注意かな?
「システム環境設定」ー「セキュリティとプライバシー」ー「一般」で許可すればO.K.

再起動したら、USBシリアル変換コネクタを差し込むと、ttyデバイスができていることが確認できる。

 

$ ls -l /dev/tty.*

crw-rw-rw-  1 root  wheel   21,   0  8 26 00:46 /dev/tty.Bluetooth-Incoming-Port

$ ls -l /dev/tty.*

crw-rw-rw-  1 root  wheel   21,   0  8 26 00:46 /dev/tty.Bluetooth-Incoming-Port

crw-rw-rw-  1 root  wheel   21,   6  8 26 01:01 /dev/tty.usbserial

 

macOSの接続は、ターミナルから。
screenコマンドで接続してみる。

$ screen /dev/tty.usbserial 

 

RT107e Rev.8.03.46 (Mon Aug 28 13:20:54 2006)

  Copyright (c) 1994-2006 Yamaha Corporation.

  Copyright (c) 1995-2004 Jean-loup Gailly and Mark Adler.

  Copyright (c) 1998-2000 Tokyo Institute of Technology.

  Copyright (c) 2000 Japan Advanced Institute of Science and Technology, HOKURIKU.

  Copyright (c) 2002 RSA Security Inc. All rights reserved.

  Copyright (c) 1997-2004 University of Cambridge. All rights reserved.

  Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, All rights reserved.

  Copyright (c) 1995 Tatu Ylonen , Espoo, Finland All rights reserved.

  Copyright (c) 1998-2004 The OpenSSL Project.  All rights reserved.

  Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) All rights reserved.

00:a0:de:77:6b:ca, 00:a0:de:77:6b:cb, 

Memory 32Mbytes, 2LAN

> show config 

# RT107e Rev.8.03.46 (Mon Aug 28 13:20:54 2006)

# MAC Address : 00:a0:de:77:6b:ca, 00:a0:de:77:6b:cb, 

# Memory 32Mbytes, 2LAN

# main:  RT107e ver=e0 serial=N1D120976 MAC-Address=00:a0:de:77:6b:ca MAC-Addre

ss=00:a0:de:77:6b:cb

ip lan1 address 192.168.100.1/24

dhcp service server

dhcp server rfc2131 compliant except remain-silent

dhcp scope 1 192.168.100.2-192.168.100.191/24

> 

 

よしよし、繋がった。

終了は

ctrl + K
A
y

でターミナルに戻ってくる。

よし!コンフィグだ!

こんな感じで、無事に、シリアル接続は完了!

レガシイテクノロジ感、満載だけど、これがいいんだよね!

今更シリアル?とも思うけど、マイコンとの接続とか、使い道はそれなりにあるし、いいお勉強になりました。

さて、忘れちゃったコマンドラインを思い出して、バキバキ設定していくぞっと。

 

オレオレリポジトリとlftpコマンド

オレだよオレオレ!

実家にオレオレ詐欺の電話があったらしい。

  1. 風邪ひいてるから声がいつもと違う
  2. 電話は友達のを借りた
  3. 上司と喧嘩して会社辞めることになった
  4. とにかく至急お金が欲しい

とのたまわったとか。

ちなみに、両親は、3で本気にしたようだ!

俺のことどんなキャラだと思ってんだよ!

ローカルに作ったリポジトリ、名付けて、「オレオレリポジトリ

VM、PMを合わせると、ScientificLinuxで3台、OpenBSDは2台、Windowsは…4台。

さらに、RaspberryPiについても4枚転がっているわけで。

これらが一気にアップデートでネット接続すると、ネット回線が混雑するんだよね。

時間帯をずらしたりもしたんだけど、同じデータをDLするのにトラフィック発生ももったいないな、と思ったもので、ローカルにリポジトリを作ることにした。

というか、作った。

それを「オレオレリポジトリ」と名付けている。

かれこれ3年くらい、快適に使ってる。

「オレオレリポジトリの作り方」

WindowsのWSUSもローカルに作りたいのだが、今はフリーではないようだ。

なので、まずは、Linuxなどのリポジトリをローカルに作った。

yumコマンドやaptコマンドはネット上に公開されているリポジトリのhttpやftpサイトを見に行ってるわけだから、ローカルに同じ構造のものを作ってしまえばよい。

その後、各クライアントの参照先をローカルに向ける。

サーバの構築手順はこんな感じ。

なので、とても簡単。大きなサイズのディスクがあればよい。

クライアントについては、/etc/yum.repos.d 以下の$baseと$URLをローカルに構築した先に向けて、書き換えればO.K.。

 

lftpコマンドのスクリプトもこんな感じ。

下記は、ScientificLinux7.3をとある公開ミラーから丸ごとDLする場合の例。

 

!/bin/bash
lftp -e 'mirror --delete --only-newer /pub/Linux/scientific/7.3/ /var/www/html/local/scientificlinux/7.3/ && exit' http://www.hogehoge.jp

 

www.hogehoge.jp/pub/Linux/scientific/7.3をローカルの/var/www/html/local/scientificlinux7.3にダウンロードしてる。

lftpコマンドは、ローカルとサーバーのミラーに用いられる。

--only-newerの指定で、ローカルとサーバーの比較をして、更新されたものだけ落としてくれるので、トラフィックにも負荷をかけない。

--deleteの指定で、サーバーで削除されているファイルはローカルでも削除される。

 

で、だ、快適にすごいていたのに、ある日気がついた。

あれ?7.3のDLなんか止まってない?

ゾンビってる

cronでDLスクリプト実行の開始前と開始後に

date >> ~/cron-update.log

を挟んで、実行時間がどのくらいかかるか参考にしているのだが、ログファイルを見て、気がついた。あれ?アップデートスクリプト、完了してなくない?

psコマンドで確認すると、ゾンビってる。

あれ、なんでだろ?夜間に自動実行してるから、気がつかなかった。なんでだろ?

ということで、手動実行してみた。

 

# lftp -e 'mirror --delete --only-newer /pub/Linux/scientific/7.3/ /var/www/html/local/scientificlinux/7.3/ && exit' http://www.hogehoge.jp

cd 成功、cwd=/                                                

x86_64/release-notes: Getting files information (100%) [応答を待っています...

 

x86_64/release-notes というディレクトリのDLでどうやら引っかかっているようだ。

ブラウザで確認するとただのhtmlファイルなのでが、なぜか引っかかる。

逆に、ここはアップデートとはあまり関係ないところだ。

ちなみに、wgetコマンドで落とせたので、ここはwgetで対応すればいいや。

よし、x86_64/relese-notesを除けばいいのだな。でもどうやるんだろ?

 

-xオプションで解決だ!

man lftpしたら、マニュアル入ってなかったので、公式サイトを見に行ってみた。

LFTP - sophisticated file transfer program

PDF版のマニュアルゲット!

それを見ると、-xオプションについて書かれていた。

 

−x RX, −−exclude=RX exclude matching files

 

-xオプションでマッチングするファイルやディレクトリを除外できるようだ。

release-notesというフォルダは、他にないようなので、除外するようにスクリプトを直してみた。

 

#!/bin/bash
lftp -e 'mirror -x release-notes --delete --only-newer /pub/Linux/scientific/7.3/ /var/www/html/local/scientificlinux/7.3/ && exit' http://www.hogehoge.jp

 

実際に実行してみたら、うまくいった!

やったぜ!

 

rsyncとの違いは?

ローカルにオレオレリポジトリを作るときにrsyncコマンドも用いられることがあるようだ。どう違うのだろうとちょっとググってみた。

rsyncは、常時、サーバー間のファイルを比較して同期をとる用途のときにもちいるとよさそうだ。というかそういう用途向けらしい。

俺のオレオレリポジトリは、そこまで細かく同期をとるつもりもないので、週1くらいでDLすればいい。そういう時はlftpの方がいいみたい。

 

ということで、無事、オレオレリポジトリ、定期的に最新版に更新されるようになったよ!

WSUSも作っておきたいな。