Psion netBook Pro Linux -- recovered images Assembled 2026-09-27. ============================================================= FOUND AND VERIFIED (4 files) ============================================================= jlime-xfce-image-2012.3-netbookpro-20120311.rootfs.tar.bz2 88,409,659 B jLime 2012.3, full XFCE desktop. 28,423 files. THE BEST ONE: newest and most capable netBook Pro Linux found, seven years newer than the Psion beta. Live at repository.hpcfactor.com (HPC:Factor mirrored the whole jLime archive after jlime.com died). Also in Wayback. http://repository.hpcfactor.com/public/jlime/releases/other/mobilepro/ nBkProOs.img_cf 3,659,808 B Kernel / CF boot image. Self-identifies as "NETBOOKPRO Linux26". Rename to nBkProOs.img at the CF card root; the bootloader looks for that exact name. Ex linuxtogo.org/~florian/ (dead). Wayback 20081217075335. gpe-fs-cf.tar.bz2 14,227,676 B GPE root filesystem for CF card. Only ever archived under its index.php?download= URL form, not its direct path, which is why it first appears to be missing. gpe-image-3.5.4.1-netbook-pro.rootfs.jffs2 15,450,112 B GPE rootfs as JFFS2, for internal flash. Verified JFFS2 magic. Wayback 20081217075350. ============================================================= NOT FOUND: the Psion LX beta ============================================================= soho-image-netbook-pro-20050104074212.rootfs.tar.bz2 Unreleased official Psion build, 2005-01-04. An OpenEmbedded "soho-image" for MACHINE=netbook-pro. Distribution history (corrected 2026-09-29; this said "posted by bobbyshane, 2009-05-25", which was wrong): 2007-11-07 Acid Snoop posts it to RapidShare on HPC:Factor thread 10543 (page start=196), with nBkProOs.img: "Marc gave me the OK to upload the PsionLX files" http://rapidshare.com/files/67872227/soho-image-netbook-pro-20050104074212.rootfs.tar.bz2 http://rapidshare.com/files/68105196/nBkProOs.img 2007-11-10 Acid Snoop uploads netbook-linux-sources.tgz plus a password-protected folder of Psion developer sources 2009-05-25 bobbyshane's install guide (start=286) relinks the 2007 RapidShare URL -- the source of the old credit 2010-01-20 scops re-uploads a package to ul.to/p5yvr2 (start=331): soho-image, nBkProOs.img, netbook-linux-sources.tgz, linux-2.6.9-pre1-bk18-nbp1.patch, netbook-booting.txt, mk-nBkProOsImg.c 2015-03-31 RapidShare closes It was never the only copy: see the list of holders below. Searched without success: - Wayback: exact URL, prefix on the rapidshare file id, and domain-scoped sweeps of jlime.com, hpcfactor.com, repository.hpcfactor.com, linuxtogo.org, psionlinux.blogspot.com - HPC:Factor public repository, fully enumerated, including its complete jLime mirror (releases, repository, development) - GitHub: code search, repo search, all four tworaz netBook Pro repos (linux, boost-bootcode, boost-img, meta-netbookpro), the Psion-ROM mirrors, and user fss-hacks - archive.org item and full-text search - OpenPsion (linux-7110) SourceForge mailing list - Archived blog comment feed for the post that carried the link Note: a Wayback query of the form url=*/filename* returns empty for files that ARE archived. It is not a valid match type. Any negative result from that form means nothing. People who have or had a copy, as of the forum record: w_m0zart ("Marc") had an LX machine on loan from Pulster and the original LX sources, and passed the image to Acid Snoop, hpcfactor 2007-10-30 and 2007-11-06 Acid Snoop uploaded the image 2007-11-07; still held "the binary of the working boost Image and a userspace archive of the last available build", hpcfactor 2019-02-14 (thread 15975) scops re-uploaded it to ul.to, hpcfactor 2010-01-20 psifi had Psion LX RUNNING on a netBook Pro, hpcfactor 2017-06-24. He has two LX builds (thread 10543 start=361, 2011-12-30): - on a 256 MB / 64 MB LX development board, in NAND: kernel 2.6.9-rc1-bk18-nb1 "Build 15 nov 02:10:25 GMT 2004", system stamp 2004-11-15 02:13 - on a 1 GB CF card: kernel "Build 25 mar 18:13:14 CET 2005" (the community nBkProOs.img_cf), system stamp 2005-01-04 02:31 (the soho-image) His earlier "build 2.13 dated nov 2004" and "2.31 2005" (start=346, 2010-10-04) are those stamp TIMES, 02:13 and 02:31, not version numbers. AcidSnoop "I can Upload the Boost File and the PsionLX filesystem if anyone is interested", hpcfactor 2019 fss-hacks "in the process of creating a repository for all Netbook Pro Linux files", hpcfactor 2026-07-25 (two months ago) Best thread to ask in: "Psion Lx on Psion Netbook Pro" https://www.hpcfactor.com/forums/forums/thread-view.asp?tid=18334 ============================================================= Windows CE 4.2 restore image, live 2026-09-27, 19,505,892 B http://www.vigay.com/psion/files/nbpswfeb18english04218.zip Modern kernel + bootloader source for this machine: https://github.com/tworaz/linux https://github.com/tworaz/boost-bootcode https://github.com/tworaz/meta-netbookpro ============================================================= bc640360e58d858b2d260450e20621adc93cb51e0fcccadaf2a97f415099bd1b nBkProOs.img_cf 532e322fdd9a1275e953818ff575a36a1c0249fea526d9c53315f07b390f1866 gpe-fs-cf.tar.bz2 ce14633797a2d4562ecdfb07db19974b8417df43bc96bed9595e43ac3f9060fc jlime-xfce-image-2012.3-netbookpro-20120311.rootfs.tar.bz2 8094d741422036c13801579aa69e477ed8bca61827e8edcc0a770dda29254738 gpe-image-3.5.4.1-netbook-pro.rootfs.jffs2 ============================================================= SOURCE TARBALLS FOR THE PSION-PATCHED APPLICATIONS (2026-09-28) ============================================================= Psion pinned an exact upstream version for each application and then applied their own patches. gpe.handhelds.org, the mirror their recipes name, is gone and was never crawled; the same tree at gpe.linuxtogo.org was, so the exact tarballs are still served by the Internet Archive. One bulk CDX listing of http://gpe.linuxtogo.org/download/source/* is cached in workspace/build/.wayback/index.json (1,000 files) and every lookup after that is local -- per-file queries get rate-limited into an HTML "Temporarily Offline" page that parses as "not archived". Recovered this way, all patching cleanly: gpe-conf-0.1.21 gpe-contacts-0.32 gpe-calendar-0.58 gpe-filemanager-0.21 gpe-gallery-0.95 gpe-login-0.72 gpe-shield-0.7 gpe-wlancfg-0.2.7 gpe-todo-0.49 gpe-edit-0.28 gpe-sketchbook-0.2.8 gpe-beam-0.2.6 gpe-bluetooth-0.37 gpe-dm-0.39 gpe-soundserver-0.4-1 gpe-bootsplash-1.11 gpe-mixer-0.40 gpe-package-0.2 ipaq-sleep-0.8 libeventdb-0.15 libgtkstylus-0.3 detect-stylus-0.13 minimix-0.6 Not in the GPE archive; fetched from their own upstreams: matchbox-panel-0.8.1.tar.bz2 downloads.yoctoproject.org mb-applet-volume-0.1.tar.bz2 downloads.yoctoproject.org galculator-1.2.3.tar.gz SourceForge Still missing, after checking the archive, SourceForge, the Debian archive and snapshot.debian.org: gkdial-1.8.1.tar.gz PsionLX's dialler. Its SourceForge project now carries only the successor (gtk-ppp 3.x); the Debian archive has 1.5.15, a GTK1 release from a different lineage that Psion's three patches do not apply to; gkdial.sourceforge.net's downloads directory was never crawled. SUBSTITUTED: gkdial 1.8.0, the nearest surviving release, takes all three of Psion's patches and is built and installed (workspace/build/job13.sh). xtscal-0.6.2.tar.bz2 Psion patched it to keep touchscreen calibration in the netBook Pro's NVRAM. Not archived under any of the mirror paths their recipe or the GPE tree use. ============================================================= BINARY PACKAGES ADDED FROM DEBIAN (2026-09-28) ============================================================= Debian sarge's and etch's "arm" architecture is OABI, so these run on the device unmodified. Fetched from archive.debian.org. Installed into the image: ppp_2.4.3-20050321+2sarge1_arm pppd and chat, which the rootfs had no copy of at all, although Psion ship a full /etc/ppp libpam0g, libpam-modules, libpam-runtime 0.76-22 pppd links libpam libpcap0.7_0.7.2-7 pppd links libpcap Unpacked into the build chroot only, never shipped: libopenobex-1.0-0-dev_1.0.0-rel-3 headers for gpe-beam/gpe-bluetooth libglade2-dev_2.4.2-2 headers for gpe-bluetooth libxml2-dev_2.6.16-7sarge1 headers for gpe-contacts libexpat1_1.95.8-3.4+etch3 perl XML::Parser needs it libxml-parser-perl_2.34-4.2 (etch) intltool needs it; sarge's XS module is built for perl 5.8.4 and the chroot runs 5.8.8 intltool_0.33-1 galculator's AC_PROG_INTLTOOL flex_* gpe-wlancfg links -lfl /lib/modules -- PSION'S OWN, a symlink; do not turn it into a directory It points at /initrd/lib/modules, and in the image that looks dangling: /initrd is an empty mount point and nothing in fstab fills it. It is not dangling. /initrd is populated at run time from the boot image, and the kernel's own module tree lives there, so this symlink is how the system reaches every driver the kernel shipped. Replacing it with a real directory -- which was done here once, meaning well -- cuts all of them off and leaves only whatever was copied in. What that looks like on hardware is a PCMCIA card that is detected and then never bound: "no driver loaded", with the driver still listed as available in the PC/CF Cards applet. That applet is not evidence either way; it builds its list by running `grep device /etc/pcmcia/config`, so it names all 39 drivers in Psion's 2005 database whether or not any is installed. Psion never packaged these modules. pcmcia-cs_3.2.8.oe installs cardmgr, cardctl and /etc/pcmcia only -- FILES_${PN} = "${sbindir} ${sysconfdir}" -- and psion-kernel_cvs.oe is a headers-only recipe for 2.4.26 with PACKAGES = "" and a no-op do_compile. The drivers come with the kernel. /lib/modules.psion-extra/ -- ADDED, not Psion's layout The eight modules for 2.6.9-rc1-bk18-nb1 that had been put at /lib/modules (hostap and its three crypt modules, hostap_cs, and three netfilter ones), kept here rather than deleted when the symlink was restored, in case the initrd does not carry all of them. Nothing loads from this path. /usr/share/gpe/overrides/mozilla-firefox.desktop -- RECONSTRUCTED Psion's own mozilla-firefox.desktop says Name=Firefox Browser, which is too long for a 64 px dock button. The browser it replaces here, gpe-mini-browser, was Name=Web, and that is what the dock showed. This override supplies that name; Psion's file is left exactly as they wrote it. Both gpe-buttonbox and gpe-appmgr read /usr/share/gpe/overrides ahead of /usr/share/applications, so the two agree. Same reasoning as galculator.desktop above, and the same mechanism. /usr/share/gpe/overrides/ -- RECONSTRUCTED, and the artwork in it is LOST gpe-appmgr's find_icon() searches this directory before /usr/share/pixmaps and /usr/share/icons, and its scan of /usr/share/applications prefers a desktop file of the same name found here. So this one directory overrode both the icons and the names on the PROGRAMS screen, and Psion plainly shipped one: three of their patches (galculator, gpe-contacts, gpe-todo) load /usr/share/gpe/overrides/.png for the window icon. No recipe in oe-netbook installs it. It is absent from their shipped JFFS2 rootfs, from netbook-linux-sources.tgz (kernel sources only), and the upstream icons it would have replaced are byte-identical across gpe-calculator 0.2, gpe-sketchbook 0.2.6 and 0.2.8 -- so the blue Calculator and Sketch Pad icons in the Pulster photograph came from this lost set and exist nowhere that survives. galculator.desktop here is reconstructed: Psion's own patch sets the window title to "Calculator" and loads calculator.png, and the photograph captions it "Calculator", while their galculator recipe leaves Name=Galculator in /usr/share/applications. That file is kept as Psion left it; this override supplies the name the photograph shows. calculator.png, contacts.png and to_do_list.png here are STAND-INS copied from the matching upstream icons so the three patched apps do not die on a missing file. They are not Psion's artwork and do not match the photograph. /usr/bin/sol, /usr/share/applications/sol.desktop -- PSION'S OWN Psion did ship solitaire: gnome-games_2.6.2.oe declares a gnome-games-sol package (${bindir}/sol, sol.desktop, aisleriot.schemas, ${datadir}/sol-games) and a libgdkcardimage split whose -data package is ${datadir}/pixmaps/cards. An earlier pass here installed gtksolitaire instead, which is a different program that also builds a binary called sol -- so an audit by filename passed it. That is now replaced by AisleRiot, linked from the ARM objects Psion compiled in November 2004 with their psionise and short-name patches already applied. The card artwork is the libgdkcardimage-data set. /etc/gconf/gconf.xml.defaults -- GENERATED from Psion's schemas Built by scripts/mkgconf.py from the .schemas files Psion shipped, which is the work gconftool-2 --install-schemas does when the image is made. Sources: their aisleriot.schemas (gnome-games 2.6.2), gkdial.schemas, grdesktop.schemas, and libgnome 2.6.1.1's desktop_gnome_* set. /system/gstreamer/0.8/default is hand-written rather than generated: gst-plugins ships its schema in a package Debian never built for arm. The values name elements that are present in the image -- osssink (the device uses OSS; 99psion-session chowns /dev/dsp and /dev/mixer to lx), ximagesink, osssrc, v4lsrc, goom. /usr/lib/gstreamer-0.8/* -- SUBSTITUTE, Debian arm 0.8.12 Psion built gst-plugins 0.8.3 (recipe in gstreamer/, DEPENDS on libmad, libogg, tremor, libvorbis, libid3tag, libmikmod, gnome-vfs, esound-gpe). Their binaries do not survive. The image's GStreamer core is 0.8.12, so the Debian arm 0.8.12 plugins are used, which is the same upstream series the recipe pins the ABI to. 137 plugins, against the 19 core ones the image had before, which is why Totem had no pipeline to build. /usr/bin/balsa -- PSION'S OWN SOURCE, rebuilt balsa 2.2.2, the version balsa_2.2.2.oe names, with their netbook-20041110.patch (86 files) and printing-fonts.patch, configured --with-ssl --enable-touch-ui as the recipe does, and their email.png put in as images/balsa_icon.png the way do_compile_prepend does. The tarball is gone from GNOME's archive (which now keeps only balsa 1.x) and Debian only ever packaged 2.2.6. It survives in the Wayback Machine, captured from balsa.gnome.org on 25 August 2004. Two departures from the recipe, both forced. It depends on gtkhtml-3.0, and every Debian arm build of GtkHTML 3.0 comes from a cairo-era GTK, which this device predates -- GtkHTML 3.2.5 is used instead, whose only unmet needs were gnome-print 2.8.2 and gail 1.8.2, both pre-cairo, and all three verify clean against the image. And libbalsa/mailbox_imap.c uses uint32_t while including neither stdint.h nor inttypes.h; it is the only file in the tree that does, and it got the type transitively from whatever headers their 2004 toolchain pulled in. What was here before was Debian's balsa 2.2.6: none of the 21 netBook patches, no touch UI, Debian's icon, and unrunnable on this device. ============================================================= ADDED BY THE INVENTORY AUDIT, 2026-09-30 ============================================================= A full sweep of everything held locally against everything on the card. Method and complete results in docs/08-INVENTORY-AUDIT.md. /usr/share/applications/gaby.desktop -- PSION'S OWN, never installed /usr/share/applications/gnome-cups-manager.desktop -- PSION'S OWN, never installed Both binaries were already on the card and Psion ship a .desktop for each in oe-netbook (gaby/gaby.desktop, gnome-cups-manager/files/). Neither file had ever been installed, so neither application appeared in any launcher. Printer.png was even present; only the file pointing at it was missing. Installed verbatim. gnome-cups-manager is Categories=SystemSettings, so it belongs to Control Panel, not the PROGRAMS screen. gaby is not in the as-photographed tree: the Pulster photograph shows 21 applications and no database among them. /usr/share/gpe/overrides/gaby.desktop -- RECONSTRUCTED Name=Data, the EPOC name for the personal database, consistent with Word, Sheet and Jotter. Psion's file asks for gnome-gaby.png, which exists in nothing held; this points at edit-vcard.png, which does. That icon is a STAND-IN, not Psion artwork -- same status as calculator.png, contacts.png and to_do_list.png above. /usr/share/applications/gpe-terminal.desktop -- PSION'S OWN, restored verbatim The copy on the card was Psion's file minus its last two keys, SingleInstance=false and StartupNotify=false. Terminal is in the photograph, so this one is visible. /usr/bin/fc-cache, /usr/bin/fc-list, /usr/bin/fc-match -- ex gpe-image-3.5.4.1 On no card tree before. Without fc-cache the device can never build a fontconfig cache, which is the underlying reason generic "Sans" resolved unpredictably and had to be worked around by pinning Bitstream Vera in /etc/gtk-2.0/gtkrc. Every library they need was already present. The pin is left in place because it is what has been tested, but the cause can now be fixed properly. parked/orphaned-no-launcher/AbiWord-2.4 -- REMOVED, 4.2 MB parked/orphaned-no-launcher/mozilla-minimo/ -- REMOVED, 10 MB AbiWord-2.4 is stock AbiWord whose data tree /usr/share/AbiSuite-2.4 was parked when Psion's 2.0.11 replaced it; the binary stayed behind and would have found no glade dialogs, no templates and no string catalogue if it were ever launched. mozilla-minimo is the whole Minimo runtime, whose launcher and .desktop were parked when Firefox replaced it -- nothing on the card references the path, and Firefox carries its own libnspr4.so and libnss3.so. Both reversible from parked/. /usr/bin/abiword -- REBUILT, this time with a spellchecker The previous build configured --disable-pspell --enable-enchant=no, which turns off BOTH of AbiWord's spellcheck backends. It then fell back to its internal ISpellChecker, which loads .hash dictionaries through /usr/share/AbiSuite-2.0/dictionary/ispell_dictionary_list.xml -- a directory that does not exist here. Word therefore shipped with no spellchecker at all, and the aspell 0.60.3 + aspell6-en work reached only Email, which links libaspell.so.15 directly. 2.0.11's configure has no --with-aspell (Psion's own abiword_2.0.11.oe passes it, and autoconf ignores it silently -- very likely why they moved to 2.0.12 and --enable-enchant). --enable-pspell was available the whole time, with pspell-config, pspell/pspell.h and libpspell.so all already staged in the chroot. Rebuilt with --enable-pspell; configure reports "spelling: GNU aspell in system location" and resolves to -laspell, which the card already carries. Job: workspace/build/job-abiword-spell.sh recovered/netbook-pro-cd/1000999D.ISO -- NEW HOLDING, 30,750,720 B Psion's netBook Pro companion CD, 10 Nov 2004, ex archive.org item 1000999d_netbook_pro_cd. md5 981c124e55bf461f5f2b5e7952bc7f78. Windows-side only -- ActiveSync, USB setup, Pocket On-Schedule sync, and the user manuals in English, French, German, Italian and Spanish. Nothing for this build, but it documents the hardware and was not held before. /etc/modules, /etc/modules.conf -- PSION'S OWN, never installed base-files/base-files/netbook-pro/. /etc/init.d/modutils.sh is present and runs at boot as rcS.d/S20modutils.sh, but it begins [ -f /proc/modules ] || exit 0 [ -e /sbin/depmod ] || exit 0 [ -f /etc/modules ] || exit 0 and /etc/modules was absent, so it exited on its third line every boot and no module was ever loaded. depmod.26 is present and the symlink resolves; the missing list was the only blocker. Both files are now installed verbatim. CORRECTION, and it matters: an earlier version of this entry said this meant dial-up and Bluetooth could never have worked. THAT WAS WRONG. Every driver on Psion's list is compiled INTO the kernel these images boot -- verified by inflating nBkProOs.img_cf and finding the banner strings a built-in driver registers: "PPP generic driver version 2.4.2", "Bluetooth: Core ver %s", "Bluetooth: L2CAP ver %s", "RFCOMM ver %s", "BNEP (Ethernet Emulation) ver %s", "HIDP (Human Interface Emulation)", "mmcblk", "pxamci", "IrCOMM", "pxa_ir", "CSLIP". Nothing was broken by the file's absence, and every modprobe it now issues is a no-op on this kernel. The files are installed because they are Psion's, because modules.conf carries the on-demand aliases (alias /dev/ppp ppp_generic, and so on), and because a kernel built from the same source with a different config would need them. The "=m" values behind the wrong claim came from recovered/netbook-pro-kernel/defconfig, which is "Linux kernel version: 2.6.17" dated 26 July 2006 -- OpenEmbedded's netBook Pro config, not Psion's 2.6.9. See docs/08-INVENTORY-AUDIT.md. /usr/bin/firefox-url -- PSION'S OWN, never installed /etc/gconf/gconf.xml.defaults/desktop/gnome/url-handlers/ -- RECONSTRUCTED gnome/url-handlers.patch changes three gnome-vfs defaults: http/command epiphany %s -> firefox-url %s https/command epiphany %s -> firefox-url %s mailto/command evolution %s -> balsa %s and gnome-vfs_2.6.2.oe's do_install puts firefox-url in ${bindir}. Neither reached the card: the script was absent and the gconf defaults tree had no url-handlers branch at all, so gnome_vfs_url_show() had nothing to call and a link clicked in Email, Word or Sheet did nothing. The script is Psion's file verbatim. The gconf entries are RECONSTRUCTED -- the values come straight out of their patch, but the schema file it patches (desktop_gnome_url_handlers.schemas) is not in oe-netbook, only the patch against it, so the defaults are written directly in the same form mkgconf.py produces for every other schema. Left alone: /desktop/gnome/applications/browser/exec is "mozilla", which is on no card tree. That is upstream GNOME's default and Psion did not patch it, so it stands as they left it. /usr/lib/cups/backend/*, /usr/bin/lp and friends -- DEBIAN sarge 1.1.23-10sarge1 The printing stack was incomplete and cupsd never started. Psion shipped printing -- meta-psion.oe lists gnome-cups-manager and esp-gs in psion-apps, they patched cupsd.conf (cups/cups-1.1.20/default-conf.patch: AccessLog /dev/null, ErrorLog syslog, FileDevice Yes), they patched CUPS's own init script to create its requests directory on start (init-mkdir.patch), and soho-image.oe adds the lx user to the sys group with the comment "for printer admin". It was meant to work. What was wrong here, found 30 Sep 2026: * /usr/lib/cups/backend/ was EMPTY. Debian ships the backends in backend-available/ and symlinks the selected ones into backend/ from the postinst; this image is assembled by copying files, so no postinst ever ran. With no backend, cupsd cannot reach any printer at all. * lp, lpstat, cancel, lpoptions, lppasswd and cupstestppd were absent -- they are in the separate cupsys-client package. * /etc/init.d/cupsys was in NO runlevel, so cupsd never started. * /var is a tmpfs rebuilt every boot and nothing recreated /var/spool/cups, /var/run/cups, /var/log/cups or /var/lib/cups/certs. This is exactly what Psion's init-mkdir.patch existed to solve. The card's cupsd is 233,876 bytes dated 13 Dec 2005 and is BYTE-IDENTICAL to the one in Debian sarge's cupsys_1.1.23-10sarge1_arm.deb, so the missing pieces were taken from that same package -- the exact build the rest of the stack already came from. Everything verified ARM OABI (e_flags 0x2) before installing. Etch's 1.2.7 was rejected: the filter and backend interface changed between CUPS 1.1 and 1.2. Fixed by doing what the postinst would have done -- ipp, lpd, parallel, socket and usb symlinked from backend-available, plus http -> ipp, which is Debian's own default selection -- installing the six client tools, adding the directory creation to /etc/init.d/populate-var.sh (this image's own mechanism for the volatile /var, the same place the ipaq-sleep fix lives), and linking cupsys in at S24 in rc2-5.d and K76 in rc0/1/6.d. One config line added: SystemGroup sys. Debian's cupsd compiles in "lpadmin" as the administrative group and this image has no such group, while Psion deliberately put lx in "sys" for exactly this purpose. The line makes their tweak do what its comment says. cupsd binds port 631 but its is Deny From All / Allow From 127.0.0.1, which is Debian's shipped default and is left alone. /usr/lib/libguile-ltdl.so.1 -- DEBIAN sarge, libguile-ltdl-1 1.6.7-1 /usr/lib/libdb3.so.3 -- DEBIAN, libdb3 3.2.9+dfsg-1 A full DT_NEEDED audit of all 1,150 ELF objects on the card found exactly two unresolved libraries: libguile.so.12.3.0 wanted libguile-ltdl.so.1, and /lib/security/pam_userdb.so wanted libdb3.so.3. Neither was breaking anything -- nothing loads the guile 1.6 cluster (Solitaire uses libguile.so.9, which is present and was restored after being wrongly parked earlier), and no PAM configuration names pam_userdb, so it is never dlopened. Both were nevertheless latent traps for anyone installing software later. Resolved by ADDING the two small libraries rather than removing the things that wanted them -- 15 KB and 249 KB, both ARM OABI. Every DT_NEEDED on the card now resolves.