
현대적인 외계인
손으로 쓴 빌드 시스템에 대해 이야기하기 전에 esque.toml을 언급해야합니다. 이것은 사용자 정의에 사용할 수있는 다양한 옵션이있는 구성 파일입니다. 이것을 설정하는 데 많은 시간이 걸렸으므로 이제 Esque OS를 구축하는 표준입니다.
cargorustcddmtools (McOpy, MMD, ...)dosfstools (mkfs.vfat)python >= 3python.tomlpython.xbstrap$ sudo apt install cargo rustc binutils mtools dosfstools python3 python3-pip ; pip install --user xbstrap toml y.py Rustc의 x.py 에서 영감을 얻은 유틸리티입니다. 이 디렉토리의 sysroot에서 찾을 수있는 Esque.toml 파일을 사용하여 커널을 구성 할 수 있습니다. 이 파일은 많은 옵션을 제공하며 구축하기 전에 살펴보십시오.
단순히 사용하는 프로젝트를 구축 할 수 있습니다
./y.py build
이 시스템은 매우 구성 가능합니다. 간단히 입력하십시오
./y.py --help
모든 옵션을 보려면.
먼저, Esque.toml 입력하고 enable-kvm false로 변경해야합니다.
창문 위에 건물은 권장되지 않습니다. 나는 오랜 Linux 사용자이며 전체 빌드 프로세스는 나에게 설계되었지만 winy.ps1 사용하여 빌드는 가능하지만 최적화되지는 않았습니다.
Windows에서는 Linux와 동일한 방식으로 특정 y.py 명령 만 실행될 수 있습니다 (예 : ./y.py 빌드는 dd 실행하여 IMG 파일을 만듭니다). 따라서 두 가지 옵션이 제공됩니다
이것은 일부에게 선호되는 옵션 일 수 있습니다. 이 시나리오에서는 WSL을 사용하여 ./y.py run 제외한 모든 명령을 실행합니다.
이를 위해서는 Dependencies (On Linux) 섹션에 위에 나열된 모든 종속성이 필요합니다.
winy.ps1 은 기본적으로 실행할 내용과 그렇지 않은 것을 결정하는 PowerShell 스크립트입니다. 사용량은 ./y.py eg ./winy run 과 동일 ./winy build .
주의를 기울여 이를 위해서는 executionPolicy를 우회해야합니다. 관리자 권한과 타이핑이있는 명령 호스트를 열어 일시적으로 변경할 수 있습니다.
Set-ExecutionPolicy Bypass 이를 위해서는 WSL의화물 및 Rustc를 제외한 위에 나열된 모든 종속성이 필요합니다. 화물, Rustc 및 창문에 tar 바이너리가 필요합니다. Rustup Binary rustup.rs 사용하여 의존성을 쉽게 설치할 수 있습니다.
WSL 에서 다음 명령을 실행하십시오 (우분투를 가정) :
$ sudo apt install binutils mtools dosfstools python3 python3-pip ; pip install --user xbstrap toml운영 체제는 종속성이 없어야합니다. 불행히도,이 시스템은 총 2 개의 상자에 따라 다릅니다.
bitflags
spin
crates/ 하위 디렉토리 내에서 10 개 이상의 자체 종속성이 유지됩니다. 이러한 종속성에는 타르 로더 등이 포함됩니다.
std::sync::{Mutex,...} 대체합니다. 이것은 거의 모든 주요 OSDEV 프로젝트에서 사용되는 엄청나게 유용한 상자입니다. 이 상자는 미래에 떨어질 수 있습니다. 그렇다면 더 큰 바이너리를 생산할 수 있지만, C, 스트립 후에도 작은 것을 생산합니다. 현재 커널의 크기는 ~ 300k에 불과하며, 이는 나에게 허용됩니다. 부트 로더는 거대한 'uefi'의존성으로 인해 약 270k입니다.
Esque는 exokernel과 같은 시스템 인 Linux와 Windows의 측면을 연합하려는 커널입니다. Exokernel은 기본 사항 만 제공하는 커널이며 추가 사항 (예 : 네트워크 스택)은 모듈을 통해로드됩니다.
Linux에서 소프트웨어의 가용성이 크기 때문에 Esque는 다소 호환되는 것을 목표로합니다. fake-root 를 사용하여 파일 시스템 호환성을 달성합니다. 두 가지 전공이 있습니다. 진짜 뿌리 와 가짜 뿌리 . 가짜 경로 의 예는 /home/user/ 또는 /bin/* 입니다. 실제 루트 경로는 장치로 시작합니다 : 경로 구성. 예 : initramfs:/myfile , C:/Binaries/* , B:/BOOT/EFI/BOOTX64.EFI , C:/Users/User/ 또는 proc:/CpuInfo .
Linux Syscalls는 실제 위치 (0, 1, 2, 3, 4 ...)에 있으며 Esque Syscalls는 (Sys_num + 0x1000)에 있습니다.
예 - 아니요. Esque에는 응용 프로그램을위한 세 가지 가상 '공간'이 있습니다. 그중 두 가지만이 진짜입니다. 거기 있습니다
나는 많은 사람들이 이와 같은 커널에 그들의 시간을 기꺼이 사용하지 않는다는 것을 이해합니다. 나는 아무리 크든 작든 기꺼이 모든 기여를 환영 할 것입니다. 기여 파일을 읽고 문서 디렉토리의 파일을 살펴보십시오.
initramfs에서는 현재 현재 디렉토리가 지원되지 않습니다. initramfs/ subdirectory에 파일을 넣어 단순히 새로운 Initramf를 만들 수 있습니다. 그런 다음 ./y.py initramfs 사용하여 완성 된 Initramfs는 build/initramfs.tar 에서 찾을 수 있습니다. 부트 로더는이 파일이 루트 파티션에서 찾을 것으로 예상합니다.
.system 으로 끝나는 모든 파일은 Initramfs에 의해로드됩니다. 상기 .system 파일 중 하나가 파일 시스템을로드 할 것으로 예상됩니다.
안전하지 않은 코드가없는 운영 체제가 불가능하다는 것은 사실이지만 여기에서 제한하려고했습니다. 언제든지
./y.py count-unsafe
코드의 안전하지 않은 정보에 대한 정보가 표시되는 호출 될 수 있습니다. 글을 쓰는 시점에서 다음과 같은 출력이 생성됩니다.
A total of 52 occurences have been found (1641 LOC, 0.* percent Percent)
alloc 상자를 지원하십시오