2 ポイント 投稿者 GN⁺ 2025-02-21 | 1件のコメント | WhatsAppで共有
  • DMRテープのs1/s2をフォレンジック分析し、動作可能なUNIXシステムを構築。s1はカーネルを収めたUNIX INIT DECtapeで、s2には配布ファイルの大半が含まれている
  • s1カーネルは、現在までに確認されている最古の機械可読なUNIXカーネルで、V1とV2の中間に位置し、V1・V2のa.outをどちらも実行できる
  • ユーザーコアサイズはV2同様 16 KiB(8K words) に拡大されているが、syscall tableはV1およびunix-jun72カーネルと同じで、V2 syscallは含まれない
  • 起動条件が厳しく、aapのPDP-11/20エミュレータだけがカーネル起動に成功し、SIMHとErsatz-11はlogin promptの前で停止する
  • 公開されたRFディスクイメージにはs1/s2のファイルのみが含まれており、aapエミュレータで起動可能。init(7)の挙動から、/usrはRF上にあったとみられる

s1/s2テープから復元したUNIX V2「Beta」

  • DMRテープをフォレンジック分析した結果、s1/s2テープから動作可能なシステムを構築できた
    • DMR tapes は分析対象となったテープ群
    • s1 tapeはカーネルを収めたUNIX INIT DECtape
    • s2 tapeは配布ファイルの大半を含む
  • s1カーネルは、現在までに確認されている最古の機械可読なUNIXカーネルで、V1とV2の中間に位置する
    • 未修正のunix-jun72カーネルはV1 a.outのみをサポート
    • s1カーネルはV1とV2のa.outを標準で両方実行できる
    • ユーザーコアサイズは8 KiB(4K words)から16 KiB(8K words) に増加
  • syscall tableはV1およびunix-jun72カーネルと同じ
    • V2 syscallは含まれない
    • syscallの面ではV1に近く、コアサイズとV2バイナリ実行の面ではV2の特性を持つため、「V2 beta」と見なされる
  • システム上で edcca.out の実行が可能
    • 例示セッションでは hello world! プログラムを作成・コンパイル・実行している

起動制約とRFディスクイメージ

  • 起動可能な環境は限定的
    • aap's PDP-11/20 emulator だけがカーネル起動に成功
    • SIMHとErsatz-11はlogin promptに到達する前に停止
  • 本来のインストール手順は、s1から起動した後にs2からファイルを復元する方式
    • aapエミュレータはTC11をサポートしていないため、s1/s2テープから直接インストールするのは難しい
  • 実際の構成は、迂回的にRFディスクイメージを作成する方法で進められた
    • s1 tapeのファイルを抽出して空のRFディスクに配置
    • unix-jun72カーネルをインストールした後、SIMHでRFから起動
    • s2の残りのファイルを抽出
    • 最後にhex editorでunix-jun72カーネルをs1カーネルに置き換え
  • 生成されたRFイメージにはs1/s2由来のファイルのみが含まれる
    • Research-UNIX-V2-Beta から入手可能
    • s1s2unix_rf.img の直接ダウンロードリンクも提供されている
    • このイメージはaapエミュレータでは起動するが、SIMHでは起動しない
  • init(7)プログラムはRKを /usr にマウントしない
    • この挙動は、/usr がRFに保存されていたことを示唆する

