O Gloworm é um sistema operacional simples do tipo Unix, escrito em C para hardware retrô, especificamente a série Computie68K de computadores. É amplamente baseado na leitura de design e implementação de sistemas operacionais 2ed por Andrew S. Tanenbaum, embora eu tenha ido com um design monolítico, pelo menos por enquanto, pela simplicidade. Pode fazer multitarefa preventiva usando o timer 68681. Ele também possui uma implementação do sistema de arquivos Minix versão 1, que usa RAM (através de um driver de dispositivo) para armazenar os dados ou uma placa de flash compacta conectada como um dispositivo IDE. A segunda porta serial pode ser configurada como um dispositivo deslizante, com uma implementação básica de UDP e TCP através de uma API no estilo Sockets BSD, e um comando NTP é fornecido para atualizar o tempo do sistema na inicialização (ao inicializar a partir do disco).

O vídeo acima mostra a conexão com a série a partir de um PC moderno e redefinindo o hardware para executar o monitor na ROM, que exibe a mensagem de boas -vindas. O kernel já está carregado na RAM; portanto, a execução do comando de inicialização inicializará o kernel que inicia o shell. No shell, algumas operações básicas de arquivo e o comando PS são mostradas.

O vídeo acima mostra a conexão com a série a partir de um computador moderno depois de ligar primeiro o quadro. O monitor é executado primeiro, fornecendo o prompt ">". O carregador de inicialização foi queimado no flash no endereço 0x20000. No monitor, o carregador de inicialização é executado, que carrega o kernel da placa flash compacta anexada. Cada período (.) O caractere impresso representa 1 kilobyte de dados carregados do disco). O carregador de inicialização salta para o kernel carregado, que exibe mensagens de inicialização antes de executar o processo init do disco. O processo init primeiro é executado sh /etc/rc ", que executa o comando ntpdate para atualizar o tempo do sistema. Ele executa um shell interativo.
Alguns comandos são mostrados após a inicialização e, em seguida, o programa HTTPD é executado (que tem desativado o forking por enquanto). De outro computador, o comando CURL é executado para emitir uma solicitação para o conselho. O programa HTTPD responde com os dados "Esta é uma mensagem secreta"
Para compilar o kernel para transferência sobre serial, execute:
make kernel.load Pode ser enviado sobre a série como o monitor. Você pode modificar a configuração do kernel no src/kernel/main.c se você estiver usando uma placa sem o cartão Compactflash ou não deseja usar a rede.
A imagem pode ser construída usando um dispositivo de loopback e seguintes, faça comandos:
make create-image
make mount-image
make build-system
make umount-image Que produzirá uma imagem de disco de 20 MB no minix-build.img usando o diretório build/ como o MountPoint e o Minix1 FileSystem. Ele não inclui uma tabela de partição, portanto, precisa ser criada na unidade flash por outros meios. Ele pode ser gravado no arquivo de dispositivo de bloco específico da partição usando dd em uma área de trabalho do tipo UNIX.
Para inicializar diretamente o compactflash, o script boot.load pode ser carregado sobre serial e gravado em um local alternativo, como 0x020000 . Deve ser um local fora do setor do flash chip no qual o monitor está escrito, ou então o sistema será inalterável. A imagem de boot.bin não contém uma tabela vetorial como a imagem do monitor.bin.
Depois de enviar o arquivo boot.load sobre serial, sem executá -lo, no monitor, execute o seguinte:
eraserom 20000
writerom 20000
verifyrom 20000Você pode inicializar do monitor a qualquer momento executando:
boot 20000O carregador de inicialização imprimirá um caractere de período para cada 1k da imagem do kernel carregada do disco para a RAM e, em seguida, ele executará o kernel depois. Se funcionar, você verá o LED de batimentos cardíacos piscando para indicar que o kernel está em execução e o multiprocessamento está ativado e com a comutação.
Se a segunda porta serial estiver conectada a um desktop, ela atuará como uma conexão deslizante, que pode ser preenchida na rede da área de trabalho, onde /dev/ttyUSB1 é o dispositivo serial conectado à segunda porta serial da placa e 192.168.1.x é a rede local e o ENP3 é a interface da Internet conectada à Internet na Interface na Interface na Interface na Interface na Interface na Interface,
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 " O dispositivo terá IP 192.168.1.200 , que também precisa ser configurado na função src/kernel/main.c do kernel na parte inferior.