nemecle.wiki
sysadmin system administration

Linux

Linux tips and notes.

Updating Linux

1 sudo apt upgrade && dist-upgrade && autoremove && autoclean

Can be aliased to fullupdate

Linux performance monitoring tools

See http://www.brendangregg.com/linuxperf.html

Using SSH as a VPN

1 ssh -NTCD 12345 SSH_remote_host_IP

Then in firefox Preference > Network Setting > Settings… proxy as socks with 127.1:12345 Or for a SSH

1 ssh -o ProxyCommand='nc -x localhost:12345 %h %p' username@Far_Away_Host

from: https://blog.gwlab.page/vpn-over-ssh-the-socks-proxy-8a8d7bdc7028

or sshuttle

Avoid have to type SSH passphrase everytime

from How to avoid being asked passphrase each time I push to Bitbucket

1 ssh-add

Post-install

Add current user to sudo:

1 usermod nemecle -aG sudo

To install missing firmware (as printed during boot sequence), this command might be enough:

1  sudo apt install firmware

Basic packages to install:

1 sudo apt install vim sysstat mlocate tmux python-pip htop rofi xbindkeys keepassxc rsync

Easy network management from terminal

the nmcli utility is very easy and useful to manage network settings, including Wi-fi connections.

For instance, listing available Wi-Fi networks:

1 nmcli d wifi list

Connecting to a wifi network:

1 nmcli d wifi connect "Super Wifi" password "John19970612"

Mounting secondary drive on boot

  1. sudo blkid
  2. sudo umount /mnt/xxx
  3. vim /etc/fstab: if in doubt, just pu UUID, mount point, FS type and "defaults 0 0"

Recovering from deleted /boot/efi (dual boot)

the "/boot/efi" partition used to boot is not exclusive to Linux: it is shared with Windows, and thus you can (and should) provide it to utility tools that fix boot. It is usually on /dev/sda2. You can ls -l /boot/efi from a functioning linux to check its content.

The command to "install" grub requires to provide the disk, not a specific partition (e.g. /dev/sda, not /dev/sda2)

The following lines are a crude hint, the full operation might require some other mounting.

First, create a live USB/CD system, and boot on it.

Then we mount the dead system to be able to work with it:

1 for i in /dev /dev/pts /proc /sys /sys/firmware/efi/efivars /run; do sudo mount -B /mnt$i; done

And we chroot to act as if we were on the dead system:

1 chroot /mnt

Then we mount the EFI partition:

1 mount /dev/sda2 /boot/efi

And finally we execute the "grub-install" command: The bootloader-id argument will be the name appearing in the EFI boot list if you go to the boot menu. Type the following command very carefully, a lot of people online seem to have errors simply due to typos:

1 sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck --debug /dev/sda

You may eventually do (once you left chroot with exit like any shell instance):

1 update-grub

vim battle hardened config

" BASIC CONFIG
set encoding=utf-8
syntax on
set nu
set rnu
set hls
set sm
set smarttab
set nocompatible
set clipboard=unnamed
set scrolloff=30
set backspace=indent,eol,start " backspace over everything in insert mode
set ignorecase  " do case insensitive search
set incsearch   " show incremental search results as you type


" STYLE
" colorscheme peachpuff
highlight LineNr ctermfg=black ctermbg=grey
let g:indentLine_color_term = 239


" MAPPING
noremap <space> :
nnoremap <F2> za " Enable folding with F2

" Always show statusline
set laststatus=2
set t_Co=256"


set foldmethod=indent
set foldlevel=99

set tabstop=4
set softtabstop=4
set shiftwidth=4
set textwidth=79
set wrapmargin=0
set expandtab
set autoindent
set fileformat=unix

" web
au BufNewFile,BufRead *.html,*.css,*js
    \ set tabstop=2 |
    \ set softtabstop=2 |
    \ set shiftwidth=2

" to test
" Bind  key to run python3
" map  :w\|!python3 %
" " Bind  key to run doctests in a python3 module
" map  :w\|!python3 -m doctest %
" " Bind  key to run doctests with verbose output
" map  :w\|!python3 -m doctest -v %
" " Bind  key to run pep8 Python style checker
" map  :w\|!pep8 %

Changing the theme for GTK from CLI

(for instance, If you use typical GTK utilities in i3)

1 vim $HOME/.config/gtk-3.0/settings.ini

Example config:

1 [Settings]
2 gtk-icon-theme-name = Paper
3 gtk-theme-name = Arc-Darker
4 gtk-font-name = DejaVu Sans 11

ffmpeg

Creating a timelapse

1 timelapse: ffmpeg -framerate 30 -pattern_type glob -i '*.jpg' -c:v libx264 -r 30 -pix_fmt yuv420p -s hd1080 out.mp4

Concatenate ".ts" files from local record

For instance, if you made a local record using OBS

Create file list:

File order might be wrong, to fix

1 (for %i in (*.ts) do @echo file '%i') > mylist.txt

Then concatenate to a single mp4 file:

1 ffmpeg -f concat -i mylist.txt -c copy output.mp4

Wacom tablet configuration

CLI commands for left-handed, second screen excluded:

1 xsetwacom set "Wacom Bamboo 16FG 4x5 Pen stylus" rotate HALF
2 xsetwacom set "Wacom Bamboo 16FG 4x5 Pen eraser" rotate HALF
3 xsetwacom set "Wacom Bamboo 16FG 4x5 Pen stylus" MapToOutPut 1920x1080+0+0
4 xsetwacom set "Wacom Bamboo 16FG 4x5 Pen eraser" MapToOutPut 1920x1080+0+0

To debug: (from Measuring level of pressure in wacom, tablets or other devices)

  • Windows: java JWinPointer.
  • Linux sudo apt-get install evemu-tools evtest, then sudo evtest (sudo is necessary)

the GIMP configuration: https://digimend.github.io/support/howto/apps/gimp/

"can't read superblock"

Not necessarly a drive fault, can for instance mean that it doesn't have enough power for external drive https://askubuntu.com/questions/539880/cant-mount-an-ide-hdd-cant-read-superblock-error-message

debugging CLI software

Set LD_DEBUG environment variable

Safe bash script boilerplate

from full boilerplate here https://betterdev.blog/minimal-safe-bash-script-template/

Add right after shebang:

1 set -Eeuo pipefail

Direct kernel communication through key combo

Can be useful in case of partially stalled or locked system

Alt, press SysRq (The SysRq being the Print Screen key), release SysRq, press <command key>, Hit ALT-SysRq-<command key>, release everything.

Or if possible,

1 echo t > /proc/sysrq-trigger

with t being the command key.

See the wikipedia page for full command key list.

Can't beat a tool that has a "Perform a system crash" feature.

Managing multiple screens from CLI/i3wm

install xrandr. On debian, do:

sudo apt install x11-xserver-utils

More often than not, this is enough:

xrandr --auto

to see possible settings, type:

xrandr

to add a second screen next to a 2560x1440, plugged on HDMI2:

xrandr --output HDMI-2 --pos 2560x0 --mode 1920x1080 --rate 60

Remove a screen:

xrandr --output HDMI-2 --off