
Moxnox 1.0은 Windows NT와 비슷한 시스템 호출·저수준 인터페이스를 갖추면서, 재컴파일한 유닉스 계열 프로그램을 실행하도록 설계된 취미용 운영체제다. amd64와 aarch64를 지원하며, 자체 환경에서 빌드할 수 있지만 btrfs 지원은 기본적인 용도에 한정돼 제작자는 버려도 되는 파일시스템 외에는 마운트하지 말라고 경고한다.
약 13만 줄의 C++로 작성됐고 GNU 기본 시스템을 포함한다. POSIX 2024 함수 약 1,200개 가운데 642개를 구현했으며, fork도 지원한다. 다만 POSIX 호환은 완전하지 않다. AF_UNIX의 클라이언트·서버 코드는 작동하지 않고, mkfifo로 만든 FIFO에 대한 입출력도 아직 구현되지 않았다. 신호에 해당하는 APC는 스레드가 시스템 호출에서 돌아올 때만 전달되므로, 무한 루프 중인 프로그램은 현재 종료할 수 없다.
가상 머신에서 시험하려면 프로젝트의 실행 안내에 따라 amd64 또는 aarch64 이미지와 커널 파일을 내려받아 QEMU로 실행한다. 자체 호스팅처럼 부하가 큰 작업에는 기본 설정인 1024MB보다 메모리를 늘려야 한다. 설치하려면 btrfs 파티션과 최신 btrfs-progs가 필요하며, 안내에는 파티션을 만들고 파일시스템을 준비한 뒤 커널과 EFI 부팅 항목을 설치하는 과정이 담겨 있다. 파티션 장치 이름을 잘못 지정하지 않도록 주의해야 한다.
하드웨어 지원에는 NVMe·SATA 저장장치, 일부 네트워크 카드, USB 입력 장치와 XHCI 등이 포함된다. amd64는 x86-64-v3를 대상으로 해 대략 2015년 이후의 기기를 지원하며, aarch64는 ARMv8.1의 LSE 원자 연산을 요구한다. 따라서 라즈베리 파이는 5만 지원하고, 이 기기에서는 ACPI만 지원하므로 별도의 UEFI 펌웨어가 필요하다.
현재 빠진 기능으로는 GUI, 여러 시간대와 키보드 배열, 로케일, 보안, 여러 사용자·그룹이 있다. Windows 프로그램도 아직 실행할 수 없다. 커널과 자체 프로그램은 GPL, 자체 DLL은 LGPL, modules 디렉터리 내용은 MIT 라이선스이며, 포팅된 각 소프트웨어의 라이선스는 별도로 확인해야 한다.
부록: 원문 예시
qemu-system-x86_64 -M q35 -enable-kvm -cpu host -m 1024 \ -smp cores=4,threads=1 \ -kernel moxnox-kernel-amd64-1.0.efi \ -append "root=/dev/sda" \ -device ich9-ahci,id=ahci -drive id=disk,file=moxnox-amd64-1.0.img,if=none \ -device ide-hd,drive=disk,bus=ahci.0 \ -nic user,model=virtio-net-pci \ -device qemu-xhci \ -device usb-kbd,id=kbd \ -device usb-tablet,id=tablet \ -serial stdio
qemu-system-aarch64 -M virt -cpu cortex-a76 -m 1024 \ -smp cores=4,threads=1 \ -kernel moxnox-kernel-aarch64-1.0.efi \ -append "root=/dev/sda" \ -device ich9-ahci,id=ahci -drive id=disk,file=moxnox-aarch64-1.0.img,if=none \ -device ide-hd,drive=disk,bus=ahci.0 \ -nic user,model=virtio-net-pci \ -drive if=pflash,unit=0,file=/usr/share/qemu/edk2-aarch64-code.fd,readonly=on \ -device qemu-xhci \ -device usb-kbd,id=kbd \ -device usb-tablet,id=tablet \ -serial stdio
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요