GloWorm-это простая UNIX-подобная ОС, написанная в C для ретро-оборудования, в частности, серии компьютеров Computie68k. Он в значительной степени основан на чтении операционных систем проектирования и реализации 2 -го Эндрю С. Таненбаума, хотя я пошел с монолитным дизайном, по крайней мере, на данный момент, для его простоты. Он может делать превентивную многозадачность, используя таймер 68681. Он также имеет реализацию файловой системы Minix версии 1, которая использует ОЗУ (через драйвер устройства) для хранения данных, или компактную флэш -карту, подключенную как устройство IDE. Второй последовательный порт может быть настроен в виде скользящего устройства с базовой реализацией UDP и TCP через API в стиле сокетов BSD, а также представлена команда NTP для обновления системного времени на загрузке (при загрузке с диска).

Выше приведенное видео показывает подключение через сериал с современного ПК и сброс аппаратного обеспечения для запуска монитора в ПЗУ, которое отображает приветственное сообщение. Ядро уже загружено в ОЗУ, поэтому запуск команды загрузки загрузит ядро, которое затем запускает оболочку. Из оболочки показаны некоторые основные файловые операции и команда PS.

В приведенном выше видео изображено подключение через сериал с современного компьютера после первой включения платы. Сначала монитор работает, давая подсказку «>». Bootloader был сожжен в Flash на адрес 0x20000. От монитора запускается загрузочный загрузчик, который затем загружает ядро с прикрепленной компактной флэш -карты. Каждый период (.) Печатный символ представляет 1 килобит данных, загруженных с диска). Затем загрузочный загрузчик прыгает на загруженное ядро, которое отображает загрузочные сообщения перед запуском процесса инициирования с диска. Процесс init сначала запускает sh /etc/rc », который запускает команду NTPDate для обновления системы системы. Затем он запускает интерактивную оболочку.
Некоторые команды отображаются после загрузки, а затем запускается программа HTTPD (которая на данный момент отключена отключена). С другого компьютера команда Curl запускается для выпуска запроса на доску. Программа HTTPD отвечает данными «Это секретное сообщение»
Чтобы скомпилировать ядро для передачи через сериал, запустите:
make kernel.load Это может быть отправлено через сериал, как монитор. Возможно, вы захотите изменить конфигурацию ядра в src/kernel/main.c если вы используете плату без карты CompactFlash, или вы не хотите использовать сеть.
Изображение может быть построено с помощью устройства Loopback и следующих команд:
make create-image
make mount-image
make build-system
make umount-image Который будет производить изображение диска 20 МБ в minix-build.img используя build/ каталог в качестве точки Mount, и файловая система Minix1. Он не включает таблицу разделов, поэтому необходимо создавать на флэш -накопителе другими способами. Он может быть записан в файл блочного устройства для конкретного разделения с использованием dd на рабочем столе UNIX.
Чтобы напрямую загружать компакт -фракт, сценарий boot.load Скачать может быть загружен по сериалу и записан в альтернативное местоположение, такое как 0x020000 . Это должно быть место, которое находится за пределами сектора флэш -чипа, в котором записан монитор, иначе система будет небезопасной. Изображение Boot.bin не содержит векторную таблицу, как и изображение монитора.
После отправки файла boot.load через последовательный, не запустив его, в мониторе запустите следующее:
eraserom 20000
writerom 20000
verifyrom 20000Затем вы можете загрузиться с монитора в любое время, работая:
boot 20000Bootloader будет распечатывать символ периода на каждую 1K изображения ядра, загруженного с диска в ОЗУ, а затем он будет запускать ядро после. Если это работает, вы должны увидеть светодиодную мигание сердцебиения, чтобы указать, что ядро работает, а многопроцессорная передача включена и переключение.
Если второй последовательный порт подключен к настольному столу, он будет действовать как подключение к скольжению, которое можно соединить с сетью рабочего стола, где /dev/ttyUSB1 является последовательным устройством, подключенным ко второму последовательному порту платы, а 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 " Устройство будет иметь IP 192.168.1.200 , который также должен быть настроен в функции src/kernel/main.c внизу.