米国の1996年電気通信法の影響まとめ

FCCは1996年電気通信法によりIXC(IntereXchange Carrier)/ILEC(Incumbent Local eXchange Carrier)/CLEC(Competitive Local eXchange Carrier)/MSO(Multi Service Operator)の相互参入を可能にして競争を促進した。その結果、LECとMSOの間で地域内通信、MPVD(Multichannel Programming Video Distribution)、ISP(Internet Service Provider)を一体で提供する形での競争が行われた。これはTCP/IPが音声や映像の伝送にも適用されるようになったことによるもの。またTCP/IPの普及によりEmailなど料金が距離によらない通信の利用が進んでAT&TやMCIといったIXCは経営が傾き、AT&TはSBCに、MCIはVerizonに吸収合併される。

emacsのnative compilation機能

emacs28にNative Compilation機能が統合されたことが一時話題になっていて気になっていたので試してみた。世間的には周回遅れといったところ。環境はWindows11 + WSL2(Ubuntu 20.04LTS)。やったことは以下の通り。

WSL2のUbuntuの立上げ

PowerShellでWSLを起動してUbuntuをインストールする。

WSL --install -d Ubuntu

しかしインストールが終わり、Ubuntuを立上げようとすると以下のようなエラーメッセージが出て起動しない。

WslRegisterDistribution failed with error: 0x80370102

UEFIの設定は正しかったのでWindows11の設定を起動してアプリ→オプション機能→Windowsのその他の機能→仮想マシンプラットフォームにチェックした。そして無事WSLが起動。

emacsリポジトリからチェックアウト

git clone https://git.savannah.gnu.org/git/emacs.git
cd emacs
./autogen.sh

ここでautoconfがないと言われる。autoconfをインストール…しようとしたらUnable to locate packageとエラーが出たのでapt自身をupdate。

sudo apt update
sudo apt install autoconf
./autogen.sh
./configure --prefix=/usr/local --with-xwidgets --with-mailutils --with-native-compilation

ここでgccもmakeもないことに気が付く。

emacsのビルドに使用するソフトウェアをインストール

WSLのUbuntuはインストールした直後の状態だとgccをはじめとする開発ツールやX関連のライブラリが入っていないのでそれらをaptでインストール。その後は依存するライブラリをインストール。もちろん事前にすべてがわかっていたわけではなくconfigureを動かしつつエラーの都度対処していった。

sudo apt install build-essential
sudo apt install xwidgets
sudo apt install libgtk-3-dev
sudo apt install libwebkit2gtk-4.0-dev
sudo apt install libxpm-dev
sudo apt install libjpeg-dev
sudo apt install libgif-dev
sudo apt install libungif-dev
sudo apt install libtiff-dev
sudo apt install libgnutls28-dev
sudo apt install libncurses-dev
sudo apt install libgccjit-9-dev
./autogen.sh ./configure --prefix=/usr/local --with-xwidgets --with-mailutils --with-native-compilation sudo make install

コンパイルできたのでぐるぐるぐりっどさんと同じ方法Emacs Wikiバブルソートで性能を見てみた。やっぱり速い。

UQコミュニケーションズ株式会社について調査

UQコミュニケーションズ株式会社は非上場会社でアニュアルレポートが発行されていない。KDDIが株式の約33%を保有しており連結子会社としている。完全子会社ではなく約33%となっているのは総務省UQコミュニケーションズ株式会社へ周波数割をした時の開設指針によるもの(参考資料-こちらは2.6GHz帯割当の時の資料)。その他の主要株主としてはJR東日本や京セラがいる。売上規模や利益、資産規模は官報を調べればわかるようだが、インターネット版官報は無料で閲覧できるのは直近30日分のみ。また過去の官報の検索は会員制サービスとなっており、大元までは辿れなかった。このため官報のデータを独自に公開しているサービスから2020年度の数字を調べてみる。

売上高 2818億3100万円
営業利益 357億9700万円
経常利益 353億8900万円
純利益 378億1700万円
利益剰余金 721億3400万円
純資産 2141億3400万円
総資産 2498億5000万円

KDDIグループの2020年度の連結売上が5兆3,126億円であるため、KDDIグループ内の売上の5.3%を占めている。

現在の事業はWiMAXによるデータ通信サービスで公開情報によると2020年度第4四半期の契約者数は35,774,300。4GによるMVNO事業はKDDIに移管されており、現在は行っていない。WiMAX2+の基地局にはSamsungとEricssonの装置が使われており2020年7月30日時点で40,000局以上の屋外基地局を開設していると公表されている。ネットワークの概要の情報はざっと探した限りでは公開情報にある相互接続ガイドブック以上のものはなさそうだ。総務省新世代モバイル通信システム委員会WiMAX R3.0の導入検討について説明していることからWiMAX R3.0の導入を進めていると推測される。

