Dual-booting: Linux and Windows fight for the system clock

Turns out it’s a common problem when dual-booting Windows and Linux, they keep changing the hardware system clock on each other (unless you live in GMT+0 zone) because Windows assume the system time is the one at the set timezone while Linux think the system time is the UTC+0 time (and offset it afterwards).

Linux updates the time through NTP server blindly while Windows 7 check if the current time is within 1hr from the NTP server to avoid unintended time changes (I have to give Microsoft credit for that). EDIT: Windows 10 blindly updates the time like Linux too.

The easy solution is to have Linux follow Windows’ suit:

timedatectl set-local-rtc 1 --adjust-system-clock

43 total views, no views today

X11VNC for Linux setup notes

x11vnc is a relatively smooth experience, but there are quite a few common use cases that would have been automated away if it’s a Windows program, namely have it start as a service on boot (before logging in)

It’s from babelmonk’s solution on StackExchange. Paraphrased here to make it easier to understand:

After installation, create the password file with -storepasswd switch AND specify the where you want the password saved as an optional argument, and I prefer /etc/x11vnc.pass:

sudo x11vnc -storepasswd {your password goes here} /etc/x11vnc.pass

which will be read by -rfbauth switch for the x11vnc program.


Build your own (systemctl) service by creating /etc/systemd/system/x11vnc.service:

[Unit]
Description="x11vnc"
Requires=display-manager.service
After=display-manager.service

[Service]
ExecStart=/usr/bin/x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 -auth guess -rfbauth /etc/x11vnc.pass
ExecStop=/usr/bin/killall x11vnc
Restart=on-failure
Restart-sec=2

[Install]
WantedBy=multi-user.target

Then, start with:

sudo systemctl daemon-reload
sudo systemctl start x11vnc

Enable the service (if not already done by previous commands) so it will start on boot

sudo systemctl enable x11vnc

41 total views, no views today

Acrobat reader on Linux

Adobe gave up supporting Acrobat reader for Linux long time ago, so it’s stuck at the old 32-bit version (9.5.5):

http://ardownload.adobe.com/pub/adobe/reader/unix/9.x/9.5.5/enu/AdbeRdr9.5.5-1_i386linux_enu.deb

ftp://ftp.adobe.com/pub/adobe/reader/unix/9.x/9.5.5/enu/AdbeRdr9.5.5-1_i386linux_enu.deb

The tutorial websites tells you to use wget, but sometimes you might run into authentication problems. You can simply use the links above and double-click the .deb file to install.

Nonetheless, it doesn’t work right out of the box in modern 64-bit Linux. You’ll run into a missing library

libxml2

on run because you didn’t install the 32-bit version of it. Enable i386 (x86 or 32-bit) packages first then get the 32-bit library:

dpkg --add-architecture i386
apt-get install libxml2:i386 ia32-libs

There are some GTK complaints if you run it on a command line, but it doesn’t affect the uses so you can safely ignore them

36 total views, no views today

systemd-resolved DNS resolution nightmare

Linux Mint 19 does not resolve local hostsnames (nothing to do with SMB, which does not rely exclusively on DNS) out of the box! Damn. MX Linux does.

systemd-resolve, which act as a local DNS server on 127.0.0.53, despite it points to the DNS server assigned by the router’s DHCP (aka, the router’s IP address itself), managed not to resolve the local hostnames out of the box!

Time to disable this mofo (no need to mess with /etc/nsswitch.conf and install Winbind to use WINS):

Disable and stop the systemd-resolved service:

sudo systemctl disable systemd-resolved.service
sudo systemctl stop systemd-resolved

Then put the following line in the [main] section of your /etc/NetworkManager/NetworkManager.conf:

dns=default

Delete the symlink /etc/resolv.conf

sudo rm /etc/resolv.conf

Restart NetworkManager

sudo systemctl restart NetworkManager

I know it has good reasons to exist (like breaking VPN ties), but if Linux Mint decide to have it on as out-of-the-box defaults, at least tell the users that local network DNS resolution won’t work by default!

This is a choice that caters the 5% elite at the expense of frustrating 95% of the target audience!

70 total views, 4 views today

Windscribe Linux breaks internet (messed up DNS resolution) on first use

I lost the internet (actually just DNS not resolving correctly) after installing Winscribe for Linux and disconnecting the session. WTF windscribe! I know it’s beta version, but at least you should check if it bricks people’s internet after a fresh install and first use!

Turns out that on first connection, it re-binds /etc/resolv.conf to /run/resolvconf/resolv.conf which has this line:

