Toaruos는 X86-64 PC를위한 "완전한"운영 체제이며 ARMV8에 대한 실험적 지원입니다.
많은 독립적이고 취미 및 연구 OS가 새로운 디자인을 실험하는 것을 목표로하지만 Toaruos는 교육 자원으로 의도되어 있으며, 주요 데스크톱 운영 체제에서 발견되는 대표적인 기능을 제공합니다.
OS에는 커널, 부트 로더, 동적 공유 객체 링커, C 표준 라이브러리, 자체 복합 윈도우 시스템, 동적 바이트 코드 컴파일 프로그래밍 언어, 고급 코드 편집기 및 수십 가지 다른 유틸리티 및 예제 응용 프로그램이 포함됩니다.
외부 런타임 종속성은 없으며 총 대략 100k 라인의 (주로) C 가이 저장소에 포함되어 있습니다.이 저장소에 포함되어 있습니다.
Toaruos의 UI 및 일부 응용 프로그램 시연.
나는 지금 10 년 넘게 Toaruos에서 일해 왔으며, 몇 년 동안 내 목표가 바뀌 었습니다.
2010 년 12 월에 프로젝트를 처음 시작했을 때, 나의 목표는 "학습을 통해 배우는 것" - 우스와 같은 시스템을 처음부터 만들어 공부하는 것이 었습니다. 나는 몇 년 전에 X11의 최초의 널리 사용되는 작곡 창 관리자 중 하나 인 Compiz의 기여자였으며 다소 자연스럽게 Toaruos는 비슷한 개념을 초기에 구축했습니다.
2015 년 원래 1.0 릴리스에서 Toaruos는 그 이후로 "완전히 처음부터"OS가 아니 었습니다. Newlib provided the libc, and the GUI was built on Cairo, libpng, and Freetype. 2018 년 중반, 나는이 타사 구성 요소를 대체하기위한 새로운 프로젝트를 시작했는데 결국에는 Toaruos 1.6이되기 위해 완료되어 합병되었습니다.
Toaruos는이 프로젝트를 통해이를 참조로 사용하려고 시도한 초보자 OS 개발자들을 끌어 들였습니다. 그러나 Toaruos의 커널은 나에게 개인적인 당황의 원천이었고 2021 년 4 월에 긴 혼란이 끝난 후 새로운 작업을 시작했습니다. 그 결과 Misaka : 새로운 64 비트, SMP 지원 커널. Misaka는 5 월에 합병되었으며 Toaruos 2.0으로 이어지는 1.99 시리즈 베타 릴리스를 시작했습니다.
dlopen 과 동적으로 연결된 사용자 공간 .다음 프로젝트는 현재 진행 중입니다.
소스에서 Toaruos를 구축하기를 희망하는 일반 사용자는 Github의 저장소를 포크하고 Github CI 파이프 라인을 사용하는 것이 좋습니다.
Docker가있는 적절하게 구성된 Linux 호스트에 로컬로 제작하려는 사람들은 빌드 컨테이너를 사용할 수 있습니다. Toaruos 저장소는 바인드 마운트 At /root/misaka 및 util/build-in-docker.sh 를 사용 하여이 컨테이너 내에서 실행하여 편집 프로세스를 완료해야합니다.
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
이와 같은 구축 후에는 다양한 유틸리티 대상 ( make run 등)을 실행할 수 있습니다. QEMU가있는 직렬 포트를 사용하여 Toaruos 쉘을 실행하도록 make shell 보십시오.
Makefile Kuroko 도구 인 auto-dep.krk 사용하여 사용자 공간 애플리케이션 및 라이브러리에 대한 추가 makefiles를 생성하고 #include 지침을 기반으로 종속성을 자동으로 해결합니다.
불확실한 순서로 C 라이브러리, 커널, 사용자 공간 라이브러리 및 응용 프로그램이 구축되어 압축 아카이브로 결합되어 Ramdisk로 사용한 다음 ISO9660 파일 시스템 이미지로 포장됩니다.
base/usr/include 의 C 헤더를 포함합니다.루트 파일 시스템은 다음과 같이 설정됩니다.
bin : 자사 응용 프로그램.cdrom : 가능한 경우 CD의 마운트 포인트.dev : 커널에 의해 생성 된 가상 장치 디렉토리.net : 네트워크 인터페이스 장치.pex : Packet Exchange Hub, 액세스 가능한 IPC 서비스를 나열합니다.pts : Pty Secondaries, Ttys의 엔드 포인트.etc : 구성 파일, 시작 스크립트.home : 사용자 디렉토리.lib : 자사 도서관kuroko : Kuroko 모듈.mod :로드 가능한 커널 모듈.proc : 커널 상태를 제시하는 가상 파일.1 등 : 개별 프로세스에 대한 상태 정보가있는 가상 파일.src : 소스 파일, 위의 "프로젝트 레이아웃"섹션을 참조하십시오.tmp : 정상적으로 읽기/쓰기 TMPF로 장착됩니다.usr : 사용자 공간 리소스bin : 제 3 자 애플리케이션, 일반적으로 패키지가 설치 될 때까지 비어 있습니다.include : 타사 패키지의 잠재적 인 파일을 포함한 헤더 파일.lib : 타사 라이브러리. 기본적으로 libgcc_s.so 와 함께해야합니다.share : 다양한 자원.bim : 텍스트 편집기의 구문 하이라이트 및 테마.cursor : 마우스 커서 스프라이트.fonts : Truetype 글꼴 파일. Deja vu Sans와 함께 라이브 CDS 선박.games : Doom wads와 같은 게임 관련 리소스 파일을위한 덤핑 접지.help : 도움말 브라우저 응용 프로그램에 대한 문서 파일.icons : PNG 아이콘은 크기별로 추가 디렉토리로 나뉩니다.ttk : 창 장식기 및 위젯 라이브러리를위한 Spritesheet 리소스.wallpapers : JPEG 월페이퍼.var : 패키지 관리자를 포함한 런타임 파일, 캐시, PID 파일, 일부 잠금 파일 등 Toaruos가 자동 디스플레이 크기 크기 및 절대 마우스 포지셔닝을 지원하기 때문에 Toaruos에 대한 최고의 최종 사용자 경험은 이러한 가상 머신 중 하나에 있습니다.
"기타"64 비트 게스트에 대한 새로운 VM을 설정하고 최소 1Gib의 RAM을 공급하고 CD 이미지를 부착하고 하드 디스크를 제거하거나 무시한 후 Intel 기가비트 NIC를 선택하십시오. 둘 이상의 CPU도 권장됩니다.
VirtualBox에서 실행되는 Toaruos.
VMware 워크 스테이션 플레이어에서 실행되는 Toaruos.
기본적으로 BootLoader는 깃발을 VirtualBox 장치 드라이버로 전달하여 구현에 성능 오버 헤드가 있으므로 "원활한"지원을 비활성화합니다. Seamless 모드를 활성화하려면 BootLoader 메뉴를 사용하여 부팅하기 전에 "VirtualBox Seamless"옵션을 확인하십시오. 이 기능에 문제가 발생하면 자동 게스트 디스플레이 사이징을 비활성화 할 수있는 옵션도 있습니다.
Toaruos의 대부분의 개발은 QEMU에서 발생하며 하드웨어에서 가장 유연성과 최고의 디버깅 경험을 제공하기 때문에 발생합니다. 우분투 20.04 호스트의 권장 QEMU 명령 줄은 다음과 같습니다.
qemu-system-x86_64 -enable-kvm -m 1G -device AC97 -cdrom image.iso -smp 2
KVM이없는 호스트 플랫폼에서 적절한 -accel hvm 또는 -accel haxm 으로 -enable-kvm 교체하거나 QEMU의 TCG 소프트웨어 에뮬레이션에서 시도해보십시오.
QEMU 명령 줄 옵션은 안정적이지 않으며이 플래그는 최신 버전으로 경고를 생성 할 수 있습니다.
옵션 -M q35 PIIX 칩셋 에뮬레이션을 새로운 칩셋 에뮬레이션으로 대체하며, 이는 SATA 컨트롤러를 전환하는 부작용이 있습니다. 이로 인해 Toaruos가 AHCI 드라이버를 끝내기 전까지는 런타임에 자체 CD를 읽을 수 없다는 비용으로 부팅 시간이 더 빠를 수 있습니다.
Toaruos는 실제 하드웨어에서 성공적으로 테스트되었습니다. 기본 BIOS 또는 EFI 로더가 작동하지 않으면 GRUB로 부팅을 해보십시오. Toaruos는 "Multiboot"및 "Multiboot 2"사양을 준수하므로 다음과 같이 multiboot 또는 multiboot2 명령으로로드 될 수 있습니다.
multiboot2 /path/to/misaka-kernel root=/dev/ram0 migrate vid=auto start=live-session
module2 /path/to/ramdisk.igz
set gfxpayload=keep
ThinkPad T410의 USB 스틱에서 기본적으로 실행되는 Toaruos.
Toaruos의 모든 퍼스트 파티 부분은 BSD 스타일의 허용 라이센스 인 일리노이 대학 / NCSA 라이센스의 조건에 따라 제공됩니다. 달리 명시되지 않는 한,이 저장소의 모든 파일에 대한 원본 및 유일한 라이센스입니다. 파일에 저작권 헤더가 없다고 해서이 라이센스에 따라 없다는 것을 의미하지는 않습니다. Toaruos는 교육 참조로 의도되어 있으며 내 코드 사용을 권장하지만 라이센스의 요구 사항을 준수하십시오. 귀하는 NCSA 라이센스에 따라 코드를 재분배하고 코드를 수정하고 다른 용어 (예 : GPL 또는 독점 라이센스)에 따라이를 수정할 수 있지만, 라이센스에 지정된 저작권 통지를 항상 포함시켜야하며 최종 사용자가 제공하는 라이센스의 전체 텍스트 (단지 몇 가지 단락)를 포함해야합니다.
대부분의 Toaruos는 혼자서 전적으로 쓰여지지만 Mike의 오디오 서브 시스템 또는 Dale의 문자열 기능과 같은 다른 저자를 포함시켜야합니다.
Kuroko 또는 BIM과 같은 Toaruos의 일부 구성 요소는 다르지만 호환되는 용어를 가지고 있습니다.
Toaruos는 정기적으로 여러 Git 호스팅 사이트에 반영됩니다.
#toaruos on libera ( irc.libera.chat )
개별 애플리케이션 및 라이브러리는 저장소에서 build-essential 메타 패키지를 설치하여 gcc 및 binutils 끌어 낼 수 있습니다. 소스는 라이브 CD의 /src 디렉토리 에서이 저장소와 유사한 레이아웃으로 제공되며 auto-dep.krk 유틸리티 스크립트도 제공됩니다.
Ramdisk, 최종 커널 또는 CD 이미지를 구축하려면 현재 일부 구성 요소를 사용할 수 없습니다. 특히 Ramdisks의 빌드 스크립트는 여전히 Python으로 작성되었으며 tarfile 모듈 및 zlib 지원에 따라 다릅니다. 이전에는 유능한 컴파일러 도구 체인을 사용하여 Toaruos 1.x는 자체 커널, 사용자 공간, 라이브러리 및 부트 로더를 빌드 할 수 있었으며 MakeFile과 유사한 기능을 수행하는 Python 스크립트를 통해 작동 ISO CD 이미지로 전환 할 수있었습니다.
Toaruos는 현재 적절한 Posix 쉘이없고 구현으로 인해 대부분의 항구를 구축 할 수 없습니다. 이것들은 프로젝트의 최종 목표입니다.
아니요. Toaruos의 어느 곳에서나 Linux의 코드는 없으며 Linux 소스는 참조 자료로 사용되지 않았습니다.
Toaruos는 완전히 독립적 인 프로젝트이며,이 저장소의 모든 코드는 커널, 부트 로더, 라이브러리 및 응용 프로그램을 포함한 운영 체제의 전체 코드베이스입니다. 직접 작성된 원본 및 10 년 동안 소수의 기여자입니다. Toaruos 가이 git 저장소를 통해 Baremetal "Hello World"를 추적 할 수있는시기로 거슬러 올라가는 완전한 소스 역사.
Toaruos는 OS의 전체 기능 범위를 다루는 의미에서 완전합니다. "단지 커널"또는 "사용자 공간"이 아닙니다.
Toaruos는 "완료"라는 의미에서 완전 하지 않습니다 .
소프트웨어를 포팅하기에 충분한 POSIX 인터페이스를 지원하는 것을 목표로하지만 표준의 엄격한 구현은 OS의 주요 목표가 아니며 전체 준수는 바람직하지 않을 수도 있습니다.
Toaruos는 커뮤니티 프로젝트가 아니라 개인 프로젝트입니다. 코드 형태의 기여는 미리 논의해야합니다. 그러나 포트 및 레포 이외의 다른 작업은 도움을 줄 수있는 좋은 방법입니다.
또한 Kuroko에 기여하여 도와 드릴 수 있습니다. 이는 별도의 저장소로 유지되는 이유의 일부입니다.