The Restoration of Early UNIX Artifacts

いまさらながらUSENIX2009で発表された論文The Restoration of Early UNIX Artifactsを読んだ。最初に論文発表資料を読んでから講演映像を観た。発表資料は映像ではよく見えないので予め発表資料を入手して読んでおいておいた方が良い。ちなみに講演映像でのWarren Toomey氏の話は自分の英語力が不足しすぎていて断片的にしかわからなかった。とはいえ予め論文や発表資料を読んでおいたので雰囲気は捉えることができた。余談ではあるがAntikythera島の機械(古代の沈没船から発見された天体の動きを計算する機械式計算機)の概要は調べておくと講演映像はより楽しめる。論文は以下のような構成になっている

  1. Introduction
  2. TUHS and UNIX Archive
  3. The Nsys Kernel: 1973
  4. 1st and 2nd Edition Binaries: 1972
  5. Early C Compilers: 1972
  6. 1st Edition UNIX Kernel: 1971
  7. Lessons Learned

各節についての感想は以下の通り。久々に夢中になって読んでしまった論文だった。

1 Introduction

Softwareを集めても動かなければ0と1の集まりに過ぎないので動態保存すべし, という強い信念が語られる。一方でbackup tapeから発掘した古のsoftwareを動かすまでの困難についても簡単に述べられる。これは程度の違いこそあれ寿命の長い装置に組み込まれたsoftwareの保守をやっていると同じような問題があるので非常に共感する。この論文で扱っている事例は3節から6節の4つ。中でも1st Edition UNIX Kernelには興味を惹かれる。

2 TUHS and UNIX Archive

UNIX Heritage Society(TUHS)の活動の紹介は印象に残る。Ancient UNIXに触れることができるようになったのは彼らの熱心な活動のおかげであり, SCOがOpen Source Software Movementに乗っかっただけではないことが判り, 感謝の念を新たにした。

また1st Editionから32Vまでの変遷と追加された機能の一覧表は似たようなものをどこかで見ているはずではあるが, 改めて見ていろいろ気づかされた。pipeができたのは3rd Edition。参考文献として載っているTHE UNIX ORAL HISTORY PROJECT を読むとtool boxの考え方が明確になってきたのはpipeが実装されてから, とあるのでUNIXの個性(Tool Box, C言語, 移植性)が固まっていく様子が窺える。それ以前はどちらかというとMulticsで取り入れられた技術を実装しているように見えてきた。それにしてもUNIXですらsource codeは残っているがdocumentが残っていない版, あるいはsource codeもbinaryも残っていないがdocumentは残っているといった版がある状況に驚いた。

TapeからSource CodeやBinaryを取り出していく過程も興味深い。今日自分が慣れ親しんでいるtarは7th Editionで追加されたもので, それ以前はrkd, tap, tpといったものが使われていたらしい。それらの形式をdocumentから読み解いて中身を取り出すsoftwareを書いて取り出し, time stampを解読してtapeがいつごろのものを保存しているのかを特定していったとのこと。まさに発掘作業だ(本文中ではそのものずばり, unearthingと表現されている)。

3 The Nsys Kernel: 1973

nsysとlabelが貼られていたtapeから取り出されたのがNsys Kernelで, これは4th Editionがreleaseされる3ヶ月前のもの。これについての問合せへのDennis Richie氏の一言"I’m not sure how much work it would take to get this system to boot."は古のsoftwareの復元作業の困難さを伺わせる。実際に5th EditionのC CompilierでCompileを試みるとC言語の仕様変更やら構造体へのfield追加, 起動するmemory上の位置が違う, といった落とし穴があって随分と労力がかかったらしい。pipe(2)に至っては実装があるのになぜかsystem call tableに登録されていなかったらしいが, その時の事情をDennis Richie氏に確認した結果も興味深かった。

4 1st and 2nd Edition Binaries: 1972

こちらはkernelではなく/bin, /etc, /usr/lib等の寄せ集めで1st Editionと2nd Editionの時代のものが混在しており、これを使ってApoutというPDP-11 Simulatorに1st Editionと2nd Editionの実行環境を作ったとのこと。またi-node情報が含まれていないtapeの512 byte blockを丹念に調査してlsやcat, cpのsource codeを復元したというのがまた凄い。

5 Early C Compilers: 1972

初期のC Compiler 2つの復元の話。一方は構造体を使えるようになる前のもの(last1120c)、他方は構造体を使えるようになってからのもの(prestruct-c)。これらについてはsourceからbinaryを作るところで躓いたが最終的にはtapeに入っていたC Compilerを使ってbinaryを生成、その後はself hostできるようになったとのこと。またprestruct-cの方は一部source fileに欠損があったため, その部分についてはlast1120cのものを持ってきて代用したと記述があった。この状況だと大元のsourceに改変を加えるのもやむを得ないか…と思った。