# Generated by resolvconf
nameserver 10.255.255.2

So like systemd-resolve, Windscribe lets resolvconf steal the DNS redirection that’s supposed to go straight to my router to an intermediary 10.255.255.2 that doesn’t do the job! Aargh!

To fix it (needs to be done every time after a Windscribe connection, so I’m getting rid of this lamely written Windscribe CLI for now), remove the symlink /etc/resolv.conf:

sudo rm /etc/resolv.conf

and restart NetworkManager

sudo systemctl restart NetworkManager

so NetworkManager will re-generate /etc/resolv.conf directly (no symlink) with the correct name server from the GUI config program (in my case, automatically obtained from my router).

Turns out it’s a common scene that in Linux, many DNS resolution program fight over the control over /etc/resolv.conf. NetworkManager kicks in after you disabled the rest.

76 total views, no views today

Bitlocker for Linux (Dislocker)

I regularly consolidate my disk drives to higher capacities as they are available to reduce the complexity managing many controllers, so I’ll often have to wipe the drives before I sell them (trade up). Often they are sold at very little moment’s notice, sanitizing the data might take too long. I learned that if I encrypt my data drives, I don’t really have to do much other than just clearing out the partition before I sell them, and there’s little performance penalty for Bitlocker in modern hardware.

Right now dislocker (Linux version of bitlocker) does not have a GUI to automatically unlock and mount the encrypted drives. Here’s the script that has the form “BL_{drive name}.sh” that will unencrypt the device and mount it and at the same time creating the script in the same folder to unwind (unmount & lock) the drive.

#!/bin/bash

# Extracting partition name from file name (BL_*.sh)
FN_base="$(basename -- $0)"
FN_bare="${FN_base%.*}"
partition=${FN_bare/BL_/}

# TODO: Check with /dev to make sure it's legit
echo $partition
dev_partition="/dev/$partition"

# Unlock the device into a raw image 'file'
path_raw="/media/dislocker/raw_$partition"
sudo mkdir -p $path_raw

file_raw="$path_raw/dislocker-file"
sudo dislocker $dev_partition -u -- $path_raw

# Mount the image file as a disk
path_mount="/media/dislocker/mount_$partition"
sudo mkdir -p $path_mount

sudo mount -o loop $file_raw $path_mount

# Build wind down file
script_unwind="unwind_$partition.sh"
# Leave /media/dislocker there for isolation
echo "#!/bin/bash"             > $script_unwind
echo "sudo umount $path_mount">> $script_unwind
echo "sudo rmdir $path_mount" >> $script_unwind
# Note that the website is wrong. umount the path, not the dislocker-file
echo "sudo umount $path_raw"  >> $script_unwind
echo "sudo rmdir $path_raw"   >> $script_unwind
# Make sure the "$0" is literal including the $ sign or it will
# delete this file instead of the unwind_sd*.sh file
echo "sudo rm -- \"\$0\""     >> $script_unwind
chmod +x $script_unwind


 

35 total views, 1 views today

General Linux Setup Notes

Install these:

  • Putty (or remember to use ssh -l loginName)
  • Install freerdp-x11 before installing KRDC (Remote desktop client)

Foobar2000 requires snapd to install. It doesn’t have a GUI package manager (either use “sudo snap install” or use Snap Store to find the app and click ‘Install’ directly from there)

There’s a chicken-and-egg problem with snap store though. On Linux Mint, snap-store needs to be installed with command line before the button on the web page works correctly. So there’s no way around doing this command line once: “sudo snap install snap-store”

You’d be better off just doing “sudo snap install foobar2000” if you are not going to use SnapCraft store again later.

My other favorite Windows app Notepad++ is also on snap store. Unfortunately, these are both Wine applications that Cinnamon doesn’t scale them properly with HiDPI mode. I’ll use NotepadQQ instead.

It’s a pain in the butt to deal with snap store because it won’t automatically create shorcuts on the panel or desktop. Then you cannot directly run it in the command line either because the apps are install under /snap/bin and it’s not in the path either! Add it in /etc/environment and RE-LOGIN!

There are websites that teaches you to extend the path in /etc/profile.  It’s not necessary if you did /etc/environment already. Doing both will have the path added twice!

Finally, the icons files are hidden in: /var/lib/snapd/desktop/applications and the panel icons can be anebled by linking the .desktop folders:

sudo ln -s /var/lib/snapd/desktop/applications/ /usr/share/applications/snap 

Geeze! A windows program this broken these days are not the norm. They never work right out of the box for the most natural and common use cases!


