์์ฒด ์ปค๋, ๋ถํธ ๋ก๋, ํ์ค C ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํจํค์ง ๊ด๋ฆฌ์, ์ฌ์ฉ์ ๊ณต๊ฐ ๊ตฌ์ฑ ์์ ๋ฐ ๋ณตํฉ ์ฐฝ ๊ด๋ฆฌ์๊ฐ ์๋ ๊ทธ๋ํฝ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ฒ์๋ถํฐ ์์ฑ๋ Unix ๊ณ์ด ์ด์ ์ฒด์ ๋ฅผ ๊ฐ๋ฐํ๋ ToaruOS 1.14 ํ๋ก์ ํธ ๋ฆด๋ฆฌ์ค๊ฐ ์ถ์๋์์ต๋๋ค. ํ์ฌ ๊ฐ๋ฐ ๋จ๊ณ์์ ์์คํ ๊ธฐ๋ฅ์ Python 3 ๋ฐ GCC๋ฅผ ์คํํ๊ธฐ์ ์ถฉ๋ถํฉ๋๋ค. ํ๋ก์ ํธ ์ฝ๋๋ C๋ก ์์ฑ๋์์ผ๋ฉฐ BSD ๋ผ์ด์ผ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค. QEMU, VMware ๋๋ VirtualBox์์ ํ ์คํธํ ์ ์๋ 14MB ํฌ๊ธฐ์ ๋ผ์ด๋ธ ์ด๋ฏธ์ง๊ฐ ๋ค์ด๋ก๋์ฉ์ผ๋ก ์ค๋น๋์์ต๋๋ค.
์ด ํ๋ก์ ํธ๋ 2010๋ ์ผ๋ฆฌ๋ ธ์ด ๋ํ๊ต์์ ์์๋์์ผ๋ฉฐ ์ฒ์์๋ ์๋ก์ด ๋ณตํฉ ๊ทธ๋ํฝ ์ธํฐํ์ด์ค ์์ฑ ๋ถ์ผ์ ์ฐ๊ตฌ ์์ ์ผ๋ก ๊ฐ๋ฐ๋์์ต๋๋ค. 2012๋ ๋ถํฐ ๊ฐ๋ฐ์ ToaruOS ์ด์ ์ฒด์ ๋ก ์ ํ๋์์ผ๋ฉฐ, ์ฒ์์๋ ํ์ ํ๋ก์ ํธ๋ก ๊ฐ๋ฐ๋ ํ ์ฃผ๋ง ์ทจ๋ฏธ๋ก ์ฑ์ฅํ์ฌ ํ๋ก์ ํธ๋ฅผ ์ค์ฌ์ผ๋ก ํ์ฑ๋ ์ปค๋ฎค๋ํฐ์ ์ํด ์ ํ๋์์ต๋๋ค. ํ์ฌ ํํ์ ์์คํ ์๋ ๋ณตํฉ ์ฐฝ ๊ด๋ฆฌ์๊ฐ ์ฅ์ฐฉ๋์ด ์์ผ๋ฉฐ ELF ํ์, ๋ฉํฐํ์คํน, ๊ทธ๋ํฝ ๋ฐ ๋คํธ์ํฌ ์คํ์์ ๋์ ์ผ๋ก ์ฐ๊ฒฐ๋ ์คํ ํ์ผ์ ์ง์ํฉ๋๋ค.
ํจํค์ง์๋ ํจํค์ง ๊ด๋ฆฌ์, ๊ทธ๋ํฝ ํธ์ง๊ธฐ, PDF ๋ทฐ์ด, ๊ณ์ฐ๊ธฐ ๋ฐ ๊ฐ๋จํ ๊ฒ์๊ณผ ๊ฐ์ ์ผ๋ถ ToaruOS ๊ด๋ จ ๊ทธ๋ํฝ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ฌ์ฉ๋๋ Python 3.6 ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ํฌํธ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ToaruOS๋ก ํฌํ ๋ ํ์ฌ ํ๋ก๊ทธ๋จ์๋ Vim, GCC, Binutils, FreeType, MuPDF, SDL, Cairo, Doom, Quake, Super Nintendo ์๋ฎฌ๋ ์ดํฐ, Bochs ๋ฑ์ด ํฌํจ๋ฉ๋๋ค.
ToaruOS๋ ๋์คํฌ ๋๋ผ์ด๋ฒ(PATA ๋ฐ ATAPI), EXT2 ๋ฐ ISO9660 ํ์ผ ์์คํ , ํ๋ ์ ๋ฒํผ์ ๊ฐ์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ฅ์น ๋๋ผ์ด๋ฒ์ ๋๋ถ๋ถ์ ๊ตฌ์ฑํ๋ ๋ก๋ ๊ฐ๋ฅํ ๋ชจ๋์ ์ฌ์ฉํ๊ธฐ ์ํ ๋๊ตฌ์ ๋ชจ๋๋ฆฌ์ ํ๋ ์์ํฌ๋ฅผ ๊ฒฐํฉํ๋ ํ์ด๋ธ๋ฆฌ๋ ๋ชจ๋์ ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉํ๋ ์ปค๋์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. , ํค๋ณด๋, ๋ง์ฐ์ค, ๋คํธ์ํฌ ์นด๋(AMD PCnet FAST, Realtek RTL8139 ๋ฐ Intel PRO/1000), ์ฌ์ด๋ ์นฉ(Intel AC'97) ๋ฐ ๊ฒ์คํธ ์์คํ ์ฉ VirtualBox ์ถ๊ฐ ๊ธฐ๋ฅ.
์ปค๋์ด ์ ๊ณตํ๋ ๊ธฐ๋ณธ ์์์๋ Unix ์ค๋ ๋, TTY, ๊ฐ์ ํ์ผ ์์คํ , ๋ฉํฐ์ค๋ ๋ฉ, IPC, ๊ณต์ ๋ฉ๋ชจ๋ฆฌ, ๋ฉํฐํ์คํน ๋ฐ ๊ธฐํ ํ์ค ๊ธฐ๋ฅ์ด ํฌํจ๋ฉ๋๋ค. ext2๊ฐ ํ์ผ ์์คํ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ์ปค๋๊ณผ ์ํธ ์์ฉํ๊ธฐ ์ํด Linux์ ์ ์ฌํ๊ฒ ์์ฑ๋ ์์ฌ FS /proc ๊ตฌํ์ด ์ ๊ณต๋ฉ๋๋ค.
2021๋ ๊ณํ์๋ 64๋นํธ x86-64 ์ํคํ ์ฒ(ํ์ฌ ์ด์ ๋ธ๋ฆฌ๋ 32๋นํธ x86 ์์คํ ์ ๋ํด์๋ง ์์ฑ๋จ)์ ๋ํ ์์ ๊ณผ ๋ค์ค ํ๋ก์ธ์ ์์คํ (SMP)์ ๋ํ ์ง์์ด ํฌํจ๋ฉ๋๋ค. ๋ค๋ฅธ ๋ชฉํ์๋ ์ ํธ ์ฒ๋ฆฌ ๋ฐ ๋๊ธฐํ ๋ฐฉ๋ฒ ๋ถ์ผ์์ POSIX ์ฌ์๊ณผ์ ํธํ์ฑ ํฅ์, ํ์ค C ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ Newlib ์์ค์ผ๋ก ๊ฐ์ ธ์ค๊ณ ์์ฒด C ์ธ์ด ์ปดํ์ผ๋ฌ ๋ฐ ๊ฐ๋ฐ ๋๊ตฌ ๊ตฌํ์ด ํฌํจ๋ฉ๋๋ค.
์ด ํ๋ก์ ํธ๋ ๋ํ ์์คํ ์ฉ ์ ํธ๋ฆฌํฐ ๋ฐ ์ฌ์ฉ์ ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋ Python์ ๋์ฒดํ๋๋ก ์ค๊ณ๋ ์์ฒด ๋์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ธ Kuroko๋ฅผ ๊ฐ๋ฐํ๊ณ ์์ต๋๋ค. ์ด ์ธ์ด๋ ๋ฐ์ดํธ์ฝ๋ ์ปดํ์ผ ๋ฐ ํด์์ ์ง์ํ๋ฉฐ ๊ตฌ๋ฌธ์ Python๊ณผ ์ ์ฌํ๋ฉฐ(๋ช ์์ ์ธ ๋ณ์ ์ ์๊ฐ ํฌํจ๋ Python์ ๋จ์ถ ๋ฐฉ์ธ์ผ๋ก ์์น ์ง์ ๋จ) ๊ตฌํ์ด ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค. ๋ฐ์ดํธ์ฝ๋ ์ธํฐํ๋ฆฌํฐ๋ ๊ฐ๋น์ง ์์ง๊ธฐ๋ฅผ ์ ๊ณตํ๊ณ ์ ์ญ ์ ๊ธ์ ์ฌ์ฉํ์ง ์๊ณ ๋ฉํฐ์ค๋ ๋ฉ์ ์ง์ํฉ๋๋ค. ์ปดํ์ผ๋ฌ์ ์ธํฐํ๋ฆฌํฐ๋ ์์ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(~500KB) ํํ๋ก ์ปดํ์ผ๋ ์ ์์ผ๋ฉฐ, ๋ค๋ฅธ ํ๋ก๊ทธ๋จ๊ณผ ํตํฉ๋๊ณ C API๋ฅผ ํตํด ํ์ฅ ๊ฐ๋ฅํฉ๋๋ค. ToaruOS ์ธ์๋ Linux, macOS, Windows์์ ์ธ์ด๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ WebAssembly๋ฅผ ์ง์ํ๋ ๋ธ๋ผ์ฐ์ ์์ ์คํํ ์ ์์ต๋๋ค.
ToaruOS์ ์ ๋ฆด๋ฆฌ์ค๋ ํ์ค C ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ Kuroko ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๊ฐ๋ฐ์ ์ค์ ์ ๋์์ต๋๋ค. ์๋ฅผ ๋ค์ด, Quake ๊ฒ์์์ ์กฐ๋ช ๋งค๊ฐ๋ณ์๋ฅผ ์ ํํ๊ฒ ๊ณ์ฐํ๋ ๋ฐ ํ์ํ ์ํ ํจ์๊ฐ libc์ ์ถ๊ฐ๋์์ต๋๋ค. EFI ๋ชจ๋์์ VirtualBox๋ก ๋ถํ ํ๋ ๊ธฐ๋ฅ์ด ๊ฐ์ ๋์์ต๋๋ค. ๋จ ๋์คํฌ ์ด๋ฏธ์ง ์์ถ์ ์ฌ์ฉํ์ฌ iso ์ด๋ฏธ์ง์ ํฌ๊ธฐ๋ฅผ ์ค์์ต๋๋ค.
Kuroko 1.1 ์ธ์ด์ ์ ๋ฆด๋ฆฌ์ค์๋ ๋น๋๊ธฐ ๋ฐ ๋๊ธฐ์ ๋ํ ์ง์ ์ถ๊ฐ, ๋ฉํฐ์ค๋ ๋ฉ ๊ตฌํ, Python 3๊ณผ์ ํธํ์ฑ ๊ฐ์ , ๋ค์ค ๊ฐ ํ ๋น ์ง์, C ์ธ์ด๋ก ํธ๋ค๋ฌ ์์ฑ ๋๊ตฌ ํ์ฅ, ํจ์์ ๋ํ ์ ํ ์ฃผ์ ์ง์ ์ถ๊ฐ, ํค์๋ "yield" ๋ฐ "yield from", os, dis, fileio ๋ฐ time ๋ชจ๋์ด ํตํฉ๋์์ผ๋ฉฐ, str, list, dict ๋ฐ bytes์ ์๋ก์ด ๋ฉ์๋๊ฐ ๊ตฌํ๋์์ผ๋ฉฐ, ๋ฐ์ดํธ์ฝ๋๋ก ์ฌ์ ์ปดํ์ผ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ผ๋ฉฐ, ๋ผ์ด์ ์ค๊ฐ MIT๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค(์ด์ ์๋ MIT์ ISC๊ฐ ๊ฒฐํฉ๋์ด ์์์ต๋๋ค).
์ถ์ฒ : opennet.ru