Glowormは、レトロハードウェア、特にComputie68Kシリーズのコンピューター用にCで書かれたシンプルなUNIXのようなOSです。それは主に、Andrew S. Tanenbaumによるオペレーティングシステムの設計と実装2の読み物に基づいていますが、少なくとも当面はその単純さのためにモノリシックなデザインを行ってきました。 68681タイマーを使用して、先制的なマルチタスクを実行できます。また、Minixバージョン1ファイルシステムの実装もあります。これは、RAM(デバイスドライバーを介して)を使用してデータを保存するか、IDEデバイスとして接続されたコンパクトフラッシュカードを保存します。 2番目のシリアルポートは、BSDソケットスタイルのAPIを介してUDPとTCPの基本的な実装を使用して、スリップデバイスとして構成でき、NTPコマンドがBootでシステム時間を更新するために提供されます(ディスクからブートするとき)。

上記のビデオでは、最新のPCからシリアルを接続し、ハードウェアをリセットして、歓迎メッセージを表示するROMでモニターを実行することを示しています。カーネルはすでにRAMにロードされているため、ブートコマンドを実行するとカーネルが起動し、シェルが起動します。シェルから、基本的なファイル操作とPSコマンドが表示されます。

上記のビデオでは、最初にボードを電源で動作させた後、最新のコンピューターからシリアルを接続していることを示しています。モニターは最初に実行され、「>」プロンプトが与えられます。ブートローダーは、アドレス0x20000でフラッシュに焼き付けられています。モニターから、ブートローダーが実行され、接続されたコンパクトフラッシュカードからカーネルをロードします。各期間(。)印刷された文字は、ディスクからロードされた1キロバイトのデータを表します)。その後、ブートローダーはロードされたカーネルにジャンプします。これは、ディスクからinitプロセスを実行する前にブートメッセージを表示します。 initプロセスは、最初にsh /etc/rc "を実行し、ntpdateコマンドを実行してシステム時間を更新します。その後、インタラクティブシェルを実行します。
ブート後にいくつかのコマンドが表示され、その後、HTTPDプログラムが実行されます(当面はフォーキングが無効になっています)。別のコンピューターから、Curlコマンドが実行され、ボードにリクエストを発行します。 HTTPDプログラムは、「これは秘密のメッセージです」というデータに応答します。
シリアル上の転送のためにカーネルをコンパイルするには、実行します。
make kernel.loadモニターのようにシリアルで送信できます。 CompactFlashカードなしでボードを使用している場合、またはネットワークを使用したくない場合は、 src/kernel/main.cのカーネル構成を変更することをお勧めします。
画像は、ループバックデバイスを使用して構築でき、次のコマンドを使用できます。
make create-image
make mount-image
make build-system
make umount-image minix-build.imgで20MBのディスクイメージを作成し、MountPointとしてbuild/ディレクトリを使用してMinix1ファイルシステムを使用します。パーティションテーブルは含まれていないため、他の手段でフラッシュドライブで作成する必要があります。 UNIXのようなデスクトップでddを使用して、パーティション固有のブロックデバイスファイルに書き込むことができます。
CompactFlashを直接オフにするために、 boot.loadスクリプトをシリアル上でロードし、 0x020000などの代替場所に書き込むことができます。これは、モニターが書かれているフラッシュチップのセクターの外側にある場所である必要があります。そうしないと、システムが起動できません。 boot.binイメージには、monitor.bin imageのようなベクトルテーブルが含まれていません。
boot.loadファイルをシリアル上にロードした後、実行せずにモニターで、次のように実行します。
eraserom 20000
writerom 20000
verifyrom 20000その後、実行して、いつでもモニターから起動できます。
boot 20000ブートローダーは、ディスクからRAMにロードされたカーネル画像の1kごとにピリオド文字を印刷し、その後カーネルを実行します。それが機能する場合は、ハートビートLEDが点滅してカーネルが実行されており、マルチプロセッシングが有効になり、切り替えが表示されます。
2番目のシリアルポートがデスクトップに接続されている場合、それはスリップ接続のように機能し、デスクトップのネットワークにブリッジできます。ここで、 /dev/ttyUSB1はボードの2番目のシリアルポートに接続されたシリアルデバイスであり、 192.168.1.xローカルネットワークであり、ENP3S0はLinuxデスクトップのインターネット接続されたネットワークインターフェイスです。
sudo slattach -s 38400 -p slip /dev/ttyUSB1
sudo ifconfig sl0 192.168.1.2 pointopoint 192.168.1.200 up
# (this is automatically added on my machine, but might be required) sudo route add -host 192.168.1.200 sl0
sudo arp -Ds 192.168.1.200 enp3s0 pub
sudo iptables -A FORWARD -i sl0 -j ACCEPT
sudo iptables -A FORWARD -o sl0 -j ACCEPT
sudo sh -c " echo 1 > /proc/sys/net/ipv4/ip_forward "デバイスには、下部のカーネルのsrc/kernel/main.c関数で構成する必要があるIP 192.168.1.200があります。