1件のコメント

 
GN⁺ 2025-02-21
Hacker News のコメント
  • Brian Kernighan の講演で聞いたジョークを思い出した。Ken Thompson が3週間でテキストエディタ、B コンパイラ、入出力ファイル管理の骨格を作り、それが最終的に UNIX になったという話だった
    ジョークの肝は、今の私たちは当時より少し効率が落ちているということ

    • Ken は間違いなく最高級のプログラマーで、そういう人が3週間集中できれば本当に多くのことができる
      妻が子どもたちを連れてイギリスへ行ったので、Ken は好きなことを思う存分できた、と記憶している。もちろん、最初の UNIX を書く前からすでに経験も非常に豊富だった
      頭の中にプロジェクトがあるプログラマーなら、一度試してみる価値はある。3週間、小屋のような場所で仕事や家族から離れ、必要な本や文書を持ち込み、インターネットを断つのだ。可能ならフィーチャーフォンを使い、どこまで進めるか見てみるやり方だ
      ただし、すでに十分考えていて、少しコードも書いてあるプロジェクトであるべき。さらに考えると、外部ライブラリにほとんど依存しない低レベルプロジェクトがこの実験には最も向いている。サードパーティライブラリの山に頼るプロジェクトだと、インターネットなしで問題が起きたとき詰まりやすいし、Ken も適切なプロジェクトを選んだというわけだ
    • インタビューはこちら: https://www.youtube.com/watch?v=EY6q5dv_B-o
      1時間の動画で、Thompson が面白い話をたくさんしている。Kernighan は Thompson に話させる役回りを見事にこなしている
    • 今風のジョークとしては、Ken Thompson が Rob Pike、Robert Griesemer と一緒に C / C++ のコンパイルを待っている間に Go を設計したというものがある
    • 初期の UNIX 開発者たちがどうやってこのレベルの生産性に達したのか気になる
      9時から5時まで働くような感じだったのか、それとも人生の他の部分を脇に置いて、終わらせるためにゴブリンモードに入っていたのか知りたい
    • プロジェクト機能の**最初の80%**は本当に速く進むこともある。特に興味があり、モチベーションが強いときはなおさらだ
      しかし残りの20%は長い尾のように続き、たいてい途方もない苦役になってやる気を削いでしまう
  • Spock も感嘆するほど興味深い。Mac で PDP-11 エミュレータをコンパイルする方法を学んでみたい

    • エミュレータのコンパイルはかなり簡単。simhを見ればよい。移植性が高いので、ほぼそのまま動くはず
      その次は 2.11BSD ディストリビューションのインストールを試してみるとよい。文書化がよくできていて、初期 Unix の多くの混乱が過ぎた後に出たものだ。その後は RT-11 で遊ぶのも非常に楽しく、実際に小さなアプリもいくつか書いてみた
    • https://opensimh.org/
      Apple Silicon でもうまく動く
    • 金属探知機で宗教的遺物を見つけた瞬間のような感じだ
    • 簡単すぎる!NAND ゲートで自作してやる
  • 本当に良い
    人々が実作業に ed を使うところを初めて見た
    それに、他に誰が ed を扱わなければならなかったのかも気になる。最近、vi のない非常に古いシステムに接続する必要があり、自分でエディタを作った。古代のシステム向けのエディタが必要な人がいれば連絡してもよい。あまり派手ではない
    このソフトウェアを作った人々と研究者たちの仕事は驚くべきもので、本物のエンジニアたちに敬意を表する

    • 1960年代に Honeywell のタイムシェアリングシステムで、Teletype ASR-33 を通じて ed に似たエディタを使った記憶がある
      詳細は覚えていないが、新しいファイルを作るときは make で起動した。make love と入力すると、エディタに入る前に not war と出力された
    • ed ではないが明らかに影響を受けたものとして、MS-DOS 3.3 の edlin でタイピング学校の試験を受けたくらいの年齢だ
      その後は二度と使わず、数年後に Xenix を使えるようになったときも ed は使わなかった。vi のほうがはるかにまともな代替手段だった
    • 8月にスマートフォンの Termux で ed を使って http://canonical.org/~kragen/sw/dev3/justhash.c を書いた
      ある人が、Android のスクリーンキーボードは vi にはひどすぎるのでスマートフォンでは ed を使っていると言っていて、実際その通りだったので試してみた。スマートフォンでは ed は vi より少し悪かったが、両者はそれぞれ違う形で悪い
      HeliBoard では、キーボードから ed コマンドを入力するのは vi よりずっと簡単だったが、何度か vi なら混乱しなかったはずのバッファ状態で混乱した。練習すれば良くなるかもしれないが、結局 vi に戻った
    • 90年代半ばに AT&T 3B2 を持っていたが、そこには ed しかなく、DEC VT-102 端末で使っていた
      ed は動くには動くが、現代の基準では面白くない。それでもテレタイプ出力と比べれば、画面で使うのはすごいことだったはずだ
      ついでに言うと、約 1 MIP の 3B2 が同時ユーザー約20人をさばけていた
    • 初期のコンサルティング仕事の一つは、Coherent システム向けの ed チュートリアルを書くことだった
      ed はよく使っていて、実は昨日も使った。画面を消さずに何かを編集する必要があったからだ
      それ以前には、ディスクに保存されたカードイメージ用のエディタも作ったが、非常に原始的なものだった
  • ときどき tuhs メーリングリストを眺めるのが好きだ。Ken Thompson、Rob Pike といった名前や、あまり知られていないが初期 UNIX とコンピューティングの現場に関わっていたさまざまな名前を見るのは素晴らしい

  • ソフトウェア考古学みたい

    • SaaS時代が嫌いな理由はいくつもあるけど、その一つは、こういうことが二度と起きないという点。2075年に誰かが研究や懐古のために古いNotionやFigmaを起動することはないだろう
      ソーシャルメディアで生産・消費される文化や、インターネット文化の他の多くの姿と同じように、完全に一時的で使い捨て。歴史もなければ未来もない
      SaaSは単に閉じているというレベルではなく、実際には文字どおり単一のインストールに縛られていることが多い。保存して別の場所で起動することはできるかもしれないが、元のチームなしで何年も後にそれをやるのは、現代のPCのエミュレータ上で1972年のUnixを起動するよりはるかに大仕事になる
      そのUnixにはマニュアルがあり、複数の配布環境にインストールして実行できるよう設計されていた。SaaSは、作者だけがデプロイできる寄せ集めに近い。必ずしも意図的だからではなく、そう作るよう圧力をかける進化的な力がないからだ
      内部で他のSaaSと絡み合っていることも多く、まるでプロプライエタリなソフトウェアがその場で編集されている一つのグローバルなコンピュータのように、クラウド全体の状態を保存して復元しなければならないかもしれない
    • 聞こえほど格好いいことではない
  • あのファイル権限が何を意味するのか、参考資料を教えてくれる人はいる? だいたいは推測できるけど、探してもUnix v2の権限についての情報が見つからなかった
    lsの出力は見慣れた感じだけど、sdrwrwの部分だけが見慣れない

    • メーリングリストのスレッドに、誰かが抽出したマニュアルページへのリンクが貼ってあった
      https://gitlab.com/segaloco/v1man/-/blob/master/man1/stat.1?...
      sdrwrwでは、1列目はsまたはlで、smallまたはlargeを意味する。2列目はdxu-で、ディレクトリ、実行可能、setuid、なしを意味する。残りは所有者と非所有者の読み取り/書き込みビット
  • hello worldが1328バイトだって? 肥大化したな!

    • 昔、いたずらで全バイナリに長い詩を入れていたコンパイラを思い出す。マジックナンバーは聞いたことがあるだろうけど、あれはマジックソネットがあったというわけだ
      初期のRustコンパイラだったと思ったけど、関連資料が見つからない。Goだったのかもしれない
      追記: 見つけた。'rust-lang/rust#13871: "hello world" contains Lovecraft quotes' https://github.com/rust-lang/rust/issues/13871
    • 私のhttps://github.com/pts/minilibc686なら、i386でprintfを使ったhello worldを1 KiB未満でできる。writeによるhello worldは170バイト未満
    • 自分のUnixをチューニングする時が来たな!
  • すごい。あの時間ポータルに入って、代替現実で暮らせるかな?

    • 有鉛ガソリンが使われ、タバコの煙がどこにでも当たり前にあり、アスベストが考えられるあらゆるものに使われていた時代のこと? 魅惑的な10年ではあるけど、生活の質はその後ものすごく向上した可能性が高い
    • 可能ではある。本物のVT端末を1台買えばいい。例えばhttps://www.ebay.com/itm/176698465415?_skw=vt+terminal&itmme...のようなもの
      コンピュータにつなぐアダプタを手に入れて、好きな*nixをsimhで動かせばいい。参考資料としてはhttps://jstn.tumblr.com/post/8692501831がおすすめ
      動くようにしたら、ホストマシンを机の後ろや見えない場所に押し込めば、1980年みたいに暮らせる
  • RFテープを復旧してみると、単純なテキストファイルだけを見ても、DOSや.isoファイルが使わないバッファ領域が見えてくる
    2.11 BSDディストリビューションでも、基本的なタイル表示とウィンドウマネージャはネイティブOSにインストールする必要がある。だからKDEなりX11ウィンドウマネージャなりを使うことになる