manually bring up network on eth0

ip link set eth0 up
ip addr add 192.168.1.100/24 broadcast 192.168.1.255 dev eth0
ip route add default via 192.168.1.1
echo "nameserver 1.1.1.1" > /etc/resolv.conf

Or

ifconfig eth0 up
ifconfig eth0 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
route add default gw 192.168.1.1
echo "nameserver 1.1.1.1" > /etc/resolv.conf

Only console users are allowed to run the X server

It used to be enough to create /etc/X11/Xwrapper.config with the following in it

allowed_users = anybody
needs_root_rights = no

That is no longer enough. So patch X.

Place this following in /etc/portage/patches/x11-base/xorg-server/console.diff
(version 1.20.8 tested but probably works on others ?)
If you’re not using Gentoo then you should be 😉
You’ll need to google how to patch and compile packages on your distro.

diff -Naur a/hw/xfree86/xorg-wrapper.c b/hw/xfree86/xorg-wrapper.c
--- a/hw/xfree86/xorg-wrapper.c	2020-03-29 21:21:15.000000000 +0100
+++ b/hw/xfree86/xorg-wrapper.c	2020-05-22 14:23:59.825069376 +0100
@@ -206,29 +206,6 @@
 
     parse_config(&allowed, &needs_root_rights);
 
-    /* For non root users check if they are allowed to run the X server */
-    if (getuid() != 0) {
-        switch (allowed) {
-        case ROOT_ONLY:
-            /* Already checked above */
-            fprintf(stderr, "%s: Only root is allowed to run the X server\n", argv[0]);
-            exit(1);
-            break;
-        case CONSOLE_ONLY:
-            /* Some of stdin / stdout / stderr maybe redirected to a file */
-            for (i = STDIN_FILENO; i <= STDERR_FILENO; i++) {
-                if (on_console(i))
-                    break;
-            }
-            if (i > STDERR_FILENO) {
-                fprintf(stderr, "%s: Only console users are allowed to run the X server\n", argv[0]);
-                exit(1);
-            }
-            break;
-        case ANYBODY:
-            break;
-        }
-    }
 
 #ifdef WITH_LIBDRM
     /* Detect if we need root rights, except when overriden by the config */

dkimproxy ignores user settings

Very useful, but unmaintained, dkim email message signing program.
All the time I’ve been using it the sysvinit script to start it has been a mess and various workarounds are needed. With the refusal to accept a different location for private.key being particularly annoying.
At least on debian and ubuntu thisis the case.
Even though you are supposed to be able to override default settings in
/etc/dkimproxy/dkimproxy_out.conf it does not happen.
This is only for dkimproxy.out because that’s all I use but should be adaptable to dkimproxy.in

To do

Mask the sysvinit script. (even though there’s currently no service file for dkimproxy the below still works).

systemctl mask --now dkimproxy.service

Create /etc/systemd/system/dkimproxy-out.service

[Unit]
Description=dkimproxy.out slightly more sane
After=network.target

[Service]
Type=forking
User=dkimproxy
ExecStart=/usr/sbin/dkimproxy.out --conf_file=/etc/dkimproxy/dkimproxy_out.conf
ExecStop=/bin/kill -15 $MAINPID
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target

Create (or edit) /etc/dkimproxy/dkimproxy_out.conf with options of your choosing which will now be honoured.

user	 			dkimproxy
group		 		dkimproxy
min_servers 		2
min_spare_servers 	1
listen    			127.0.0.1:10027
relay     			127.0.0.1:10028
domain    			xxxx.co.uk,bbbb.com
signature 			dkim
method				relaxed
keyfile 			/etc/dkimproxy/private.key
selector 			selector1
daemonize

Enable and start.

systemctl enable --now dkimproxy-out.service

rtorrent sequential download

Patch libtorrent

diff --git a/src/download/chunk_selector.cc b/src/download/chunk_selector.cc
index 850fec0f..248a29f9 100644
--- a/src/download/chunk_selector.cc
+++ b/src/download/chunk_selector.cc
@@ -82,7 +82,7 @@ ChunkSelector::update_priorities() {
   m_sharedQueue.clear();
 
   if (m_position == invalid_chunk)
-    m_position = random() % size();
+    m_position = 0;
 
   advance_position();
 }
