I am a Manjaro Xfce user that always wanted a persistent “live” version of the system on a USB drive that could be booted on ANY system.
I tried the Persistent USB Release using ALMA but ran into a few problems with it. For example it would block the WiFi adapter on my laptop.
So I tried a simpler DIY approach which appears to be working. At least, it works on all the 7 computers that I have access to.
I’ve set out the steps I took in case it is helpful for others. And to solicit any comments on the dangers and shortcomings as well as any suggested improvements.
I installed Manjaro Xfce to a clean USB drive in the normal manner. However, I did select manual partitioning like this:
8 MB unformatted bios-grub flag 512 MB fat32 /boot/efi boot flag 8192 MB linuxswap swap swap flag rest ext4 / root flag
Note the 8MB unformatted partition.
Once I booted up the fresh install and updated it I ran:
sudo grub-install --target i386-pc --debug /dev/sd(x) sudo update-grub
This made the drive bootable on UEFI AND non-UEFI systems.
Next I used pacman to install “amd-ucode”. I’m not sure if this is essential but I installed it anyway.
Then I created the three files intel.conf, nvidia.conf and amd.conf in /etc/X11/mhwd.d/
Section "Device" Identifier "AMD" Driver "amdgpu" EndSection Section "Device" Identifier "Intel Graphics" Driver "intel" EndSection Section "Device" Identifier "Device0" Driver "nouveau" VendorName "NVIDIA Corporation" Option "NoLogo" "1" EndSection
Next I created a custom service:
Create: /usr/lib/systemd/system/myboot.service [Unit] Description=LiveMedia Config Script Before=systemd-user-sessions.service [Service] Type=oneshot ExecStart=/home/myuser/set-video-driver [Install] WantedBy=multi-user.target
And enabled it with systemctl. The myboot service runs at startup, detects the video card in the system and calls mhwd-gpu accordingly:
/home/myuser/set-video-driver #!/bin/sh if lspci -nn | grep -i '\[0300\].*amd'; then mhwd-gpu --setxorg /etc/X11/mhwd.d/amd.conf exit 0 fi if lspci -nn | grep -i '\[0300\].*intel'; then mhwd-gpu --setxorg /etc/X11/mhwd.d/intel.conf exit 0 fi if lspci -nn | grep -i '\[0300\].*nvidia'; then mhwd-gpu --setxorg /etc/X11/mhwd.d/nvidia.conf exit 0 fi mhwd-gpu --setxorg /etc/X11/mhwd.d/intel.conf
Finally a couple of my systems have 4K displays, I wanted to automate some rescaling of the desktop, so I added the following script which is run on login by the Xfce session manager:
#!/bin/sh if xrandr | grep \* | grep '[2-9][0-9][0-9][0-9]x' ; then xfconf-query -c xsettings -p /Gdk/WindowScalingFactor -s 2 xfconf-query -c xsettings -p /Gtk/CursorThemeSize -t int -s 64 xfconf-query -c xfwm4 -p /general/theme -t string -s "Numix HiDPI" export QT_SCALE_FACTOR=2 else xfconf-query -c xsettings -p /Gdk/WindowScalingFactor -s 1 xfconf-query -c xsettings -p /Gtk/CursorThemeSize -t int -s 32 xfconf-query -c xfwm4 -p /general/theme -t string -s "Piranha" export QT_SCALE_FACTOR=1 fi xfce4-panel -r
Comments and feedback very welcome.