Unix ๊ณ์ด ์ด์ ์ฒด์ ์ธ ToaruOS 2.1์ด ์ถ์๋์ด ์ฒ์๋ถํฐ ์์ฑ๋์์ผ๋ฉฐ ์์ฒด ์ปค๋, ๋ถํธ ๋ก๋, ํ์ค C ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํจํค์ง ๊ด๋ฆฌ์, ์ฌ์ฉ์ ๊ณต๊ฐ ๊ตฌ์ฑ ์์ ๋ฐ ๋ณตํฉ ์ฐฝ ๊ด๋ฆฌ์๊ฐ ์๋ ๊ทธ๋ํฝ ์ธํฐํ์ด์ค๊ฐ ํจ๊ป ์ ๊ณต๋์์ต๋๋ค. ์ด ํ๋ก์ ํธ๋ ์ฒ์์ ์ผ๋ฆฌ๋ ธ์ด ๋ํ์์ ์๋ก์ด ๋ณตํฉ ๊ทธ๋ํฝ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋๋ ๋ถ์ผ์ ์ฐ๊ตฌ ์์ ์ผ๋ก ๊ฐ๋ฐ๋์์ง๋ง ์ดํ ๋ณ๋์ ์ด์ ์ฒด์ ๋ก ์ ํ๋์์ต๋๋ค. ํ๋ก์ ํธ ์ฝ๋๋ C๋ก ์์ฑ๋์์ผ๋ฉฐ BSD ๋ผ์ด์ผ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค. QEMU, VMware ๋๋ VirtualBox์์ ํ ์คํธํ ์ ์๋ 14.4MB ํฌ๊ธฐ์ ๋ผ์ด๋ธ ์ด๋ฏธ์ง๊ฐ ๋ค์ด๋ก๋์ฉ์ผ๋ก ์ค๋น๋์์ต๋๋ค.
ToaruOS๋ ๋์คํฌ ๋๋ผ์ด๋ฒ(PATA ๋ฐ ATAPI), EXT2 ๋ฐ ISO9660 ํ์ผ ์์คํ , ํ๋ ์ ๋ฒํผ์ ๊ฐ์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ฅ์น ๋๋ผ์ด๋ฒ์ ๋๋ถ๋ถ์ ๊ตฌ์ฑํ๋ ๋ก๋ ๊ฐ๋ฅํ ๋ชจ๋์ ์ฌ์ฉํ๊ธฐ ์ํ ๋๊ตฌ์ ๋ชจ๋๋ฆฌ์ ํ๋ ์์ํฌ๋ฅผ ๊ฒฐํฉํ๋ ํ์ด๋ธ๋ฆฌ๋ ๋ชจ๋์ ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉํ๋ ์ปค๋์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. , ํค๋ณด๋, ๋ง์ฐ์ค, ๋คํธ์ํฌ ์นด๋(AMD PCnet FAST, Realtek RTL8139 ๋ฐ Intel PRO/1000), ์ฌ์ด๋ ์นฉ(Intel AC'97) ๋ฐ ๊ฒ์คํธ ์์คํ ์ฉ VirtualBox ์ถ๊ฐ ๊ธฐ๋ฅ. ์ปค๋์ Unix ์ค๋ ๋, TTY, ๊ฐ์ ํ์ผ ์์คํ , ์์ฌ ํ์ผ ์์คํ /proc, ๋ฉํฐ์ค๋ ๋ฉ, IPC, ๋จ๋์คํฌ, ptrace, ๊ณต์ ๋ฉ๋ชจ๋ฆฌ, ๋ฉํฐํ์คํน ๋ฐ ๊ธฐํ ํ์ค ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค.
์ด ์์คํ ์๋ ๋ณตํฉ ์ฐฝ ๊ด๋ฆฌ์๊ฐ ์ฅ์ฐฉ๋์ด ์์ผ๋ฉฐ ELF ํ์์ ๋์ ์ผ๋ก ๋งํฌ๋ ์คํ ํ์ผ, ๋ฉํฐํ์คํน, ๊ทธ๋ํฝ ์คํ์ ์ง์ํ๊ณ Python 3 ๋ฐ GCC๋ฅผ ์คํํ ์ ์์ผ๋ฉฐ Ext2๊ฐ ํ์ผ ์์คํ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ๋ถํธ๋ก๋๋ BIOS์ EFI๋ฅผ ์ง์ํฉ๋๋ค. ๋คํธ์ํฌ ์คํ์ BSD ์คํ์ผ ์์ผ API์ ์ฌ์ฉ์ ํ์ฉํ๊ณ ๋ฃจํ๋ฐฑ์ ํฌํจํ ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ฅผ ์ง์ํฉ๋๋ค.
๊ธฐ๋ณธ ์ ํ๋ฆฌ์ผ์ด์ ์ค์์๋ Vi์ ์ ์ฌํ ์ฝ๋ ํธ์ง๊ธฐ Bim์ด ๋์ ๋๋๋ค. ์ด๋ ํ์ผ ๊ด๋ฆฌ์, ํฐ๋ฏธ๋ ์๋ฎฌ๋ ์ดํฐ, ์์ ฏ ์ง์ ๊ทธ๋ํฝ ํจ๋, ํจํค์ง ๊ด๋ฆฌ์ ๋ฑ๊ณผ ๊ฐ์ ToaruOS ๊ด๋ จ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๋ ๋ฐ ์ง๋ ๋ช ๋ ๊ฐ ์ฌ์ฉ๋์ด ์์ต๋๋ค. ์ด๋ฏธ์ง(PNG, JPEG) ๋ฐ ํธ๋ฃจํ์ ๊ธ๊ผด์ ์ง์ํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ฌ์ฉ๋ฉ๋๋ค. Vim, GCC, Binutils, FreeType, MuPDF, SDL, Cairo, Doom, Quake, Super Nintendo ์๋ฎฌ๋ ์ดํฐ, Bochs ๋ฑ๊ณผ ๊ฐ์ ํ๋ก๊ทธ๋จ์ด ToaruOS๋ก ํฌํ ๋์์ต๋๋ค.
์ด ํ๋ก์ ํธ๋ ๋ํ ์์คํ ์ฉ ์ ํธ๋ฆฌํฐ ๋ฐ ์ฌ์ฉ์ ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋ Python์ ๋์ฒดํ๋๋ก ์ค๊ณ๋ ์์ฒด ๋์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ธ Kuroko๋ฅผ ๊ฐ๋ฐํ๊ณ ์์ต๋๋ค. ์ด ์ธ์ด๋ ๊ตฌ๋ฌธ(๋ช ์์ ์ธ ๋ณ์ ์ ์๊ฐ ํฌํจ๋ Python์ ๋จ์ถ ๋ฐฉ์ธ์ผ๋ก ์์น)์์ Python์ ์ฐ์์ํค๋ฉฐ ๊ตฌํ์ด ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค. ๋ฐ์ดํธ์ฝ๋์ ์ปดํ์ผ ๋ฐ ํด์์ด ์ง์๋ฉ๋๋ค. ๋ฐ์ดํธ์ฝ๋ ์ธํฐํ๋ฆฌํฐ๋ ๊ฐ๋น์ง ์์ง๊ธฐ๋ฅผ ์ ๊ณตํ๊ณ ์ ์ญ ์ ๊ธ์ ์ฌ์ฉํ์ง ์๊ณ ๋ฉํฐ์ค๋ ๋ฉ์ ์ง์ํฉ๋๋ค. ์ปดํ์ผ๋ฌ์ ์ธํฐํ๋ฆฌํฐ๋ ์์ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(~500KB) ํํ๋ก ์ปดํ์ผ๋ ์ ์์ผ๋ฉฐ, ๋ค๋ฅธ ํ๋ก๊ทธ๋จ๊ณผ ํตํฉ๋๊ณ C API๋ฅผ ํตํด ํ์ฅ ๊ฐ๋ฅํฉ๋๋ค. ToaruOS ์ธ์๋ Linux, macOS, Windows์์ ์ธ์ด๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ WebAssembly๋ฅผ ์ง์ํ๋ ๋ธ๋ผ์ฐ์ ์์ ์คํํ ์ ์์ต๋๋ค.
์ ๋ฆด๋ฆฌ์ค์์:
- Raspberry Pi 64 ๋ณด๋ ๋ฐ QEMU ์๋ฎฌ๋ ์ดํฐ์์ ToaruOS๋ฅผ ์ฌ์ฉํ๋ ์คํ์ ๊ธฐ๋ฅ์ ํฌํจํ์ฌ AArch8(ARMv400) ์ํคํ ์ฒ์ ๋ํ ์ด๊ธฐ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ์ฌ์ฉ์ ๊ณต๊ฐ์ ํ๋ก์ธ์ค์ ๋ํ ์ ํธ ์ฒ๋ฆฌ ๋ฐ ์ ์ก์ด ์ฌ์ค๊ณ๋์์ต๋๋ค. sigaction, sigprocmask, sigwait ๋ฐ sigsuspens ํธ์ถ์ ๊ตฌํํ์ต๋๋ค.
- ์ฌ์ฉ์ ๊ณต๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ ํฅ์๋์์ต๋๋ค. munmap ์์คํ ํธ์ถ์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ๋ณตํฉ ๊ด๋ฆฌ์๋ ํ๋ฆผ ํจ๊ณผ๋ฅผ ๊ตฌํํ๊ณ ์ฐฝ ํฌ๊ธฐ๊ฐ ๋ณ๊ฒฝ๋ ๋ ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ์ฌ์์ ํฉ๋๋ค.
- ํฐ๋ฏธ๋ ๋ ๋๋ง์ด ๊ฐ์ ๋๊ณ ์ง์ฐ ๋ ๋๋ง์ด ๊ตฌํ๋์์ผ๋ฉฐ ํธ๋ฃจํ์ ๊ธ๊ผด์ ๋ํ ๊ธ๋ฆฌํ ์บ์๊ฐ ์ถ๊ฐ๋์์ต๋๋ค.
- ์๊ณก๊ฐ ๊ธฐ๋ฅ์ด ํ์ฅ๋์์ต๋๋ค.
- settimeofday ์์คํ ํธ์ถ ๋ฐ ๋ ์ง ์ ํธ๋ฆฌํฐ์ ํ์ฅ๋ ๊ธฐ๋ฅ์ ํฌํจํ์ฌ ์๊ณ ์ค์ ๋ฉ์ปค๋์ฆ์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ํฅ์๋ ๋คํธ์ํฌ ์คํ. ifconfig ์ ํธ๋ฆฌํฐ์ IPv4 ์ฃผ์ ๋ฐ ๋ผ์ฐํ ์ค์ ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. ICMP ์์ผ ์๋์ด ํ์ฑํ๋์์ต๋๋ค. UDP ๋ฐ ICMP ์์ผ์ ๋ํ recvfrom ํจ์์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ๋ถํธ๋ก๋์ USB ํค๋ณด๋๋ก ์์ ํ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ํ์ผ ๊ด๋ฆฌ์ ์ปจํ ์คํธ ๋ฉ๋ด์ ํ์ผ ์ญ์ ํญ๋ชฉ์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ์์คํ ๋ชจ๋ํฐ์ ๊ทธ๋ํ ํ์๊ฐ ๊ฐ์ ๋์์ต๋๋ค.
- ์ ๊ท์ ์ง์๊ณผ ํจ๊ป grep ์ ํธ๋ฆฌํฐ๊ฐ ์ถ๊ฐ๋์์ต๋๋ค.
- ps ๋ช ๋ น ์ถ๋ ฅ์ด ํฅ์๋์์ต๋๋ค(์ถ๊ฐ ์ด ์ถ๊ฐ).
์ถ์ฒ : opennet.ru