@@ -100,14 +100,6 @@ ChunkSelector::find(PeerChunks* pc, __UNUSED bool highPriority) {
   // set.
   rak::partial_queue* queue = pc->is_seeder() ? &m_sharedQueue : pc->download_cache();
 
-  // Randomize position on average every 16 chunks to prevent
-  // inefficient distribution with a slow seed and fast peers
-  // all arriving at the same position.
-  if ((random() & 63) == 0) {
-    m_position = random() % size();
-    queue->clear();
-  }
-
   if (queue->is_enabled()) {
 
     // First check the cached queue.

Libvirt – Auto resize does not work on most linux guests

It is left to the DM to resize after being informed by libvirt there has been a change. Many don’t.
Poor design decision IMHO.

xrandr --output Virtual-1 --auto

Will resize to the window size you have chosen. The Virtual-1 part might need adjusting. You can find out by using

xrandr

on it’s own. In the case of a Manjero VM I just installed

$ xrandr
Screen 0: minimum 320 x 200, current 1256 x 869, maximum 8192 x 8192
Virtual-1 connected primary 1256x869+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1256x869      59.98*+
   2560x1600     59.99    59.97  ....................................

So it’s Virtual-1.

Make a script and link it to a hotkey and it’s less of an annoyance.

Note: spice-vdagent may need to be installed and running for this to work ?

Bezel correction and multiple displays with Nvidia driver on Linux – Metamode seems to be ignored

In theory it should be as easy as using offsets in a ‘metamode’ line. in he screen section of xorg.conf eg.

	Option         "metamodes" "DP-0: 1920x1080_75 +0+0,DP-2: 1920x1080_75 +1962+0, DP-4: 1920x1080_75 +3924+0

Where +0+0 , +1962+0 and +3924+0 is adding 42 pixels between monitors to account for the size of my bezels. But it doesn’t work. The metamode line is ignored and the nvidia driver make it’s own metamode line, as seen in Xorg.log

[ 40517.093] (**) NVIDIA(0): Option "MetaModes" "DP-2: 1920x1080_75 +1920+0, DP-0: 1920x1080_75 +0+0, DP-4: 1920x1080_75 +3840+0"

I can change the absolute positions in the nvidia-settings GUI. Press apply and it works. I have my bezel correction. But then click ‘Save to Xconfig file’, Fire up an xserver with that .conf and it overrides the custom metamode again.

Work around:

Use nvidia-settings gui to position the displays with the offsets you want. Click apply.
On the command line
nvidia-settings –query Currentmetamode
Which gave me

Attribute ‘CurrentMetaMode’ (gent:1.0): id=50, switchable=no, source=nv-control :: DPY-3: 1920x1080_75 @1920x1080
+1962+0 {ViewPortIn=1920x1080, ViewPortOut=1920x1080+0+0}, DPY-0: 1920x1080_75 @1920x1080 +0+0
{ViewPortIn=1920x1080, ViewPortOut=1920x1080+0+0}, DPY-5: 1920x1080_75 @1920x1080 +3924+0 {ViewPortIn=1920x1080,
ViewPortOut=1920x1080+0+0}

You’ll need to clean up newlines and extra white space so its all on one line . Get rid of the “(gent:1.0): id=50, switchable=no, source=nv-control ::” bit (when I didn’t the command succeeded but I lost my middle display). Get rid of Attribute, put an = after ‘CurrentMetaMode’ and double quotes around every following, and nvidia-settings –assign at the start and you should be left with some thing like this

nvidia-settings --assign 'CurrentMetaMode'="DPY-3: 1920x1080_75 @1920x1080 +1962+0  {ViewPortIn=1920x1080, ViewPortOut=1920x1080+0+0}, DPY-0: 1920x1080_75 @1920x1080 +0+0 {ViewPortIn=1920x1080, ViewPortOut=1920x1080+0+0}, DPY-5: 1920x1080_75 @1920x1080 +3924+0 {ViewPortIn=1920x1080, ViewPortOut=1920x1080+0+0}"

So that command is run before playing a game where bezel correction is required. Run it again without the offsets to go back to normal.

compile gcc on odroid-u2 with mfpu=neon – Arch linux

currently gcc 4.8.1 on Arch (07.10.13)

Flags in makepkg.conf

CPPFLAGS=""
CFLAGS="-O3 -pipe -march=armv7-a -mcpu=cortex-a9 -mfloat-abi=hard -mfpu=neon -fstack-protector --param=ssp-buffer-size=4"
CXXFLAGS="-O3 -pipe -march=armv7-a -mcpu=cortex-a9 -mfloat-abi=hard -mfpu=neon -fstack-protector --param=ssp-buffer-size=4"

PKGBUILD needs one patch adding (neon-update3.patch) and one removing (armhf-triplet-trunk.diff)
As it is patch will fail to find the file to be patched and you will have to supply the full path.
in my case

 /var/build/gcc/src/gcc-4.8-20130725/gcc/config/arm/neon.md

Also need to change flags pass to GCC by configure.

[[ $CARCH == "armv7h" ]] &amp;&amp; CONFIGFLAG="--host=armv7l-unknown-linux-gnueabihf --build=armv7l-unknown-linux-gnueabihf --with-arch=armv7-a --with-float=hard --with-fpu=neon"

The PKGBUILD with the changes is attached as is neon-update3.patch

The original PKGBUILD is from https://github.com/archlinuxarm/PKGBUILDs/blob/master/core/gcc/PKGBUILD

neon-update3.patch is from http://gcc.1065356.n5.nabble.com/PATCH-ARM-Fix-unrecognizable-vector-comparisons-td947064.html

PKGBUILD.orig

PKGBUILD

neon-update3.patch