Only Evolution Mail Client supports Google accounts from GNOME online account services. Install Evolution first before adding accounts or they will be called “Unnamed” and there’s no way to change it until you remove the account and re-add.

28 total views, no views today

Input Methods (IME) in Linux: Fcitx

IBus is considered as retiring, but it’s still the default in MX Linux. Because the only Cantonese IME in Linux that allows me to swear is Andrew Choi’s CAP, which runs on fcitx, I settled for fcitx as my default IME engine.

Languages

  • Cantonese: Download the debian package for CAP
  • Japanese: Mozc is already installed
  • Simplified Chinese: Pinyin is already installed

Shortcuts (Very much like Windows):

  • Ctrl + Space: turn it on/off
  • Ctrl + Shift: switch between languages
  • Shift: in and out of temporary English mode (inactivate) within the language

31 total views, 1 views today

Linux Mint Setup Notes

Open Keyboard settings and add application/custom shortcuts:


Thunar file manager has the location/address shown as buttons. Use shortcut Ctrl+L to enable typing.

To move along GUI tabs, use Ctrl+PageUp/Down in Linux instead of Ctrl+(Shift)+Tab in Windows.

To expand/contract GUI trees, use Shift+Left/Right instead of simply Left/Right in Windows


 

Most Linux come with Samba Client (smbclient) installed that allows you to access Windows shares, the Samba Server is typically not installed by default, therefore you will need to do more work to share Linux folders with Windows. Here are the tools for a more complete experience:

  • Smb4k for viewing network shares (or use smbtree)
  • Nemo-share enables right-click to share in Cinnamon’s default file manager (nemo)

For some reason, after installing and uninstalling samba and smbclient a few times, Linux Mint stopped connecting to Windows computer (yet other SMB running MX linux can be accessed fine), despite this worked fine out of the box.

Turns out it’s this flaw (not in MX linux) that it cannot negotiate with newer SMB versions that might have been addressed but it can stuck being unable to negotiate with Windows 7 (it has SMB1 and SMB2 enabled) under certain conditions. After placing “client max protocol = NT1” in smb.conf and reboot, it worked, then I removed the line and reboot and it still worked afterwards. Weird!


Linux Mint 19 also does not resolve local hostnames from DNS right out of the box (also the live CD boot) because it came with systemd-resolve which does not handle local hostnames resolution right away.

36 total views, 1 views today

MX Linux 18 setup notes

I tried Ubuntu on my old laptop, but it was unbearably much slower than that Windows 7 so I was looking for lightweight options. After some shopping, I settled on MX Linux as the drivers worked right of out the box for the hardware and it gave me the best user experience so far.

Other than responsiveness, the deciding factor that moves me away from Ubuntu is the amount work required to get the basic things working out of the box. Internationalization is almost fully configured in MX Linux, while I had to jump a few hoops to get the VL Gothic (Japanese) font in and struggled to get the IME to switch using Ctrl+Space / Ctrl+Shift (or any default shortcut keys) like in Windows. In MX Linux, they are the defaults right away.

I was really turned off by the fact that Ubuntu’s (minimal install) default Archive Manager is half-working out of the box: I get weird errors and partial success extracting RAR files because unrar was not installed by default! It just showed the lack of consideration about user experience.


MX Linux defaults to ibus, which works right out of the box with mozc (Japanese) language support. But I’d like to have a Cantonese IME that allows me to swear (the ibus-table-cantonese package was censored), so I opted for Andrew Choi’s CAP, which runs on fcitx. He used to have an iBus version, but it was a decade ago and I couldn’t get it to install.

Turns out it’s not that MX Linux is not that prepared when you want to use Fctix. None of the languages shows up when I tried to add an IME! After a lot of googling, I realized it requires im-config, and you need to install zenify before installing im-config!

After that fcitx works like a charm: mozc, CAP works in harmony, and I can turn the IME on/off by Ctrl+Space and switch between IMEs using Ctrl+Shift (just like in the old days)


EDIT: After all the praise I have on MX Linux. I noticed it overlooked something very basic! It does not make you configure timezone during setup and it’s not easy to change it! To do it the GUI way, first you have to go to “MX Time Settings”, and you have to type in the EXACT timezone string (TZ database name)! Geeze! It’s so caveman that we still have to do this in 2019!!

How did I noticed that I forgot to change the timezone? I realized the time in my Windows keeps getting changed (suspiciously a time-zone offset like difference) after I booted into MX Linux and boot back to Windows. That’s insidious!

316 total views, 4 views today