1 điểm bởi GN⁺ 2024-04-08 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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

    • Clone kho mã
    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

 
GN⁺ 2024-04-08
Ý 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

    • Tôi vẫn còn giữ PalmPilot gốc của mình trong một chiếc hộp trên gác mái. Bản thân sự tồn tại của nó đã là một bài học lớn trong đời
      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
    • Vài tháng trước tôi thấy một bài trên Reddit nói về việc ai đó tìm thấy Game Boy cũ của ông mình
    • Ở Computer History Museum còn có cả Dreamcast được trưng bày nữa, và điều đó còn khiến tôi khó chịu hơn
      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
    • Science Museum ở London có một phòng trưng bày tập hợp điện thoại, máy tính và máy chơi game console
      Đ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
    • Tôi vẫn còn giữ một chiếc Visor gắn mô-đun VisorPhone. Có thể xem nó là chiếc smartphone chỉ dùng cảm ứng đầu tiên, đi trước iPhone 5 năm :)
      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 đó

    • Nếu dùng trực tiếp Win32 API thì Windows vẫn hoạt động theo kiểu đó
      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
    • Tôi nghĩ Windows 16-bit hay classic Mac OS cũng tương tự như vậy
      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
    • Trên phần cứng hiện đại có RAM tính bằng gigabyte, kiểu hiện thực đó là chuyện quá dễ nếu so với 2MB của Palm Pilot III
      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à được
      Nế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
    • Ưu điểm của phần cứng hiện đại là không còn bị ràng buộc quá nhiều bởi bộ nhớ
      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ỏ
    • Tôi cực kỳ thích các game trên Palm. Game di động thời đó là đỉnh nhất, game hiện đại hoàn toàn không thể so sánh được
  • 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

  • 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 đã làm việc với Peter Spronck để tạo ra phần nội dung bổ sung cuối cùng và một số nhiệm vụ của Space Trader. Ví dụ như The Scarab
      Tôi nhớ thời đó quá
    • Tôi có hai chiếc Palm Vx trong gara. Tôi cũng cực kỳ thích trò đó
  • Đọ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 vẫn nhớ các ứng dụng lịch và danh bạ của Palm
      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ếu chạy toàn bộ bằng Wasm thì có thể chạy ứng dụng Palm ở bất cứ đâu
      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
    • Có thể dùng Graffiti
      https://play.google.com/store/apps/details?id=com.access_com...
    • Vì dùng SDL nên việc port có vẻ sẽ dễ
  • 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

    • Palm từng có dòng Treo
      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
    • Một trong những vấn đề lớn là Palm bị tách thành công ty phần mềm PalmSource và công ty phần cứng Palm One
      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
    • Tôi nghe nói nhà mạng cũng có một phần trách nhiệm. Ban đầu các nhà mạng thậm chí còn ngại phân phối dòng Treo nếu không áp đặt giới hạn lên những gì Handspring có thể làm với Treo
      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
    • Tôi đã dùng toàn bộ dòng smartphone Handspring/Palm: Visor + Visor Phone, Treo 270, Treo 600, Treo 650, và cuối cùng là Palm Pré
      Nó không phải iPhone, nhưng là một công cụ làm việc cực kỳ hiệu quả
    • Tôi đã bật cười khi thấy giấy phép GPL ở đây. Khó mà cho rằng có rủi ro thương mại hóa gì đáng kể, đúng không?
  • 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

    • Theo README thì nó chạy native trên ARM, nhưng có vẻ giống một chương trình hơn là một hệ điều hành
      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...
    • Sẽ tốt hơn nếu các hệ điều hành di động hiện đại đầu tư nhiều hơn vào tối ưu hóa và ổn định hóa
  • 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

    • Cloudpilot thật đáng kinh ngạc. Đây là một trong những PWA tinh xảo nhất mà tôi biết
      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

    • Nghe như người từng làm cùng chỗ với tôi vậy
      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?

    • Tôi nhớ thời lượng pin kéo dài hàng tuần, thiết kế ứng dụng đơn giản hơn, và các nút lên/xuống trang rất nhiều