- 리눅스 커널은 3600만 라인짜리 거대한 오픈소스지만, 첫번째 버전은 10239 라인 이었음(주석/빈줄 제외하면 8670)
- Linux v0.01은 그 간결함으로 인해 Unix 스타일 OS커널의 내부를 배우기 위한 좋은 출발점
- v0.01은 66개의 시스템 콜만 가지고 있음
- 파일/디렉토리 생성,삭제,쓰기
- chmod, chown, pipe, fork, execve
- Socket 컨셉이 도입되지 않아서 네트워크 지원불가
- mount는 아직 구현되지 않음
- Intel 386 아키텍처에 대해서 하드코딩 되어 있음(MINIX 저자가 이를 비판함)
- strcpy 가 i386 명령어를 사용한 어셈블리로 코딩
- PC/AT 기기들만 지원
- CMOS, PIT(Programmable Interval Timer), ATA(PIO), VGA(텍스트 모드), Intel 8042 PS2 키보드(어셈블리)
- 아직 drivers 폴더도 없고, 서브시스템에 하드코딩 되어있음
- Linus가 원래 붙였던 이름인 "FREAX" Kernel 이 적힌 주석이 Makefile에 있음
- 파일시스템은 MINIX 만 지원(ext 는 MINIX에서 영감을 받았음)
- 스케줄러 코드에 "이 부분은 모든 환경에서 동작하는 꽤 좋은 코드라 변경할 이유가 없을 것!" 이라고 주석이 달린게 있음
- 물론 현재는 다양한 개선 및 알고리듬이 도입되면서 수정되었으므로 이 예언은 틀렸음
- 커널 패닉 구현부는 단 5줄 : "커널 패닉: 원인" 을 출력하고
for(;;)
로 시스템을 중단
- 커널 공간에서 fork(2)를 호출하는 부분이 있음
- 그렇게 보이지만 실제로는 그 앞에 move_to_user_mode() 가 트릭
- Linus는 8Mb 이상의 램을 가진 기기가 없었음 (자신은 없어서 테스트 해보지 못했으니, 가진 사람이 잘 해보라고..)
- 현대의 툴체인으로는 컴파일 하기 어려움
- GCC가 하위호환이 되긴 하지만 충분하지 않음
- Linus는 -mstring-insns 라는 옵션이 있는 자신만의 GCC가 있었음(아마도 x86 스트링 명령어를 지원하는 옵션인듯)