Since version 9.4, "AM" is compatible with BSD-based systems.
However, the compatibility of Linux programs on your BSD system must be done manually.
There are several guides on this subject, the one available on the FreeBSD site is an example https://docs.freebsd.org/en/books/handbook/linuxemu, but I will try to adapt this one as much as possible to the use of Debian in debootstrap
, which is the most familiar distribution for me.
I will divide this quick guide highlighting the essential steps
First we need to enable the Linux compatibility layer, to do so we need to run these commands as root, no reboot needed:
sysrc linux_enable="YES"
service linux start
Then we need to install and use debootstrap, a program that can be used to install different Debian versions in a system without using an installation disk.
As I mentioned at the beginning, I will be using Debian, "Stable" branch
Using the PKG package manager, install "debootstrap"
pkg install debootstrap
...then we need to setup the correct installation path for debootstrap. Use your favorite text editor and insert the following line in /etc/sysctl.conf
compat.linux.emul_path="/compat/debian"
...and finally, we use debootstrap to install the Debian base tools for the Debian Stable, as root
debootstrap stable /compat/debian
In order for the contents of the home directory to be shared and in order to be able to run X11 applications, the directories /home and /tmp should be mounted in the Linux compat area using nullfs for loopback.
In BSD, edit /etc/fstab and insert the following:
# Device Mountpoint FStype Options Dump Pass#
devfs /compat/debian/dev devfs rw,late 0 0
tmpfs /compat/debian/dev/shm tmpfs rw,late,size=1g,mode=1777 0 0
fdescfs /compat/debian/dev/fd fdescfs rw,late,linrdlnk 0 0
linprocfs /compat/debian/proc linprocfs rw,late 0 0
linsysfs /compat/debian/sys linsysfs rw,late 0 0
/tmp /compat/debian/tmp nullfs rw,late 0 0
/home /compat/debian/home nullfs rw,late 0 0
Then execute mount in order to mount everything, as root:
mount -al
Edit and update the APT repositories located in /compat/debian/etc/apt/sources.list
deb https://deb.debian.org/debian stable contrib main
deb https://deb.debian.org/debian stable-updates contrib main
deb https://deb.debian.org/debian stable-backports contrib main
deb https://deb.debian.org/debian-security stable-security contrib main
I also prefer to disable recommended and suggested packages in /compat/debian/etc/apt/apt.conf
APT::Install-Recommends "false";
APT::AutoRemove::RecommendsImportant "false";
APT::AutoRemove::SuggestsImportant "false";
Now we're ready to use chroot to access the Linux system. As root, do
chroot /compat/debian /bin/bash
Now its time to setup Debian.
Keep Debian updated via APT
apt update
If you get a lot of packages that need upgrading, you can do that before you continue with
apt full-upgrade
AppImages require FUSE to work. For older implementations (which are still the most popular) install with APT libfuse2
or libfuse2t64
(depending on the package made available in the repositories), while for all implementations, even the most recent ones, install fuse3
and later (the latter brings with it fusermount
).
apt install libfuse2 fuse3
Since they are written for Linux, they will surely require substantial dependencies. The safest way to get them is to install packages that end with "-dev".
For example, "Brave AppImage" requires "libnss3
", to be sure to use "libnss3-dev
" instead
apt install libnss3-dev
...also, "pulseaudio
" brings with it several core libraries that can be required in different programs
apt install pulseaudio
...not to mention that many programs, including the official versions of Firefox and Thunderbird, require some GTK3 or earlier libraries
apt install libgtk-3-dev libgtk2.0-dev
...I also suggest Xorg
apt install xorg
...if you want to use special fonts, you need to get at least the basic ones
apt install fonts-freefont-ttf
Is it too much? I know.
The reason for this is that different programs require different libraries on the host, which are almost always present on Linux. This list will continue to be updated until we discover more common packages that may be needed to run the portable Linux programs managed by "AM" and "AppMan".
To exit the chroot and return to the main BSD shell, you can use the "exit
" command
exit
To prevent errors like this one...
ELF interpreter /lib64/ld-linux-x86-64.so.2 not found, error 2
...do
cd /compat/debian/lib64/
rm ./ld-linux-x86-64.so.2
ln -s ../lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 ld-linux-x86-64.so.2
This change requires a reboot (as does the next point, which is the most important one for AppImages, so... wait and keep read).
Edit the file /etc/sysctl.conf by adding this line
vfs.usermount=1
This change requires a reboot.
This section lists common problems that may arise. "AM" does not guarantee miracles.
Run Chromium-based apps with the --no-sandbox
flag, for example
$ brave --no-sandbox
Always check the terminal output, also using LD_DEBUG=lib
if necessary, to see which libraries a program requires to run.
Search for such libraries in APT, also with apt search {keyword}
or by searching on the internet, to locate the package to install.
Remember to always chroot to install packages via APT
chroot /compat/debian /bin/bash
apt install {package}
Back to "Guides and tutorials" | Back to "Main Index" | "Portable Linux Apps" | "AppMan" |
---|