Skip to content

2024年6月30日

This content is a draft and will not be included in production builds.

TODO:
venti/copyの方法
dns -x.altがannounceに失敗している
→zoneが無いのにサービスしようとしただけ
mail
http
fossilのログ
% aux/clog /srv/fscons /sys/log/fossil &
これで取れるが、conした時の出力も取り合うらしく微妙
-- cron
cronはほかのサーバで実行させる場合、そのホストでrexexec(tcp17009)が動作している必要がある。
またはsshでもいいらしいが。
DNSは、wispにローカル用DNSを用意して、
基本はwispに問い合わせして、wispはさくらのDNSも参照するようにした。
→authでdnsサービスすると外部のdnsを参照することができない(/net.altになる)
 cpuでサービスするとローカルのdnsまで外部に出してしまう
 なので、特に必要も無かったため、やめた(それぞれで解決させるようにした)
network!address!service
networkは/net/以下のディレクトリ名、または/からはじまるルートからの名前。
addressは接続先、受信側の場合は受信するローカルアドレスまたは*(all local addresses)
詳細はannounce(2)にある。
% con -l /srv/fscons
prompt: uname lufia lufia
prompt: uname adm +glenda
prompt: ctl+¥
>>> q
% cd /adm/timezone
% cp Japan local
% cd /sys/src/9/pc
% mk 'CONF=pccpuf'
% 9fat:
% mv 9pccpuf /n/9fat
% mk 'CONF=pccpuf' nuke
/n/9fat/plan9.iniに
bootfile=sdC0!9fat!9pccpuf
sysname=dryad
auth=192.168.1.7
console=0 b115200 l8 pn s1
を追加
% unmount /n/9fat
% unmount /n/9
% con -l /srv/fscons
prompt: uname bootes bootes
prompt: fsys main
main: create /active/cfg/dryad sys sys d775
main: create /active/cfg/dryad/cpurc sys sys 775
main: create /active/cfg/dryad/namespace sys sys 664
main: create /active/cfg/dryad/service sys sys d775
main: create /active/cfg/dryad/service/tcp9 sys sys 775
(tcp9は、listenされてなければ全部立ち上がるのを防ぐため)
% cat >>/cfg/fs/namespace
bind -a #l1 /net
% ed /cfg/fs/cpurc
% cp /rc/bin/service/!tcp564 /cfg/fs/service/tcp564
--- network config
さくらVPSはコントロールパネルからローカルネットワークを構成できるが、
常にインターネットへ接続できるポートはether0に限られる。
Plan9は/net/がデフォルトなので、/netを内部ネットワークにしたほうが面倒がない。
奇妙だが、しかたがないので/lib/namespaceを変更する。
これによって、このファイルサーバをルートにするマシンは
必ずNICを2枚使って、ether0をインターネット側にしなければならない。
bind -a #l1 /net (オリジナルは#lだった)
bind -a #I /net
/cfg/$sysname/namespaceはこのように。
bind -a #l0 /net.alt
bind -a #I1 /net.alt
cpurcのipconfigで、-x.altを忘れないように
*/lib/namespace
*/cfg/$sysname/namespace
*/cfg/$sysname/cpurc
*/lib/ndb/local
*/lib/ndb/external
*/n/9fat/plan9.ini
ip/ping -n3 192.168.1.3
ip/ping -n3 /net.alt/icmp!8.8.8.8
で確認。
認証サーバでは、DNSとticketサービスを動作させるので、
次のようにcpurcへ加えた。
ndb/cs -x.alt -f /lib/ndb/external
ndb/dns -sx.alt -f /lib/ndb/external
aux/listen -q -t /cfg/$sysname/service.alt.auth /net.alt/tcp
netstat /net.altでスタックごとにサービス状況をみれる
prompt: fsys main create /active/lib/ndb/external
/lib/ndb/local:
database=
file=/lib/ndb/local
file=/lib/ndb/common
/lib/ndb/external:
database=
file=/lib/ndb/external
file=/lib/ndb/common
% ed /lib/ndb/external
% ed /lib/ndb/local
さくらVPSはether0しかインターネットに接続できないので注意。
ローカルを持ちたければLAN作ってサーバ管理画面から接続が必要。
さらに面倒なのが、いちどもインターネットに接続していないサーバは見れないぽい。
---
--- 9fs
% con -l /srv/fscons
prompt: listen tcp!*!564
で動作確認。問題なさそうなので永続化。
% fossil/conf /dev/sdC0/fossil >/tmp/flproto
(listen tcp!*!564を追加)
% fossil/conf -w /dev/sdC0/fossil </tmp/flproto
/rc/bin/service/!tcp564があるけど、こっちはユーザがnoneになる。
ユーザテーブルの整理
prompt: uname adm +bootes
prompt: uname adm -glenda
prompt: uname sys -glenda
prompt: uname adm -sys # どこかで間違った?
ファイル作成
prompt: fsys main
prompt: create /active/sys/log/cron sys sys a666
prompt: create /active/adm/secstore adm adm d775
% fshalt
reboot
--- auth ---
CONF=pcauth
(pcauthはetherigbeを含んでいないので足す)
install
bootstrapはふつうにplan9を選択すればおk
kernel
CcS:にしてコンパイル
ここでipアドレスを使っておかないと、サーバ一覧に出てこない。
→そんなことない、本契約して少し経てば出てくる。
まずはnicを認識可能なカーネルにしてブート。
/net/ether[01]/addrを調べておく。
% cat '#l0'/addr
% cat '#l1'/addr
調べたアドレスをfileserverの/lib/ndb/local, externalに反映。
plan9.ini
bootargs=tcp ether /net/ether1 add 192.168.1.7 255.255.255.0
sysname=wisp
fs=192.168.1.3
auth=192.168.1.7
console=0 b115200 b8 pn s1
ファイルサーバの以下を編集
/cfg/wisp/cpurc
/cfg/wisp/namespace
/cfg/wisp/service
tcp9
/cfg/wisp/service.auth
tcp567
/lib/ndb/auth
reboot
ブートが終わったら
% auth/changeuser -p bootes
% auth/changeuser -p lufia (with Inferno/POP secret)
再インストールで起動させたら、
ネットワーク構成もリセットされるので、つなぎなおす
fsはether0をローカルにした。
bootはtcp -x .altだけどipconfigは-x /net.altでは?
途中でこける?→こけない。
setnetmtptは、/からはじまる名前は特別で、それ以外は/netにつなぐから
ip/ipconfig -pじゃないとだめなのか
plan9.iniでは上記のとおり設定して、cpurcはipconfig -p -g ...する
→そうしなくてもよかった
#I*はNIC枚数に限らずいっぱいある。0-15
---------------
# auth/secuser -v lufia
adm/secstore/ ^ (store who)が作られる
--------------- ntp
fs:
ndb/cs -x.alt -f /lib/ndb/external
ndb/dns -rx.alt -f /lib/ndb/external
aux/timesync -n /net.alt/udp!ntp1.sakura.ad.jp
auth, cpu:
aux/timesync -f
-------------- cpu
CONF=pccpu
plan9.ini:
bootfile=sdC0!9fat!9pccpu
bootargs=tcp -g 133.xxx.xxx.xxxx ether /net/ether1 add 192.168.1.23 255.255.255.0
sysname=luna
fs=
auth=
namespace:
bind -a '#l' /net
cpurc:
ip/ipconfig ether /net/ether0 add 133.242.155.153 255.255.254.0
prompt: fsys main create /active/cfg/theia/service/tcp17010 sys sys 775
% cp /rc/bin/service/tcp17010 service/tcp17010
-------------- dns
fsから名前解決ができなかったのでcpurcに
ndb/cs -x.alt -f /lib/ndb/external
ndb/dns -sx.alt -f /lib/ndb/external
-------------- user
drawtermでログインしてから、
% /sys/lib/newuser
(secstoreパスワードは空)
% ramfs -p
% cd /tmp
% echo 'key proto=p9sk1 dom=xxx' >factotum
% auth/secstore -p factotum
% rm factotum
-------------- move
% aux/listen1 -t tcp!*!9001 /bin/exportfs -r $root
で、送り側
% 9fs tcp!$addr!9001 /n/remote
-------------- config ----------
fs=
ip=133.242.203.196
ipmask=255.255.254.0 ※1
ipgw=133.242.202.1
ns=133.242.0.3
ns=133.242.0.4
ntp=ntp ntp1.sakura.ad.jp
auth=
ip=133.242.129.104
ipmask=255.255.254.0
ipgw=133.242.128.1
cpu=
ip=133.242.155.153
ipmask=255.255.254.0
ipgw=133.242.154.1
auth id: bootes
auth dom: mana.lufia.org
password, secstore password: ux
-------- httpd
# con -l /srv/fscons
prompt: uname web :web (no home directory)
prompt: uname web +lufia
prompt: fsys main create /active/usr/web sys web d775
prompt: fsys main create /active/cfg/cpuserver/cpustart sys sys 775
# cat cpustart
ip/httpd/httpd
# echo -n >/lib/namespace.httpd (内容消去)
-------- certs
# ramfs -p
# cd /tmp
# auth/rsagen -t 'service=tls owner=*' >key
# auth/rsa2x509 'C=JP ST=Osaka L=Osaka O=lufia.org CN=lufia.org' key |
> auth/pemencode CERTIFICATE >cert
# auth/secuser -v bootes
#
--------- update
# replica/pull -v /dist/replica/network
replica/pullコマンドが以下全部やってくれるので、
ファイルオーナーについて気にしなくてもいい
# con -l /srv/fscons
prompt: srv -APW instfs
prompt: ctl+¥ q
# mount -c /srv/instfs /n/inst
# 9fs sources
# bind /n/sources/plan9 /n/dist
--------- user delete
おそらく以下の手順でいいはず(fs)
prompt: fsys main remove /active/usr/web (homeの削除)
/adm/usersから該当するユーザを削除(webの場合は、web:web::ではじまる行を削除)
prompt: users -r /active/adm/users
-------------- backup
$ yum install fuse
/etc/profile.d/plan9port.sh
export PATH
export PLAN9
$ venti/venti -c venti.conf
% venti/copy -f tcp!127.1!venti /net.alt/tcp!host!venti