6 1st Edition UNIX Kernel: 1971

最後は1st Edition UNIX Kernel。これはAl Kossow氏が2006年に発掘したsource codeが印刷された資料からOCRで資料を読み取り, 電子化したものを人力で元資料と照合してsource codeを復元し, 7th Editionのassembler(1st Editionはassemblerで記述されていた)でassembleし, binaryを作成したが, ここでも一部source codeを変更せざるを得なかったと記述がある。出来上がったbinaryをsimulatorで実行させてsource codeの復元漏れや欠損していたbootstrap codeの問題を解決し, simulatorに周辺機器を追加して起動に漕ぎ着けるまでの記述がアツい。

7 Lessons Learned

まとめはこの経験から得られた教訓になっているのだが, やっぱり印象に残るのは最後の"Never underestimate the ‘packrat’ nature of computer enthusiasts."という箇所。自分の乏しい英語力で訳すと「計算機愛好家の執念をみくびるな」といったところになるのでしょうか。とにかく復元作業には多くの人が関わっており, かかった労力もすさまじいものがあるのは論文から伝わってくる。これを成し遂げた人たちに敬意を表したい。

The Hummingbird Project感想

高頻度取引のためにKansasとNew Jerseyを最短距離で結ぶ通信回線を構築の計画と構築を描いた映画。以前から話に聞いていて興味があったものの近所では上映されなかったのでamazon primeで観た。Startup企業の熱意と既存企業の資本に物を言わせた対抗策とその結末を描いた作品。技術や伝送路の敷設工事などの詳細は多少ツッコミどころがある。

そもそもAntonは何を開発していたのか。散々CodeだArgorithmだと言っておきながら最後の決め手は市販の光増幅器というのが謎。伝送路設計のsimulationをしていたのなら, 最初に伝送路の損失, 修理や接続箇所で発生する損失を考慮して光増幅器を置く地点を決めるだろうし, 分散補償が必要なら両端の伝送装置や伝送路自体でどのようにそれを行うかある程度設計ができるはず。

伝送路敷設についてはVincentが(若干狂気じみた)アツいProject Managerであることは語られるが事前の地質の調査などについては語られず, 現場で硬い岩盤にぶち当たって掘削機が故障したというあたりは見ていてわかりにくい。それに国立公園内の工事の認可がああもあっさり出るものなのか…。

あとAntonが逮捕される経緯も強引だし(あの理由で逮捕されるなら訴えた競合も逮捕されないとおかしい), さらにAntonが元勤務先の競合の社内systemにあらかじめ仕掛けておいた侵入経路から入って高頻度取引を混乱させるというのは既に犯罪では…。

観客に通信に関心のある人が多くなるだろうということを考えればちょっと細部の作り込みが物足りないと感じさせられる作品だった。

ハミングバード・プロジェクト 0.001秒の男たち(字幕版)

ハミングバード・プロジェクト 0.001秒の男たち(字幕版)

  • 発売日: 2020/02/07
  • メディア: Prime Video
 

 

UNIX version6のKernel Source Codeを気軽に読めるようにした

UNIX version6のKernel Source CodeはMinnie's Home Pageにある以下のarchiveを展開した/usr/sysの下にある。

https://minnie.tuhs.org/Archive/Distributions/Research/Dennis_v6/v6root.tar.gz

これについては一見ありふれた情報であるように見えるのだけれども解説本に載っているSource Codeに辿り着くための情報はそこまで多くない(気がする)。事前知識がないとOSをbuildするためのShell Script(この時代のUNIXにmakeはない)である/usr/source/runを見て初めて気がつくことになるのでここに書き留めておく。

 

Kernel Source Codeは以下のURIから一つ一つLinkを手繰っていくことで見られることは見られるが, あまり親切とは言えないUIであるため, これだけでSource Codeを読んでいこうとするとなかなか厳しい。

https://minnie.tuhs.org/cgi-bin/utree.pl?file=V6

どうせならGlobalなどの道具を使ってCode間の関連を把握したいと思うのが人情というもの。FreeBSDでserverを立ち上げてnginxとfcgiwrap, globalを入れ, 上記のarchiveを展開したものから/usr/sysだけを取り出し,

gtags; htags --alphabet --auto-completion --form --frame --line-number

としてSource CodeをHTML化。nginxのdocument root以下に展開して完成。長いこと中断していたLion's Commentary on UNIXを再度読み進める準備ができた。

 

SIMHでPDP-11 emulatorも立上げてみたのでいざとなったら実験もできる…がSource Codeの編集はLine Editorでしかできないのでなかなか厳しそうな気もする。