- PumpkinOS là một bản tái triển khai của PalmOS chạy trên các kiến trúc hiện đại như x86, ARM và có thể chạy các ứng dụng PalmOS m68K mà không cần PalmOS ROM
- Ứng dụng chạy mặc định là Launcher; Preferences dự kiến sẽ chứa các tùy chọn cấu hình, còn Command hiện được cung cấp như một trình bao lệnh vẫn còn mang tính thử nghiệm
- Bản phát hành này bao gồm 4 ứng dụng PIM của PalmOS là AddressBook, MemoPad, ToDoList, DateBook; mã nguồn từng được phân phối trong PalmOS SDK đã được chỉnh sửa để biên dịch trên PumpkinOS
- Bản ghi của AddressBook và MemoPad có vẻ sẽ tương thích với các ứng dụng tương ứng trên PalmOS, nhưng bản ghi của ToDoList và DateBook không tương thích do khác biệt về word size và endianness
- Toàn bộ dự án hiện vẫn ở giai đoạn thử nghiệm; một số tính năng chưa được kiểm thử, và bản dựng Emscripten cũng có thể gặp các vấn đề như kết xuất phần mềm, mức sử dụng CPU cao hoặc treo trình duyệt
Mục tiêu và phạm vi của PumpkinOS
- PumpkinOS là một dự án tái triển khai PalmOS trên các kiến trúc hiện đại
- Kiến trúc mục tiêu gồm x86, ARM, v.v.
- Khác với các trình giả lập PalmOS thông thường, không cần PalmOS ROM
- Có thể chạy các ứng dụng PalmOS m68K
- Có thể xem loạt bài viết về nhiều khía cạnh của PumpkinOS tại WordPress PalmOS category
Ứng dụng mặc định và tình trạng hiện tại
- Launcher là ứng dụng đầu tiên chạy khi PumpkinOS khởi động
- Hiển thị bảng điều khiển để khởi chạy các ứng dụng khác
- Preferences về lâu dài sẽ chứa các tùy chọn cấu hình của PumpkinOS
- Command là trình bao lệnh và hiện vẫn mang tính thử nghiệm
Các ứng dụng PIM của PalmOS được kèm theo
- Bản phát hành này bao gồm 4 ứng dụng PIM của PalmOS
- AddressBook
- MemoPad
- ToDoList
- DateBook
- Mã nguồn của các ứng dụng này từng được phân phối trong một hoặc nhiều PalmOS SDK và đã được chỉnh sửa để biên dịch đúng trên PumpkinOS
- Mức độ tương thích bản ghi khác nhau tùy ứng dụng
- Bản ghi tạo trong AddressBook và MemoPad có vẻ sẽ tương thích với các ứng dụng tương ứng trên PalmOS
- Bản ghi tạo trong ToDoList và DateBook không tương thích do khác biệt về word size và endianness
- Phạm vi kiểm thử còn hạn chế
- Mới chỉ được thử tới mức có thể tạo và chỉnh sửa một vài bản ghi
- Vẫn còn một số hành vi bất thường
- Một số tính năng chưa được kiểm thử lần nào
- Mục tiêu hiện tại là cho thấy trước PumpkinOS có thể trông như thế nào trong tương lai
Giấy phép
- PumpkinOS được cấp phép theo GPL v3
- Thư mục
license chứa thông tin giấy phép riêng của nhiều thành phần được sử dụng trong PumpkinOS
- Dự án đề nghị thông báo nếu có thông tin giấy phép bị thiếu hoặc không chính xác
Cách build
- PumpkinOS cần được build từ mã nguồn
- Không cần IDE
- Có thể build từ dòng lệnh
-
Windows, Linux, WSL2
- Trên Windows 64-bit có thể dùng MSYS2
- Cài thêm các gói trong terminal MINGW64
pacman -S gcc binutils make git
- Trên các hệ điều hành Linux 64-bit cần
gcc, binutils, make, git
- Trên Linux cũng cần cài gói phát triển SDL2
- Với các bản phân phối họ Debian, dùng lệnh sau
sudo apt install gcc binutils make git libsdl2-dev
- Trên Windows 11 và các bản Windows 10 mới, cũng có thể build trong WSL2
- Chỉ cần làm theo hướng dẫn build cho Linux trong terminal WSL2
-
Quy trình build chung
git clone https://github.com/migueletto/PumpkinOS.git
- Di chuyển vào thư mục mã nguồn rồi chạy
make
cd PumpkinOS/src
make
- Nếu build thành công sẽ tạo ra các đầu ra sau
- Tệp thực thi
pumpkin trong thư mục gốc
- Các thư viện động trong thư mục
bin
- Các tệp PRC trong thư mục
vfs/app_install
Bản dựng Emscripten và chạy trên web
- Có thể build bằng Emscripten theo cách thử nghiệm
- Cách cài đặt Emscripten nằm ngoài phạm vi của README
cd PumpkinOS/src
make OSNAME=Emscripten
- Lệnh này tạo ra
pumpkin.zip trong thư mục src/emscripten
- Tệp zip này chứa các tệp cần thiết để triển khai PumpkinOS lên máy chủ web
- Nếu dùng máy chủ web chuẩn
apache2 trên Linux thì quy trình ví dụ như sau
- Tạo thư mục
/var/www/html/pumpkin
- Giải nén tệp zip vào thư mục đó
- Mở trình duyệt tại
/pumpkin/pumpkin.html trên máy chủ cục bộ thì PumpkinOS có thể được hiển thị
- Cũng có thể chạy máy chủ web Python từ thư mục mã nguồn Emscripten
cd PumpkinOS/src/emscripten
python3 -m http.server 8080
- Bản dựng này hiện vẫn rất thử nghiệm và có một số hạn chế
- Tùy OS, trình duyệt và trạng thái tích hợp GPU, nó có thể bất ngờ fallback sang kết xuất phần mềm
- Có thể xảy ra tình trạng dùng CPU cao và treo trình duyệt
- Nếu chạy trình duyệt ở private mode thì ứng dụng sẽ không chạy
- Nếu truy cập từ máy chủ không phải localhost bằng HTTP thay vì HTTPS thì sẽ không tải được
Chạy, cài đặt, gỡ lỗi
- Trên Windows 64-bit, chạy
pumpkin.bat
- Trên Linux hoặc WSL2, chạy
pumpkin.sh
- Khi chạy, PumpkinOS sẽ mở trong một cửa sổ mới
- Khi khởi chạy, mọi PRC trong
vfs/app_install sẽ bị xóa và được bung ra thành các thư mục trong vfs/app_storage
- Ở giai đoạn hiện tại, toàn bộ hệ thống nhìn chung vẫn mang tính thử nghiệm nên có thể có nhiều vấn đề
- Dù chạy thành công hay không, tệp
pumpkin.log sẽ được tạo trong thư mục gốc
- Nếu có sự cố, hãy kiểm tra các dòng có cột thứ ba là
"E" trong tệp này
- Dự án cho biết có thể nhận câu hỏi và tệp log
- PumpkinOS hỗ trợ Drag & Drop
- Kéo và thả tệp PRC của PalmOS lên cửa sổ để cài đặt và hiển thị trong Launcher
- Cũng có thể sao chép trực tiếp PRC vào thư mục
vfs/app_install rồi khởi động lại PumpkinOS
- Nếu muốn, có thể gỡ lỗi bằng
gdb trên Windows, Linux và WSL2
- Trên Windows, thay dòng cuối của
pumpkin.bat thành như sau
gdb.exe --args .\\pumpkin.exe -d 1 -f pumpkin.log -s libscriptlua .\\script\\pumpkin.lua
- Trên Linux và WSL2, thay dòng cuối của
pumpkin.sh thành như sau
gdb --args ./pumpkin -d 1 -f pumpkin.log -s libscriptlua ./script/pumpkin.lua
1 bình luận
Ý kiến trên Hacker News
Tôi đã ghé Computer History Museum ở Mountain View, và khi nhìn thấy Palm Pilot trong tủ trưng bày, tôi chợt cảm thấy mình già đi hẳn
Việc trưng bày một món đồ từng là phần quan trọng trong cuộc sống của tôi chỉ khoảng 30 năm trước như thể nó được khai quật từ tàn tích của một nền văn minh cổ đại lẽ ra phải là phạm pháp. Thật quá bất công
Hồi đó tôi xin sếp mua cho, và ông ấy thực sự đã mua, nhưng rồi nói: “Bây giờ cậu có dùng thứ gì để sắp xếp cuộc sống và dự án của mình không? Nếu không dùng gì cả thì có lẽ PalmPilot cũng sẽ không giúp được đâu”
Ông ấy nói hoàn toàn đúng
Trong đầu tôi vẫn còn một góc như mang chấn thương chưa được giải quyết, vẫn chờ ngày Dreamcast hồi sinh mạnh mẽ như hồi tuổi teen
Đi cùng bạn đời và chỉ từng món thiết bị mà cả hai đã từng sở hữu là một niềm vui lớn, và thật sự rất thích khi được nhìn lại chúng
Nó to, cồng kềnh và khá bất tiện, nhưng trải nghiệm tích hợp hoàn toàn với Palm Desktop thì cực kỳ mượt. Về sau tôi dùng jPilot trên Linux
Dự án PumpkinOS thật sự rất đáng kinh ngạc. Tôi không thể tưởng tượng nổi đã cần bao nhiêu công sức để làm cho nó tương thích với mọi lời gọi hệ thống mà các ứng dụng Palm thông thường mong đợi
Tôi còn nhớ Palm từng làm vài thứ khá kỳ lạ với cách xử lý bộ nhớ. Dữ liệu chỉ cần hơi lớn một chút là phải đặt vào những khối bộ nhớ đặc biệt mà hệ điều hành có thể tự ý di chuyển, và để giữ cho nó ổn định trong lúc truy cập thì phải khóa handle của khối đó lại
Việc hiện thực những thứ đó trong PumpkinOS hẳn vừa khó vừa thú vị. Trước đây tôi từng làm vài trò chơi nhỏ cho Palm OS, và hồi đó rất háo hức chờ phiên bản OS tiếp theo, thứ sẽ cho phép viết chương trình bằng Palm OS Development Suite mới ra khi ấy
Đây cũng là hệ điều hành cuối cùng có vòng lặp sự kiện trung tâm trong ứng dụng. Bây giờ các framework UI làm hết mọi thứ rồi. Hiện tại thì dễ hơn thật, nhưng tôi vẫn nhớ cách đó
Mọi GUI toolkit từng được tạo ra rốt cuộc đều có cấu trúc như vậy, nhưng trong hầu hết toolkit hiện đại, hàng đợi và vòng lặp này bị giấu bên trong, nên bạn chỉ nhận ra sự tồn tại của nó khi nhìn stack trong debugger hoặc lúc có gì đó bị crash
Trên các hệ thống không có MMU, để làm đa nhiệm thì gần như bắt buộc phải chống phân mảnh heap ngay khi đang chạy
Chỉ cần dùng
malloc, không di chuyển bộ nhớ, rồi biến thao tác khóa và mở khóa các khối đó thành no-op là đượcNếu có lời gọi OS để kiểm tra trạng thái khóa thì chỉ cần lưu ở đâu đó, mà việc đó cũng không khó. Hiện thực y hệt cách ngày xưa không hẳn là khó, chỉ là làm phía sử dụng phức tạp hơn thôi
Bạn có thể hiện thực các API phức tạp bằng những vùng nhớ lớn tùy ý, và mức như 128MB RAM thì theo tiêu chuẩn bây giờ là rất nhỏ
Một dự án đáng xem khác là rePalm. Đây là dự án chạy PalmOS trên vi điều khiển ARM như RP2040: http://dmitry.gr/?r=05.Projects&proj=27.%20rePalm
PumpkinOS / 3 năm trước | 52 bình luận
https://news.ycombinator.com/item?id=28466858
Thảo luận liên quan đến rePalm:
PalmOS on Raspberry Pi, bài đăng ngày 10 tháng 9 năm 2021 bởi Tijdreiziger, 169 điểm | 86 bình luận
https://news.ycombinator.com/item?id=28487817
Tôi đã thấy háo hức ngay khi nghĩ đến việc lại mất hàng giờ cho Space Trader
Tôi từng có một chiếc Palm Vx hồi cấp hai, và có những ký ức rất đẹp về việc chơi trò đó dưới gầm bàn trong giờ học
Tôi nhớ thời đó quá
Đọc tiêu đề này mà tim tôi đập nhanh hẳn. Tôi muốn nó chạy được trên Android để “thay thế” chiếc điện thoại chính của mình và quay về thời kỳ tốt đẹp hơn
Tôi đã dùng Palm cho đến tận Centro, và từ đó đến nay vẫn chưa tìm được ứng dụng danh bạ/lịch nào khiến tôi hài lòng bằng phiên bản của Palm. Chúng thì hoặc quá đơn giản và thiếu các tính năng cơ bản, hoặc UI thì phức tạp một cách vô nghĩa
Nó sẽ giống như việc người ta nghiêm túc chạy ứng dụng DOS ngay bên trong trang web
https://play.google.com/store/apps/details?id=com.access_com...
Trước đây tôi đã đầu tư vì nghĩ rằng cuối cùng Palm sẽ tạo ra một thứ kiểu như iPhone
Đáng tiếc là Palm đã không làm được điều đó, và khi Apple làm được thì Palm coi như chấm hết
Cũng có thể nói chính thành công ban đầu và hệ sinh thái công cụ shareware/freeware khổng lồ đã khiến Palm suy yếu
Palm OS là một hệ điều hành đơn luồng, thường trú trong RAM, không có bộ nhớ ảo nên đã bộc lộ tuổi tác, vì vậy cần phải thử điều gì đó mới, nhưng làm vậy thì không thể tránh khỏi việc xa lánh những người hâm mộ lâu năm vốn dùng thư viện phần mềm cũ
Họ rốt cuộc không bao giờ giải được bài toán con gà và quả trứng đó, và việc tách OS với phần cứng, spin-off như Handspring rồi lại sáp nhập cũng không giúp ích. Cobalt OS không bao giờ được đưa lên thiết bị thực tế, còn Pre là một khởi đầu mới đầy tham vọng, nhưng dù có ra sớm hơn thì có lẽ cũng khó cạnh tranh với iPhone
PalmSource thiết kế một hệ điều hành dựa trên Linux rồi bị mua lại và biến mất, còn Palm One đổi tên trở lại thành Palm rồi tạo ra những smartphone đời đầu dựa trên PalmOS
Nhưng đến lúc đó PalmOS đã khá lỗi thời, ở trong tình trạng chạy ứng dụng 16-bit trên một hệ điều hành 32-bit
Sau đó Palm tạo ra webOS, nhưng lại có những quyết định phần cứng kỳ quặc và không thể cạnh tranh với iPhone và Android. Dù vậy, họ vẫn có thể xem là đối thủ hơn so với Blackberry hay Nokia, những hãng đã thất bại trong việc chuyển sang màn hình cảm ứng điện dung
Vấn đề của Palm là đã quá muộn, nhưng ngay cả nếu không bị chia tách và làm ra hậu duệ của PalmOS thì có lẽ họ vẫn sẽ lỡ làn sóng smartphone cảm ứng điện dung
Apple có iPod, và quan trọng hơn là có khách hàng. Apple có thể đem những khách hàng đó tới cho nhà mạng, nên họ có thể ra điều kiện nhiều hơn
Phần tôi đang nói trong https://www.youtube.com/watch?v=b9_Vh9h3Ohw là vào khoảng mốc 20 phút
Nó không phải iPhone, nhưng là một công cụ làm việc cực kỳ hiệu quả
Sẽ cần những gì để đưa thứ này lên phần cứng điện thoại hiện đại, hoặc chí ít là phần cứng điện thoại đời trước?
Có vẻ nó có thể làm được hầu hết những gì chúng ta muốn với sự đơn giản khủng khiếp và thời lượng pin vô lý. Có lẽ thậm chí còn có thể khiến PinePhone trông như Rolls Royce
Nếu viết lại mã GUI theo framework của từng nền tảng thì có lẽ có thể cập nhật để nó chạy trên Android hoặc iOS, nhưng biến nó thành một OS có thể boot được thì có vẻ khó hơn
Tác giả năm ngoái đã viết bài về việc biến nó thành một OS có thể boot bằng cách dùng kernel x86 tối thiểu và QEMU, nên có lẽ cũng tái sử dụng được cho thiết bị ARM [1]
https://pmig96.wordpress.com/2023/02/24/pumpkinos-busybox-an...
Một thứ đáng xem kèm theo là trình giả lập Palm chạy trong trình duyệt CloudpilotEmu
https://cloudpilot-emu.github.io/
Tôi đã thực sự rất vui khi cài nó và có thể chơi lại Vexed
Tôi chưa từng nghe đến Vexed, nhưng với tôi thì việc Space Trader quay trở lại mới thực sự khiến tôi phấn khích
Tôi là khách hàng Sprint từ khi kỷ nguyên điện thoại Palm bắt đầu
Cho đến 2 năm trước tôi vẫn dùng chiếc Treo màu làm điện thoại, và bàn phím vật lý của nó thật sự rất dễ gõ. Lý do là ngón tay tôi hơi biến dạng nên màn hình cảm ứng khá khó dùng
Việc sáp nhập với T-Mobile đã chặn phần liên lạc không dây, và thật đáng tiếc khi thấy nó biến mất
Khoảng 6 tháng sau khi iPhone ra mắt và điện thoại Android cũng xuất hiện, người ta từng gọi Pre là “kẻ hủy diệt iPhone”
Sau khi cho người đầu tiên trong bộ phận dùng iPhone xem những tính năng thật ra cũng chẳng có gì ghê gớm của Pre, tôi đã nói rằng hàng triệu người dùng Palm sẽ cho tôi thấy
Và họ thực sự đã cho thấy điều đó
Thật tốt khi sự tồn tại của dự án này kéo dài tuổi thọ cho những phần mềm vốn sẽ không bao giờ còn cơ hội chạy lại
Nhưng tôi tự hỏi điều này là vì nỗi hoài niệm, hay vì nhu cầu hoặc mong muốn thực sự đối với phần mềm đó
Có rất nhiều lời tiếc nuối về Palm, Blackberry, Psion, nhưng liệu ngoài những mục đích chuyên biệt ra, người ta có thực sự muốn quay lại thời đó không? Tôi biết IMAX cần một trình giả lập Palm để chạy một phần trong stack của họ
Trong lúc tìm kiếm một chiếc Psion 5 “hiện đại”, tôi thấy một phần đội ngũ liên quan đã tạo ra Gemini PDA dựa trên Android. Một số reviewer rõ ràng xem đây là điểm trừ
Nếu có một hệ điều hành EPOC mới hỗ trợ kết nối hiện đại thì với họ điều đó chắc chắn trông như một thành công, nhưng nghĩ kỹ thì có lẽ tôi vẫn sẽ chủ yếu chạy Linux trên đó. Tất nhiên là nếu có thể tìm được hàng tồn mới với bàn phím bố cục Anh
Nhưng liệu chúng ta có thật sự muốn điều đó không? Trong hơn 20 năm qua đã có rất nhiều tiến bộ, và nếu đưa PalmOS cho hầu hết mọi người dùng hằng ngày thay vì Android hay iOS, có lẽ họ sẽ thấy bức bối và trả lại chỉ trong vòng một tuần
Tính năng quyết định nào có thể khiến nhận định này sai đi?