- PumpkinOS는 x86, ARM 등 현대 아키텍처에서 실행되는 PalmOS 재구현체이며, PalmOS ROM 없이 m68K PalmOS 애플리케이션을 실행할 수 있음
- 기본 실행 앱은 Launcher이며, Preferences는 설정 옵션을 담을 예정이고 Command는 아직 실험적인 명령 셸로 제공됨
- 이번 릴리스에는 PalmOS의 PIM 앱 4종인 AddressBook, MemoPad, ToDoList, DateBook이 포함되며, PalmOS SDK에 배포됐던 소스 코드를 PumpkinOS에서 컴파일되도록 수정함
- AddressBook과 MemoPad의 레코드는 PalmOS 대응 앱과 호환될 것으로 보이나, word size와 endianness 차이 때문에 ToDoList와 DateBook 레코드는 호환되지 않음
- 전체 프로젝트는 아직 실험 단계이며, 일부 기능은 전혀 테스트되지 않았고 Emscripten 빌드도 소프트웨어 렌더링, 높은 CPU 사용량, 브라우저 잠김 같은 문제가 있을 수 있음
PumpkinOS의 목표와 범위
- PumpkinOS는 PalmOS를 현대 아키텍처에서 다시 구현한 프로젝트임
- 대상 아키텍처는 x86, ARM 등임
- 일반적인 PalmOS 에뮬레이터와 달리 PalmOS ROM이 필요 없음
- m68K PalmOS 애플리케이션을 실행할 수 있음
- PumpkinOS의 여러 측면을 다룬 글 모음은 WordPress PalmOS 카테고리에서 볼 수 있음
기본 애플리케이션과 현재 상태
- Launcher는 PumpkinOS가 시작될 때 처음 실행되는 앱임
- 다른 애플리케이션을 시작할 수 있는 패널을 보여줌
- Preferences는 장기적으로 PumpkinOS 설정 옵션을 담을 예정임
- Command는 명령 셸이며 아직 실험적임
포함된 PalmOS PIM 앱
- 이번 릴리스에는 PalmOS의 PIM 앱 4종이 포함됨
- AddressBook
- MemoPad
- ToDoList
- DateBook
- 이 앱들의 소스 코드는 하나 이상의 PalmOS SDK에 배포됐던 것이며, PumpkinOS에서 올바르게 컴파일되도록 수정됨
- 레코드 호환성은 앱별로 다름
- AddressBook과 MemoPad에서 만든 레코드는 PalmOS 대응 앱과 호환될 것으로 보임
- ToDoList와 DateBook에서 만든 레코드는 word size와 endianness 차이 때문에 호환되지 않음
- 테스트 범위는 제한적임
- 몇 개의 레코드를 만들고 편집할 수 있는 수준까지만 테스트됨
- 아직 일부 동작 이상이 있음
- 일부 기능은 전혀 테스트되지 않음
- 현재 목표는 PumpkinOS의 향후 모습을 미리 보여주는 데 있음
라이선스
- PumpkinOS는 GPL v3로 라이선스됨
license 디렉터리에는 PumpkinOS에서 사용하는 여러 구성 요소의 개별 라이선스 정보가 들어 있음
- 누락되었거나 잘못된 라이선스 정보가 있으면 알려 달라고 안내함
빌드 방법
- PumpkinOS는 소스에서 빌드해야 함
- IDE는 필요 없음
- 명령줄에서 빌드할 수 있음
-
Windows, Linux, WSL2
- 64비트 Windows에서는 MSYS2를 사용할 수 있음
- MINGW64 터미널에서 추가 패키지를 설치함
pacman -S gcc binutils make git
- 64비트 Linux 기반 OS에서는
gcc, binutils, make, git이 필요함
- Linux에서는 SDL2 개발 패키지도 설치해야 함
- Debian 계열에서는 다음 명령을 사용함
sudo apt install gcc binutils make git libsdl2-dev
- Windows 11과 최신 Windows 10에서는 WSL2에서도 빌드할 수 있음
- WSL2 터미널에서 Linux 빌드 지침을 따르면 됨
-
공통 빌드 절차
git clone https://github.com/migueletto/PumpkinOS.git
cd PumpkinOS/src
make
- 빌드가 성공하면 다음 결과물이 생성됨
- 루트 디렉터리의
pumpkin 실행 파일
bin 디렉터리의 동적 라이브러리들
vfs/app_install 디렉터리의 PRC 파일들
Emscripten 빌드와 웹 실행
- 실험적으로 Emscripten을 사용해 빌드할 수 있음
- Emscripten 설치 방법은 README 범위 밖임
cd PumpkinOS/src
make OSNAME=Emscripten
- 이 명령은
src/emscripten 폴더 안에 pumpkin.zip을 생성함
- 이 zip 파일에는 웹 서버에 PumpkinOS를 배포하는 데 필요한 파일이 들어 있음
- Linux의 표준
apache2 웹 서버를 사용하는 경우 예시 절차는 다음과 같음
/var/www/html/pumpkin 폴더를 만듦
- zip 파일을 해당 폴더에 풀어 넣음
- 로컬 서버에서
/pumpkin/pumpkin.html로 브라우저를 열면 PumpkinOS가 표시될 수 있음
- Emscripten 소스 디렉터리에서 Python 웹 서버를 실행하는 방법도 있음
cd PumpkinOS/src/emscripten
python3 -m http.server 8080
- 이 빌드는 아직 매우 실험적이며 몇 가지 제약이 있음
- OS, 브라우저, GPU 통합 상태에 따라 소프트웨어 렌더링으로 예기치 않게 fallback될 수 있음
- 높은 CPU 사용량과 브라우저 잠김이 발생할 수 있음
- 브라우저를 private mode로 실행하면 애플리케이션이 실행되지 않음
- localhost가 아닌 서버에서 HTTPS 대신 HTTP로 접근하면 로드되지 않음
실행, 설치, 디버깅
- 64비트 Windows에서는
pumpkin.bat을 실행함
- Linux 또는 WSL2에서는
pumpkin.sh를 실행함
- 실행하면 PumpkinOS가 새 창으로 열림
- 실행 시
vfs/app_install 안의 모든 PRC가 제거되고 vfs/app_storage 안의 폴더로 확장됨
- 현재 단계는 전반적으로 실험적이므로 여러 문제가 있을 수 있음
- 실행 성공 여부와 관계없이 루트 디렉터리에
pumpkin.log 파일이 생성됨
- 문제가 생기면 이 파일의 세 번째 열에
"E"로 표시된 줄을 확인함
- 질문과 로그 파일 전달을 받을 수 있다고 안내함
- PumpkinOS는 Drag & Drop을 지원함
- PalmOS PRC 파일을 창 위로 끌어다 놓으면 설치되고 Launcher에 표시됨
- PRC를
vfs/app_install 디렉터리에 직접 복사한 뒤 PumpkinOS를 다시 시작해도 됨
- 원하는 경우 Windows, Linux, WSL2에서
gdb로 디버깅할 수 있음
- Windows에서는
pumpkin.bat 마지막 줄을 다음처럼 바꿈
gdb.exe --args .\pumpkin.exe -d 1 -f pumpkin.log -s libscriptlua .\script\pumpkin.lua
- Linux와 WSL2에서는
pumpkin.sh 마지막 줄을 다음처럼 바꿈
gdb --args ./pumpkin -d 1 -f pumpkin.log -s libscriptlua ./script/pumpkin.lua