Call for testing: new (v1.4.7) version of raspbian-nspawn-64 deb package
I have packaged up a new (v1.4.7) version of raspbian-nspawn-64 as a deb
*, so that it may be installed on an existing vanilla
Raspbian system, just like any other regular package (rather than having to start with my custom image from GitHub). As before
, this deb is available for testing
(served from my own repo), and may be installed by following the instructions below.
The plan is that once any last issues have been ironed out, the deb will then been migrated (courtesy of ShiftPlusOne) into the official Raspbian repository (thus providing an easy interim solution for users looking to run 64-bit apps within the familiar 32-bit Raspbian userland and desktop). (@andrum99 to your question, I guess I will remain the maintainer for this - there's certainly no expectation that RPi engineers will or should be called on to supply any formal support for it.)
This update addresses some issues picked up by users on the prior (v1.3.1) release (many thanks to everyone who provided feedback!), and is hopefully a fairly final candidate for migration.
If you would like to try this out, you'll need a RPi3B, RPi3B+ or RPi4B running the standard Raspbian OS
(one of the "with desktop" variants - although the package can also be used with the "lite" image too - see endnotes
), with functioning networking etc.
Begin by ensuring that everything on your Raspbian system is up-to-date :
Next, make sure you have an (official) 64-bit kernel available in your bootfs:
The important thing to check, is that there's a kernel8.img
in the output of the above command (this is the official 64-bit kernel
Assuming this is
present, next, if you haven't already, specify that it should be used, and then reboot to take up the change:
When your system comes back up, you will be running a 64-bit kernel, 32-bit Raspbian userland system. Check everything still works as expected.
Once done, (if you haven't already) add my custom deb repository
, and update your metadata to reflect this:
That's a capital Oh, not a zero, in the wget invocation above. Don't forget the hyphens either ^-^
Now you can install the package! Just issue:
This will pull in and install the debian-buster-64 dependency package (a vanilla arm64 Debian Buster guest rootfs for systemd-nspawn originally created via debootstrap
) together with the raspbian-nspawn-64 (host-side tools and services) package itself, plus any additional deps required by your system.
Once the installation is complete you can immediately start using your new 64-bit guest system, exactly as you could with the original standalone image (there's no need to reboot first)!
Should you at some point in the future want to remove
the raspbian-nspawn-64 system, simply issue:
Note that this will permanently erase any content or packages you may have installed inside the 64-bit guest filesystem (if you want to keep those around instead, use the "remove" rather than "purge" verb in the above).
Have fun, and please report any issues you find
(either in this thread, or via email to [email protected]
). I'm aiming to lock off a final version by end February 2020
Changes in this Release
Some of the main changes for this (v1.4.7) wrt the previous (v1.3.1) release are:
- Using debconf, the raspbian-nspawn-64 package will now prompt to set arm_64bit=1 for you in /boot/config.txt, if not running under an aarch64 kernel at the time of install, and this setting does not appear already to be present in that file. (In such a case, you'll still need to reboot, once the package installation has completed, to start using your new 64-bit kernel of course.)
- On a similar note, menu commands like System Tools -> Run 64-bit Program... will now display an error dialog if attempted while running a 32-bit kernel (they used to just fail silently).
- Graphical (host-side) dependencies have been moved to Recommends:, allowing the package to be installed on a 'lite' (CLI-only) Raspbian system, without pulling in stuff you don't want (NB for such a case, you'll need to use apt-get install --no-install-recommends raspbian-nspawn-64). This should have no effect on users installing onto a 'with desktop' system normally (who, for avoidance of doubt, should not use the --no-install-recommends qualifier when installing). NB at the CLI, you can use ds64-shell to enter a 64-bit container shell; Ctrl-d to exit back to the 32-bit shell again.
- On a similar note, the various underlying commands (ds64-runner etc.) will not use zenity to display dialog boxes if this package is not installed (or the GUI isn't running), falling back to console output in this case.
- The underlying 64-bit Debian Buster image deb (debian-buster-64) has been updated to a version debootstrapped on 19 Feb 2020.
- I have left the Debian metadata in the debian-buster-64 image this time (since the most common issue I got emailed about was people not remembering to sudo apt-get update in the 64-bit shell, before trying to install new packages there - this way, while you may still need to update if it has become stale wrt certain packages, at least there's a helpful prompt to tell you that).
- Added a mechanism to automatically bind mount 'shadow' copies of top-level dot-files and dot-directories for regular users, where an appropriate 'doppelganger' is provided. Specifically, for any (normal) file or directory ~/.foo, if a 'shadow' ~/.foo-debian-buster-64 is present, this will be automatically be bind mounted over the original inside the container only. No graphical editor for this is currently provided; however, it does allow for easy solution of the following (e.g.):
- To work around the issue where e.g. Chromium has different format ~/.config/... entries in the 32-bit host and 64-bit container, create the directory ~/.config-debian-buster-64 - this will then be used as ~/.config within the 64-bit container context only. (NB - the automatic bind mounts only happen at container startup, so you may need to reboot your system, or use System Tools -> Stop 64-bit Container followed by System Tools -> Start 64-bit container to have your change 'take'.)
- To have a separate 32-bit and 64-bit bash history, create the file ~/.bash_history-debian-buster-64 - this will then be used as ~/.bash_history within the 64-bit container context only. (Again, changes are applied at container startup.)
Thanks again to ShiftPlusOne for his assistance / pointers on the Debian packaging process!
* Actually, and just as before, two debs: the client-side image debian-buster-64, and the host-side integration package raspbian-nspawn-64. The former is a dependency of the latter and so pulled in automatically when the latter is installed.