Moving linux setup from other HW to a Nano

Hi everyone! As i am fairly new to the linux world and still learning stuff i am in need of some help and hope that someone here can guide me, if i put this question in the wrong section please advice as i couldn’t find anything more suitable! So i recently got myself a Nano to play around with, and now i want to build or try to move another linux release (The UI part) to the nano. For example, i want all the files for drivers and so on to be set up for nano, but UI from lets say a raspberry release or AGL. How do i achieve this? Do i have to build everything from scratch, (if so what software do i use?) or could one just get the folders for the hardware such as DEV and merge it with the folders containing UI data (Such as home, usr and so on) and create a image file to flash to the SD card?
Educational or helping answers are more than welcome!

I do not have an RPi, so I have not actually ported anything from it. Generally speaking though, it is possible the Nano will already have the drivers installed. In any case where a driver is is part of the kernel without third party additions, then even drivers not currently configured can probably be added through simple kernel configuration and compile. For third party drivers it gets a bit more complicated, but not a lot…the trick there is to know if the RPi kernel the third party software compiles against is compatible with the default Jetson 4.4.140 kernel.

User space software/applications may in some cases be part of the Ubuntu distribution and able to be added with the “apt-get” mechanism. In other cases, if that software is provided in binary format, and if that software is 64-bit arm64/aarch64/ARMv8-a, then it might “just work” without anything more than unpacking the software.

In many cases you will still need to install supporting libraries for user space software. For example, if Qt is required, then you’d have to install the correct version of Qt.

In cases where you must compile user space software, then you’d also need the development packages which contain the header files.

In cases where GPIO is used, then you will probably also have to alter the device tree software.

Do keep in mind that video configuration on the Nano will require a monitor which provides EDID data (which HDMI does). There are some restrictions on video modes, e.g., no interlaced mode is supported. So it just depends on a lot of things, and often you have to just grab a Nano and start building to see where extra effort is required.

1 Like

You can change UIs exactly as you would with Ubuntu because Linux for Tegra is Ubuntu based. If you want vanilla gnome desktop, for example, you can sudo apt install gnome-session and be done with it. You can use apt list | grep session to find packages with the word “session” in it and view details with apt show like:

 $ apt show cinnamon-session
Package: cinnamon-session
Version: 3.6.1-1
Priority: optional
Section: universe/x11
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian Cinnamon Team <debian-cinnamon@lists.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 366 kB
Provides: x-session-manager
Depends: cinnamon-desktop-data (>= 3.6), cinnamon-session-common (= 3.6.1-1), default-dbus-session-bus | dbus-session-bus, upower (>= 0.9.0), dconf-gsettings-backend | gsettings-backend, libc6 (>= 2.17), libcairo2 (>= 1.2.4), libcanberra0 (>= 0.2), libdbus-1-3 (>= 1.9.14), libdbus-glib-1-2 (>= 0.88), libgdk-pixbuf2.0-0 (>= 2.22.0), libgl1, libglib2.0-0 (>= 2.37.3), libgtk-3-0 (>= 3.0.0), libice6 (>= 1:1.0.0), libsm6, libsystemd0, libx11-6, libxau6, libxcomposite1 (>= 1:0.3-1), libxext6, libxrender1, libxtst6
Recommends: cinnamon-l10n
Breaks: cinnamon (<< 3.6), cinnamon-session-common (<< 2.2.2-5~)
Replaces: cinnamon-session-common (<< 2.2.2-5~)
Homepage: http://cinnamon.linuxmint.com
Download-Size: 88.6 kB
APT-Sources: http://ports.ubuntu.com/ubuntu-ports bionic/universe arm64 Packages
Description: Cinnamon Session Manager - Minimal runtime
 The Cinnamon Session Manager is in charge of starting the core components
 of the Cinnamon desktop, and applications that should be launched at login
 time. It also features a way to save and restore currently running
 applications.
 .
 This package contains the binaries for the Cinnamon Session Manager, but
 no startup scripts. It is meant for those willing to start cinnamon-
 session by hand with the components of their choice, and for applications
 such as MDM that use cinnamon-session internally.

I think pi is xfce, so you can try apt install xfce4-session and see if you like it. You can change sessions at the login screen so you can have multiple installed. Word of warning however: sometimes they don’t play well together so you might run into formatting issues (wrong fonts, etc). Usually this can be resolved by clearing out your user’s settings or creating a new user.

You can absolutly port your home directory (Videos, Documents, etc), but i’d be careful about bringing over dot files (.foo) becuase the configurations they provide might cause problems. If you know the software is the same version (eg. a music player) you can probably geta away with it, but otherwise it’s safer just to start a new user profile from scratch.

I do not have an RPi

It’s Debian based, so apt-get like Ubuntu and most of the package names are identical. Everything last i checked was still 32 bit, however, so bringing over packages, across architectures and distros will probably fail. Debian packages are surprisingly inflexible in that regard.

1 Like