Toaruos é um sistema operacional "completo" para PCs x86-64 e suporte experimental para o ARMV8.
Enquanto muitos sistemas independentes, de hobby e pesquisas têm como objetivo experimentar novos projetos, a Toaruos se destina a um recurso educacional, fornecendo um microcosmo representativo de funcionalidade encontrado nos principais sistemas operacionais da área de trabalho.
O sistema operacional inclui um kernel, carregador de inicialização, ligante de objetos compartilhados dinâmicos, biblioteca padrão C, seu próprio sistema de janelas compositado, uma linguagem de programação dinâmica de bytecode compilada, editor de código avançado e dezenas de outros utilitários e aplicativos de exemplo.
Não há dependências externas de tempo de execução e todo o código -fonte necessário, totalizando aproximadamente 100 mil linhas de (principalmente) C, está incluído neste repositório, exceto Kuroko, que vive separadamente.
Demonstração da interface do usuário de Toaruos e algumas aplicações.
Trabalho em Toaruos há mais de uma década e meus objetivos mudaram ao longo dos anos.
Quando iniciei o projeto em dezembro de 2010, meu objetivo era "aprender fazendo" - estudando sistemas semelhantes a Unix, fazendo um do zero. Eu tinha contribuído para a Compiz, um dos primeiros gerentes de janelas de composição amplamente usados por X11, alguns anos antes, e um pouco naturalmente Toaruos ganhou uma GUI construída sobre conceitos semelhantes desde o início.
Para seu lançamento original de 1.0 em 2015, a Toaruos não foi o sistema operacional "completamente do zero" que se tornou. O Newlib forneceu o LIBC e a GUI foi construída no Cairo, Libpng e Freetype. Em meados de 2018, iniciei um novo projeto para substituir esses componentes de terceiros, que acabaram sendo concluídos e mesclados para se tornar Toaruos 1.6.
Ao longo do projeto, a Toaruos também atraiu alguns desenvolvedores iniciantes do sistema operacional que tentaram usá -lo como referência. O kernel de Toaruos, no entanto, era uma fonte de vergonha pessoal para mim e, em abril de 2021, depois de um longo hiato, comecei a trabalhar em um novo. O resultado foi Misaka: um novo kernel de 64 bits, habilitado para SMP. Misaka foi mesclado em maio e iniciou a série de 1,99 lançamentos beta que antecederam o Toaruos 2.0.
dlopen .Os seguintes projetos estão atualmente em andamento:
Os usuários em geral que desejam construir toaruos a partir da fonte são recomendados para bifurcar o repositório no Github e usar o pipeline do Github CI.
Para aqueles que desejam construir localmente em um host Linux adequadamente configurado com o Docker, um contêiner de construção está disponível. O repositório Toaruos deve ser usado como uma montagem de ligação em /root/misaka e util/build-in-docker.sh pode ser executada dentro deste contêiner para concluir o processo de compilação:
git clone https://github.com/klange/toaruos
cd toaruos
git submodule update --init kuroko
docker pull toaruos/build-tools:1.99.x
docker run -v `pwd`:/root/misaka -w /root/misaka -e LANG=C.UTF-8 -t toaruos/build-tools:1.99.x util/build-in-docker.sh
Depois de construir assim, você pode executar os vários alvos utilitários ( make run , etc.). Experimente make shell execute um shell toaruos usando uma porta serial com qemu.
O Makefile usa uma ferramenta Kuroko, auto-dep.krk , para gerar modos adicionais para os aplicativos e bibliotecas de espaço de usuários, resolvendo automaticamente as dependências com base nas diretivas #include .
Em uma ordem indeterminada, a biblioteca C, o kernel, os userspace Librares e os aplicativos são construídos, combinados em um arquivo compactado para uso como um Ramdisk e depois empacotados em uma imagem do sistema de arquivos ISO9660.
base/usr/include , bem como recursos gráficos para o compositor e decorador de janelas.O sistema de arquivos raiz está configurado da seguinte forma:
bin : Aplicações de primeira parte.cdrom : Mount Point para o CD, se disponível.dev : Diretório de dispositivos virtuais, gerado pelo kernel.net : Dispositivos de interface de rede.pex : Hub de troca de pacotes, lista os serviços IPC acessíveis.pts : PTY Secundários, pontos de extremidade para ttys.etc : Arquivos de configuração, scripts de inicialização.home : diretórios de usuários.lib : Bibliotecas de Primeiras Parteskuroko : Módulos Kuroko.mod : Módulos de kernel carregáveis.proc : Arquivos virtuais que apresentam o estado do kernel.1 , etc.: Arquivos virtuais com informações de status para processos individuais.src : arquivos de origem, consulte a seção "Layout do projeto" acima.tmp : montado como um tmpfs de leitura/gravação normalmente.usr : Recursos de espaço para usuáriosbin : Aplicativos de terceiros, normalmente vazios até que os pacotes sejam instalados.include : arquivos de cabeçalho, incluindo potencialmente os de pacotes de terceiros.lib : bibliotecas de terceiros. Deve ter libgcc_s.so por padrão.share : vários recursos.bim : Sintaxe Destacando e temas para o editor de texto.cursor : sprites de cursor do mouse.fonts : arquivos de fonte TrueType. Os CDs vivos são enviados com Deja Vu Sans.games : Dumping Ground para arquivos de recursos relacionados ao jogo, como Doom Wads.help : arquivos de documentação para o aplicativo de navegador de ajuda.icons : ícones PNG, divididos em outros diretórios por tamanho.ttk : Recursos da SpriteSheet para o decorador de janelas e a biblioteca de widgets.wallpapers : papéis de parede JPEG.var : Arquivos de tempo de execução, incluindo cache de manifesto do gerenciador de pacotes, arquivos PID, alguns arquivos de bloqueio, etc. A melhor experiência do usuário final com Toaruos será adquirida em qualquer uma dessas máquinas virtuais, pois a Toaruos tem suporte para seu dimensionamento automático e posicionamento absoluto do mouse.
Configure uma nova VM para um hóspede de 64 bits, forneça pelo menos 1gib de RAM, conecte a imagem do CD, remova ou ignore os discos rígidos e selecione uma Intel Gigabit NIC. Duas ou mais CPUs também são recomendadas.
Toaruos em execução no VirtualBox.
Toaruos em execução no VMware Workstation Player.
Por padrão, o bootloader passará um sinalizador para o driver do dispositivo VirtualBox para desativar o suporte "sem costura", pois a implementação tem uma sobrecarga de desempenho. Para ativar o modo sem costura, use o menu Bootloader para verificar a opção "VirtualBox Seamless" antes de inicializar. O menu também tem opções para desativar o tamanho automático de exibição de convidados, se você tiver problemas com esse recurso.
A maior parte do desenvolvimento de Toaruos acontece no Qemu, pois oferece a maior flexibilidade no hardware e a melhor experiência de depuração. Uma linha de comando qemu recomendada em um host Ubuntu 20.04 é:
qemu-system-x86_64 -enable-kvm -m 1G -device AC97 -cdrom image.iso -smp 2
Substitua -enable-kvm com -accel hvm ou -accel haxm conforme apropriado em plataformas de host sem KVM ou remova -o para tentar sob a emulação de software TCG da QEMU.
Observe que as opções de linha de comando QEMU não são estáveis e esses sinalizadores podem produzir avisos em versões mais recentes.
A opção -M q35 substituirá a emulação de chipset PIIX por uma mais recente, que tem o efeito colateral de alternar o controlador IDE para um SATA. Isso pode resultar em horários de inicialização mais rápidos às custas de Toaruos não conseguirem ler seu próprio CD em tempo de execução até que eu termine o meu driver AHCI.
Toaruos foi testado com sucesso em hardware real. Se os carregadores de BIOS ou EFI nativos não funcionarem, tente inicializar com o GRUB. Toaruos está em conformidade com as especificações "MultiBoot" e "MultiBoot 2", para que possa ser carregado com os comandos multiboot ou multiboot2 da seguinte maneira:
multiboot2 /path/to/misaka-kernel root=/dev/ram0 migrate vid=auto start=live-session
module2 /path/to/ramdisk.igz
set gfxpayload=keep
Toaruos saindo nativamente de um bastão USB em um thinkpad T410.
Todas as partes de primeira parte dos Toaruos são disponibilizadas nos termos da licença da Universidade de Illinois / NCSA, que é uma licença permissiva no estilo BSD. Salvo indicação em contrário, esta é a licença original e apenas para todos os arquivos neste repositório - apenas porque um arquivo não possui um cabeçalho de direitos autorais não significa que não esteja sob esta licença. A Toaruos pretende ser uma referência educacional e incentivo o uso do meu código, mas certifique -se de seguir os requisitos da licença. Você pode redistribuir o código sob a licença da NCSA, além de fazer modificações no código e sublicele-ele em outros termos (como a GPL ou uma licença proprietária), mas sempre deve incluir o aviso de direitos autorais especificado na licença e disponibilizar apenas alguns parágrafos) disponíveis para os financiadores.
Embora a maioria dos Toaruos seja escrita inteiramente por mim, inclua outros autores, quando relevante, como no subsistema de áudio de Mike ou nas funções de String de Dale.
Alguns componentes de toaruos, como Kuroko ou BIM, têm termos diferentes, mas compatíveis.
Toaruos é refletido regularmente em vários sites de hospedagem Git.
#toaruos on libera ( irc.libera.chat )
Aplicações e bibliotecas individuais podem ser construídas instalando a metapackage build-essential do repositório, que puxará gcc e binutils . As fontes estão disponíveis no diretório /src no CD ao vivo em um layout semelhante a este repositório, e o script do utilitário auto-dep.krk também está disponível.
Para a construção de ramdisks, kernels finalizados ou imagens de CD, alguns componentes estão atualmente indisponíveis. Em particular, o script de compilação para Ramdisks ainda está escrito em Python e depende do seu módulo tarfile e do suporte zlib . Anteriormente, com uma cadeia de ferramentas do compilador capaz, o Toaruos 1.x conseguiu criar seu próprio kernel, espaço de usuários, bibliotecas e carregador de inicialização e transformá -los em uma imagem de CD ISO em funcionamento através de um script python que desempenhava uma função semelhante ao makefile.
Atualmente, a Toaruos não é capaz de construir a maioria de suas portas, devido à falta de um shell POSIX adequado e à implementação. Estes são objetivos eventuais do projeto.
Não, de jeito nenhum. Não há código do Linux em nenhum lugar em Toaruos, nem as fontes Linux foram usadas como material de referência.
Toaruos é um projeto completamente independente e todo o código deste repositório - que é a base de código inteira do sistema operacional, incluindo seu kernel, bootloadeds, bibliotecas e aplicativos - é original, escrito por mim e um punhado de colaboradores ao longo de dez anos. A história completa da fonte, voltando a quando Toaruos não passava de um Baremetal "Hello World" pode ser rastreado através deste repositório Git.
A Toaruos está completa no sentido de que cobre toda a gama de funcionalidades para um sistema operacional: não é "apenas um kernel" ou "apenas um espaço de usuários".
Toaruos não está completo no sentido de ser "feito".
Embora eu pretenda oferecer suporte a interfaces POSIX bem o suficiente para que o software seja transportado, a implementação estrita do padrão não é um objetivo importante do sistema operacional, e a conformidade total pode até ser indesejável.
Toaruos é um projeto pessoal, não um projeto comunitário. As contribuições na forma de código devem ser discutidas com antecedência. Portos e outros trabalhos fora do repositório, no entanto, são uma ótima maneira de ajudar.
Você também pode ajudar contribuindo para Kuroko - que faz parte do motivo pelo qual é mantido como um repositório separado.