Grub recovery after Windows update

Yesterday I updated Windows 10, BIOS and some drivers of my Dell and couldn’t run Grub, just Windows Boot Manager. I re-installed Grub from Debian recovery without succes, Windows started directly after reboot.

First fix was copy /boot/efi/EFI/debian/grubx64.efi to /boot/efi/EFI/Microsoft/Boot/bootmgrfw.efi (with backup of original file, of course) and then Grub started. But why BIOS didn’t read /boot/efi/debian/grubx64.efi?

In BIOS (Boot Sequence menu) I had 1. option “debian” and File System List was “HD(1,GPT,D6E…)” what was wrong. I deleted this option and add new one with File System List “PciRoot(0x0)/Pci(0x17,0x0)/Sata(0x2,0x0)/HD(1,GPT,D6E…)” and correct File Name “\EFI\debian\grubx64.efi” and then Grub started work.

Then I reverted back “first fix”, rename back /boot/efi/EFI/Microsoft/Boot/bootmgrfw.efi.backup to /boot/efi/EFI/Microsoft/Boot/bootmgrfw.efi and Grub starts after reboot again.

NetworkManager changes WiFi MAC address

If your WiFi is managed by NetworkManager and it has random MAC address after reboot, you can disable it in /etc/NetworkManager/NetworkManager.conf:

[device]
wifi.scan-rand-mac-address=no

[connection]
# ethernet.cloned-mac-address=permanent
wifi.cloned-mac-address=permanent

[connection] section shouldn’t be necessary nor ethernet line (it is commented).

imapfilter

Tool to filtering e-mail. Can be installed via:

sudo apt install imapfilter

Example configuration in ~/.imapfilter/configu.lua:

local posvic_eu = IMAP {
server = 'mail.posvic.eu',
username = 'my@posvic.eu',
password = '',
ssl = 'ssl3',
}

local test = IMAP {
server = 'test.email.com',
username = 'my@email.com',
password = '',
ssl = 'ssl3',
}

function print_subjects(o)
for _, msg in ipairs(filter) do
mbox, uid = table.unpack(msg)
text = mbox[uid]:fetch_message()
print(string.match(text, 'Subject:[^\n]*'))
end
end

posvic_eu.INBOX:check_status()
posvic_eu.INBOX
:contain_from('beacon-monitor@post.cz')
:contain_subject('Beacon Monitor Disk')
:move_messages(posvic_eu['Trash'])

test.INBOX:check_status()
test.INBOX
:contain_from('support@2n.cz')
:contain_subject('Ticket#')
:move_messages(test['INBOX/Automat'])
test.INBOX
:contain_from('apps@crashlytics.com')
:contain_subject('Meeting Room')
:move_messages(test['INBOX/Automat'])

Custom key for SSH

$ ssh-keygen
Enter file in which to save the key (/home/petr/.ssh/id_rsa): /home/petr/my.key
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/petr/my.key.
Your public key has been saved in /home/petr/my.key.pub.
The key fingerprint is:
SHA256:t7oRcfThgNf5w8kXl+pg6Xgso/BJtBDt4T42vFUpZ7U petr@pc
The key's randomart image is:
+---[RSA 2048]----+
|      .  .o...  .|
|     . o...+oo o.|
|      + o.. *+o.o|
|     . + + O E* .|
|      = S @ o  o |
|     . O B = .   |
|      = O =      |
|       = o       |
|        o.       |
+----[SHA256]-----+

To use this key you have 2 choices: run command

ssh -i ~/my.key posvic.eu

or edit SSH config file and specify IndetityFile for host. Then is no need to use parameter -i.

# ~/.ssh/config
Host posvic.eu
    IdentityFile ~/my.key
ssh posvic.eu

Change prompt in Ranger

In previous post I wrote about file manager Ranger. In Ranger there is keyboard shortcut Shift + S to execute shell (Bash in my case). You can modify /etc/ranger/config/rc.conf (or your local ~/.config/ranger/rc.conf) and add this line:

map S shell bash --rcfile <(cat ~/.bashrc; echo 'PS1="(ranger) $PS1"')

Then you get your prompt prefixed by (ranger) and always know you are in shell of Ranger.