Gloworm adalah OS seperti Unix sederhana yang ditulis dalam C untuk perangkat keras retro, khususnya serangkaian komputer Computie68K. Ini sebagian besar didasarkan pada desain dan implementasi sistem operasi membaca 2ed oleh Andrew S. Tanenbaum, meskipun saya telah pergi dengan desain monolitik, setidaknya untuk saat ini, untuk kesederhanaannya. Ini dapat melakukan multitasking preemptive menggunakan timer 68681. Ini juga memiliki implementasi sistem file Minix Versi 1, yang menggunakan RAM (melalui driver perangkat) untuk menyimpan data, atau kartu flash kompak yang terhubung sebagai perangkat IDE. Port serial kedua dapat dikonfigurasi sebagai perangkat slip, dengan implementasi dasar UDP dan TCP melalui API gaya soket BSD, dan perintah NTP disediakan untuk memperbarui waktu sistem boot (saat boot dari disk).

Video di atas menunjukkan yang menghubungkan lebih dari serial dari PC modern dan mengatur ulang perangkat keras untuk menjalankan monitor di ROM yang menampilkan pesan selamat datang. Kernel sudah dimuat dalam RAM, jadi menjalankan perintah boot akan mem -boot kernel yang kemudian memulai shell. Dari shell, beberapa operasi file dasar dan perintah PS ditampilkan.

Video di atas menunjukkan menghubungkan lebih dari serial dari komputer modern setelah pertama -tama menyalakan papan. Monitor berjalan lebih dulu, memberikan prompt ">". Bootloader telah dibakar menjadi flash di alamat 0x20000. Dari monitor, boot loader dijalankan, yang kemudian memuat kernel dari kartu flash kompak yang terpasang. Setiap periode (.) Karakter yang dicetak mewakili 1 kilobyte data yang dimuat dari disk). Boot loader kemudian melompat ke kernel yang dimuat, yang menampilkan pesan boot sebelum menjalankan proses init dari disk. Proses init pertama kali menjalankan sh /etc/rc ", yang menjalankan perintah ntpdate untuk memperbarui waktu sistem. Ini kemudian menjalankan shell interaktif.
Beberapa perintah ditampilkan setelah boot, dan kemudian program HTTPD dijalankan (yang memiliki forking dinonaktifkan untuk saat ini). Dari komputer lain, perintah CURL dijalankan untuk mengeluarkan permintaan ke papan tulis. Program HTTPD merespons dengan data "Ini adalah pesan rahasia"
Untuk mengkompilasi kernel untuk transfer melalui serial, jalankan:
make kernel.load Ini dapat dikirim melalui serial seperti monitor. Anda mungkin ingin memodifikasi konfigurasi kernel di src/kernel/main.c jika Anda menggunakan papan tanpa kartu compactflash, atau Anda tidak ingin menggunakan jaringan.
Gambar dapat dibangun menggunakan perangkat loopback dan mengikuti perintah membuat:
make create-image
make mount-image
make build-system
make umount-image Yang akan menghasilkan gambar disk 20MB di minix-build.img menggunakan Direktori build/ sebagai Mountpoint, dan sistem file Minix1. Itu tidak termasuk tabel partisi, sehingga perlu dibuat pada flash drive dengan cara lain. Ini dapat ditulis ke file perangkat blok khusus partisi menggunakan dd pada desktop seperti UNIX.
Untuk mem -boot compactflash secara langsung, skrip boot.load dapat dimuat melalui serial dan ditulis ke lokasi alternatif seperti 0x020000 . Itu harus merupakan lokasi yang berada di luar sektor chip flash di mana monitor ditulis, atau sistem tidak akan dapat dibangun. Gambar boot.bin tidak berisi tabel vektor seperti gambar monitor.bin.
Setelah mengirim file boot.load melalui serial, tanpa menjalankannya, di monitor, jalankan berikut:
eraserom 20000
writerom 20000
verifyrom 20000Anda kemudian dapat boot dari monitor kapan saja dengan menjalankan:
boot 20000Bootloader akan mencetak karakter periode untuk setiap 1k gambar kernel yang dimuat dari disk ke RAM, dan kemudian akan menjalankan kernel setelahnya. Jika berhasil, Anda akan melihat detak jantung LED berkedip untuk menunjukkan kernel sedang berjalan dan multiprosessing diaktifkan dan beralih.
Jika port serial kedua terhubung ke desktop, itu akan bertindak seperti koneksi slip, yang dapat dijembatani ke jaringan desktop, di mana /dev/ttyUSB1 adalah perangkat serial yang terhubung ke port serial kedua papan, dan antarmuka jaringan 192.168.1.x .
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 " Perangkat ini akan memiliki IP 192.168.1.200 yang juga perlu dikonfigurasi dalam fungsi src/kernel/main.c kernel di bagian bawah.