Merge branch 'dev' into vhs
This commit is contained in:
commit
30bc3b7055
21
Makefile
21
Makefile
@ -4,6 +4,8 @@ EDITOR ?= vi
|
||||
FZF != command -v sk || command -v fzy || command -v fzf || \
|
||||
{ echo install a fuzzy finder && exit 1 ;}
|
||||
|
||||
spill_contents = sed -e '1,/---/d'
|
||||
|
||||
help: ## Print the help message
|
||||
@awk 'BEGIN {FS = ":.*?## "} /^[0-9a-zA-Z._-]+:.*?## / {printf "\033[36m%s\033[0m : %s\n", $$1, $$2}' $(MAKEFILE_LIST) | \
|
||||
sort | \
|
||||
@ -11,31 +13,38 @@ help: ## Print the help message
|
||||
|
||||
articles != find * -type f -name "*.md"
|
||||
|
||||
categories != ls -d */
|
||||
dirs != ls -d */
|
||||
categories = $(patsubst %/, %, $(dirs))
|
||||
|
||||
databases = $(patsubst %/, .dbs/%.rec, $(categories))
|
||||
databases = $(patsubst %, .dbs/%.rec, $(categories))
|
||||
|
||||
default += $(databases)
|
||||
|
||||
$(databases): .dbs/%.rec: %/ | .dbs/
|
||||
$(foreach dir, $(categories), \
|
||||
$(eval .dbs/$(dir).rec: $(wildcard $(dir)/*)) \
|
||||
)
|
||||
|
||||
$(databases): .dbs/%.rec: %/
|
||||
$(info making $(@F))
|
||||
mkdir -p $(@D)
|
||||
@mkdir -p $(@D)
|
||||
for entry in $(shell find $< -type f -name "*.md") ; do \
|
||||
sed -n '2,/^---$$/ {/^---$$/d; p}' "$$entry" |\
|
||||
sed -e 's/\[ //' -e 's/ \]//' |\
|
||||
tr -d '"' ;\
|
||||
printf "wordcount: %s\n" "$$(wc -w < $$entry)" ;\
|
||||
printf "file: %s\n\n" "$$entry" ;\
|
||||
done >> $@
|
||||
done > $@
|
||||
for entry in $(shell find $< -type f -name "*.md"); do \
|
||||
recset $@ -e "file = '$${entry}'" -f wordcount --set-add="$$(wc -w < $${entry})" ;\
|
||||
recset $@ -e "file = '$${entry}'" -f content --set-add="$$($(spill_contents) $${entry})" ;\
|
||||
done
|
||||
|
||||
db.rec: $(databases)
|
||||
printf '%s\n' '%rec: guide' > $@
|
||||
printf '%s\n' '%key: title' >> $@
|
||||
printf '%s\n' '%type: wordcount int' >> $@
|
||||
printf '%s\n\n' '%sort: title' >> $@
|
||||
cat $^ >> $@
|
||||
recsel $^ >> $@
|
||||
recsel $@ -e "requires != ''" -CR title,requires |\
|
||||
while read title requires; do \
|
||||
IFS=', ' && for provider in $$requires; do \
|
||||
|
@ -20,6 +20,7 @@ recsel db.rec -q gpg
|
||||
recsel db.rec -e "title = 'ssh'"
|
||||
recsel db.rec -e "title ~ 'ssh'"
|
||||
recsel db.rec -e "title ~ 'bash'" -R title,wordcount
|
||||
recsel db.rec -m 1 -P content | less -R
|
||||
```
|
||||
|
||||
# Style
|
||||
|
@ -1,34 +0,0 @@
|
||||
---
|
||||
title: "kernel"
|
||||
tags: [ "Basics" ]
|
||||
---
|
||||
## Living Space
|
||||
|
||||
Kernel modules live in lib/modules/$(uname -r)
|
||||
|
||||
## Change
|
||||
|
||||
Load them with
|
||||
|
||||
```bash
|
||||
sudo modprobe ath9k
|
||||
```
|
||||
|
||||
Or remove one with
|
||||
|
||||
```bash
|
||||
sudo modprove uvcvideo
|
||||
```
|
||||
|
||||
The PC's irritating speaker beep can be really annoying. Disable it with:
|
||||
|
||||
```bash
|
||||
sudo modprobe -r pcspeaker
|
||||
```
|
||||
|
||||
Permanently disable a module by blacklisting it in `/etc/modprobe.d`:
|
||||
|
||||
```bash
|
||||
echo 'blacklist pcspkr' > /etc/modprobe.d/*nobeep*.conf
|
||||
```
|
||||
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
title: "Base 16"
|
||||
tags: [ "Data" ]
|
||||
tags: [ "data" ]
|
||||
---
|
||||
|
||||
```bash
|
||||
|
@ -5,5 +5,10 @@ tags: [ "data", "calendar", "daylight savings" ]
|
||||
|
||||
## Setup
|
||||
|
||||
The UK government keeps an ics file with clock, [here](https://www.gov.uk/when-do-the-clocks-change/united-kingdom.ics).
|
||||
The UK government keeps an `ics` file with clock.
|
||||
|
||||
```sh
|
||||
wget https://www.gov.uk/when-do-the-clocks-change/united-kingdom.ics
|
||||
calcurse -i united-kingdom.ics
|
||||
```
|
||||
|
||||
|
@ -9,10 +9,10 @@ Install `opensmtpd` (or similar), then `ncat` or `nc` or `netcat` (this mysterio
|
||||
|
||||
Start the `opensmtpd` service, then use netcat to speak with the mail-daemon:
|
||||
|
||||
|
||||
```
|
||||
```sh
|
||||
nc localhost 25
|
||||
```
|
||||
|
||||
The computer should respond with code `220`, which means 'I am listening'.
|
||||
|
||||
> 220 hex ESMTP OpenSMTPD
|
||||
@ -40,7 +40,7 @@ Tell the mail daemon who you are in this format.
|
||||
|
||||
Then tell it who you're sending to.
|
||||
|
||||
```
|
||||
```sh
|
||||
RCPT TO: <www@dmz.rs>
|
||||
```
|
||||
|
||||
@ -67,7 +67,7 @@ You will find the email under `/var/spool` or `/var/mail` or similar.
|
||||
|
||||
If unsure, just take a part of your email, like `FRAGMENT="turn off server please"`, then `grep` for it:
|
||||
|
||||
```bash
|
||||
```sh
|
||||
sudo grep -r $FRAGMENT /var/spool/*
|
||||
```
|
||||
|
||||
|
@ -1,17 +1,17 @@
|
||||
---
|
||||
title: "exiftool"
|
||||
tags: [ "Metadata" ]
|
||||
tags: [ "metadata", "exifdata" ]
|
||||
---
|
||||
|
||||
Find metadata.
|
||||
Find metadata:
|
||||
|
||||
```bash
|
||||
exiftool image.jpg
|
||||
```sh
|
||||
exiftool "$file".jpg
|
||||
```
|
||||
|
||||
Find info on all images in current directory.
|
||||
Find info on all `.png` images in current directory.
|
||||
|
||||
```bash
|
||||
```sh
|
||||
exiftool -ext .png .
|
||||
```
|
||||
|
||||
@ -19,22 +19,14 @@ You can make this recurring with the -r switch.
|
||||
|
||||
And overwrite all metadata:
|
||||
|
||||
```bash
|
||||
```sh
|
||||
exiftool -all= -overwrite_original -ext jpg .
|
||||
```
|
||||
(NB: This does not work on pdf data. See [here](pdf_erasure.md) for erasing all pdf data)
|
||||
|
||||
Or just GPS data:
|
||||
|
||||
```bash
|
||||
```sh
|
||||
exiftool -gps:all= *.jpg
|
||||
```
|
||||
|
||||
You can also use the imagemagick tool:
|
||||
|
||||
```bash
|
||||
identify -verbose
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
@ -1,24 +1,72 @@
|
||||
---
|
||||
title: "git-lfs"
|
||||
tags: [ "data" ]
|
||||
tags: [ "data", "git" ]
|
||||
---
|
||||
|
||||
Install, and add with
|
||||
Git Large File Storage ('LFS') needs to change your `~/.gitconfig` to check out those binary files:
|
||||
|
||||
```bash
|
||||
```sh
|
||||
cat ~/.gitconfig
|
||||
git lfs install
|
||||
cat ~/.gitconfig
|
||||
```
|
||||
|
||||
Then track some filetype with:
|
||||
Then track some filetypes with:
|
||||
|
||||
```bash
|
||||
git lfs track "\*.ttf"
|
||||
```sh
|
||||
cd $git_repository
|
||||
ext=ttf
|
||||
git lfs track "*.$ext"
|
||||
```
|
||||
|
||||
Or a directory with:
|
||||
|
||||
```bash
|
||||
```sh
|
||||
git lfs track "images/"
|
||||
```
|
||||
|
||||
All changes require adding `.gitattributes`.
|
||||
Track the changes to `.gitattributes`:
|
||||
|
||||
```sh
|
||||
git status
|
||||
git add .gitattributes
|
||||
git commit -m "add $ext to lfs"
|
||||
```
|
||||
|
||||
## Bash Completion
|
||||
|
||||
If bash completion does not work, you'll have to add it:
|
||||
|
||||
```sh
|
||||
git lfs completion bash | sudo tee /usr/share/bash-completion/completions/git-lfs
|
||||
```
|
||||
|
||||
## Trouble Shooting
|
||||
|
||||
You have some file "$FILE".png, which has some problem.
|
||||
|
||||
Check the filetype:
|
||||
|
||||
```sh
|
||||
file "$FILE".png
|
||||
```
|
||||
|
||||
This should say the type is 'image'.
|
||||
If it says the type is 'text', then this file is really just a reminder to `git-lfs` to check out that file.
|
||||
|
||||
Check `git-lfs` is expecting that file:
|
||||
|
||||
```sh
|
||||
git lfs status
|
||||
git lfs ls-files
|
||||
```
|
||||
|
||||
...then try these commands, and check the filetype again:
|
||||
|
||||
```sh
|
||||
git lfs fetch --all
|
||||
git lfs fsck
|
||||
git lfs checkout
|
||||
git lfs status
|
||||
```
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
title: "git"
|
||||
title: "git subtree"
|
||||
tags: [ "data", "git", "subtree" ]
|
||||
---
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
title: "gpg"
|
||||
tags: [ "data", "GPG" ]
|
||||
tags: [ "data", "gpg" ]
|
||||
---
|
||||
|
||||
- [Setup](gpg/basics.md)
|
||||
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
title: "gpg"
|
||||
title: "gpg with vim"
|
||||
tags: [ "vim", "data", "GPG" ]
|
||||
requires: [ "GPG Basics", "vim basics" ]
|
||||
---
|
||||
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
title: "groff"
|
||||
tags: [ "Data" ]
|
||||
tags: [ "data", "logic" ]
|
||||
---
|
||||
# Basic Documents
|
||||
|
||||
|
@ -4,57 +4,49 @@ tags: [ "Data" ]
|
||||
---
|
||||
Get the basic config:
|
||||
|
||||
```bash
|
||||
```sh
|
||||
mkdir ~/.config/khard
|
||||
```
|
||||
|
||||
```bash
|
||||
```sh
|
||||
cp /usr/share/doc/khard/examples/khard/khard.conf.example ~/.config/khard.conf
|
||||
```
|
||||
|
||||
Short list
|
||||
|
||||
```bash
|
||||
```sh
|
||||
khard list
|
||||
```
|
||||
|
||||
Longer list
|
||||
|
||||
```bash
|
||||
```sh
|
||||
khard show
|
||||
```
|
||||
|
||||
Show from addressbook 'work'
|
||||
|
||||
```bash
|
||||
```sh
|
||||
khard list -a work
|
||||
```
|
||||
|
||||
Make a new contact in address book 'family'
|
||||
|
||||
```bash
|
||||
```sh
|
||||
khard new -a family
|
||||
```
|
||||
|
||||
```bash
|
||||
```sh
|
||||
khard edit grampa
|
||||
```
|
||||
|
||||
```bash
|
||||
```sh
|
||||
khard remove bob
|
||||
```
|
||||
|
||||
Move contact 'nina' from 'work' to 'home' address book.
|
||||
|
||||
```bash
|
||||
```sh
|
||||
khard move -a home nina -A work
|
||||
```
|
||||
|
||||
## Advanced
|
||||
|
||||
Merge:
|
||||
|
||||
```bash
|
||||
khard merge [-a source_abook] [-u uid|search terms [search terms ...]] [-A target_abook] [-U target_uid|-t target_search_terms]
|
||||
```
|
||||
|
||||
|
14
data/pass.md
14
data/pass.md
@ -1,42 +1,42 @@
|
||||
---
|
||||
title: "pass"
|
||||
tags: [ "data" ]
|
||||
requires: "GPG Basics"
|
||||
---
|
||||
[Video instructions](https://www.hooktube.com/watch?v=hlRQTj1D9LA)
|
||||
|
||||
Setup [gpg](./gpg.md) keys.
|
||||
|
||||
Show your gpg secret it:
|
||||
|
||||
```bash
|
||||
```sh
|
||||
gpg --list-secret-keys
|
||||
```
|
||||
|
||||
Then use the id number under `sec` to make a pass repo:
|
||||
|
||||
```bash
|
||||
```sh
|
||||
KEY="$(gpg --list-secret-keys | grep -m 1 -A1 '^sec' | tail -n 1)"
|
||||
```
|
||||
|
||||
```bash
|
||||
```sh
|
||||
pass init $KEY
|
||||
```
|
||||
|
||||
To add a basic password, e.g. for `$WEBSITE`:
|
||||
|
||||
```bash
|
||||
```sh
|
||||
pass $WEBSITE
|
||||
```
|
||||
|
||||
To insert a multiline password, e.g. with a login name:
|
||||
|
||||
```bash
|
||||
```sh
|
||||
pass add -m $WEBSITE
|
||||
```
|
||||
|
||||
Remove a password:
|
||||
|
||||
```bash
|
||||
```sh
|
||||
pass rm $WEBSITE
|
||||
```
|
||||
|
||||
|
@ -2,7 +2,8 @@
|
||||
title: "pdf to txt"
|
||||
tags: [ "data", "pdf", "ocr" ]
|
||||
---
|
||||
How to translate pdf book images to text (results are very poor, and will need lots of corrections).
|
||||
|
||||
How to translate pdfs to text (results are very poor, and will need lots of corrections).
|
||||
|
||||
## Dependencies
|
||||
|
||||
@ -17,8 +18,8 @@ pdftoppm -png *file*.pdf test
|
||||
```
|
||||
|
||||
```bash
|
||||
for x in \*png; do
|
||||
tesseract -l eng "$x" - >> *out*.txt
|
||||
for x in *png; do
|
||||
tesseract -l eng "$x" - >> out.txt
|
||||
done
|
||||
```
|
||||
|
||||
|
@ -44,6 +44,9 @@ recset -f "$new_field" --delete $database
|
||||
|
||||
- [Extended example](recfiles/extended.md)
|
||||
- [Playing with board games data](recfiles/Board_Games.md)
|
||||
- [Playing with IP addresses](recfiles/IP_ASN.md)
|
||||
- [Manage LaTeX Bibliographies](recfiles/bibliography.md)
|
||||
- [Fixes](recfiles/recfixes.md)
|
||||
|
||||
# Resources
|
||||
|
||||
|
16
data/recfiles/IP_ASN.md
Normal file
16
data/recfiles/IP_ASN.md
Normal file
@ -0,0 +1,16 @@
|
||||
---
|
||||
title: "IP Addresses with Recfiles"
|
||||
tags: [ "data", "recfiles", "games" ]
|
||||
requires: "Recfiles"
|
||||
---
|
||||
|
||||
## Download the Database
|
||||
|
||||
Download the csv data, and separate the ipv4 data from the ipv6.
|
||||
|
||||
```sh
|
||||
curl -Lo ips.zip 'https://www.kaggle.com/api/v1/datasets/download/ipinfo/ipinfo-country-asn'
|
||||
unzip -p ips.zip country_asn.csv | csv2rec | recsel -e "start_ip ~ '\.'" > ipv4.rec
|
||||
unzip -p ips.zip country_asn.csv | csv2rec | recsel -e "start_ip ~ '::'" > ipv6.rec
|
||||
```
|
||||
|
121
data/recfiles/bibliography.md
Normal file
121
data/recfiles/bibliography.md
Normal file
@ -0,0 +1,121 @@
|
||||
---
|
||||
title: "Recfile Bibliography for TeX"
|
||||
tags: [ "data", "database", "recfiles", "tex" ]
|
||||
requires: [ "Recfiles", "TeX", "Makefile" ]
|
||||
---
|
||||
|
||||
Store your bibliography in a `recfile` database, then extract any part with `make`.
|
||||
|
||||
For example, you could store books like this in `bibliography.rec`:
|
||||
|
||||
```recfile
|
||||
%rec: book
|
||||
%key: slug
|
||||
|
||||
slug: thinkingexperience
|
||||
author: H. H. Price
|
||||
title: Thinking and Experience
|
||||
year: 1953
|
||||
publisher: Harvard University Press, Cambridge
|
||||
|
||||
slug: inventingrightwrong
|
||||
author: John Leslie Mackie
|
||||
title: Inventing Right and Wrong
|
||||
year: 1997
|
||||
publisher: Penguin Books, England
|
||||
|
||||
```
|
||||
|
||||
Run `make book` to extract `book.bib`, ready for LaTeX to use:
|
||||
|
||||
```bib
|
||||
@book{thinkingexperience,
|
||||
author = {H. H. Price},
|
||||
title = {Thinking and Experience},
|
||||
year = {1953},
|
||||
publisher = {Harvard University Press, Cambridge},
|
||||
}
|
||||
|
||||
@book{inventingrightwrong,
|
||||
author = {John Leslie Mackie},
|
||||
title = {Inventing Right and Wrong},
|
||||
year = {1997},
|
||||
publisher = {Penguin Books, England},
|
||||
}
|
||||
```
|
||||
|
||||
The `makefile` syntax is just a few lines (though admittedly employs some garbled shell-crud):
|
||||
|
||||
```make
|
||||
bibs != grep -Po '%rec: \K.*' bibliography.rec
|
||||
bibfiles = $(patsubst %, %.bib, $(bibs))
|
||||
|
||||
$(bibfiles): %.bib: bibliography.rec
|
||||
recsel $< -t $(basename $@) |\
|
||||
sed 's/slug: \(.*\)/@$(basename $@){\1,/g' |\
|
||||
sed 's/^\(\b.*\b\): \(.*\)/ \1 = {\2},/gI' |\
|
||||
sed 's/^$$/}\n/g' > $@
|
||||
echo '}' >> $@
|
||||
```
|
||||
|
||||
Here's a longer `bibliography.rec` file, which can also produce `article.bib`:
|
||||
|
||||
```recfile
|
||||
%rec: book
|
||||
%key: slug
|
||||
%type: year int
|
||||
%constraint: year > -2000
|
||||
%sort: year month
|
||||
|
||||
slug: thinkingexperience
|
||||
author: H. H. Price
|
||||
title: Thinking and Experience
|
||||
year: 1953
|
||||
publisher: Harvard University Press, Cambridge
|
||||
|
||||
slug: inventingrightwrong
|
||||
author: John Leslie Mackie
|
||||
title: Inventing Right and Wrong
|
||||
year: 1997
|
||||
publisher: Penguin Books, England
|
||||
|
||||
slug: metaphysicscontemporaryintro
|
||||
author: Michael J. Loux
|
||||
title: Metaphysics: A Contemporary Introduction
|
||||
year: 1998
|
||||
publisher: Routledge, London
|
||||
|
||||
slug: pluralityworlds
|
||||
author: David Lewis
|
||||
title: On the Plurality of Worlds
|
||||
publisher: Blackwell Publishing, Oxford
|
||||
year: 2001
|
||||
|
||||
%rec: article
|
||||
%key: slug
|
||||
%sort: year month
|
||||
|
||||
slug: genuinerealisttheory
|
||||
author: John Divers
|
||||
title: A Genuine Realist Theory of Advanced Modalizing
|
||||
year: 1999
|
||||
pages: 217–240
|
||||
month: april
|
||||
journaltitle: Mind
|
||||
uri: https://academic.oup.com/mind/article-abstract/108/430/217/975258?redirectedFrom=fulltext
|
||||
volume: 108
|
||||
publisher: Harvard University Press, Cambridge
|
||||
|
||||
slug: twokindsmentalrealism
|
||||
author: Tam\'{a}s Demeter
|
||||
title: Two Kinds of Mental Realism
|
||||
year: 2009
|
||||
pages: 40:59-71
|
||||
uri: https://www.researchgate.net/profile/Tamas_Demeter2/publication/41554923_Two_Kinds_of_Mental_Realism/links/0deec53247f5a4ae21000000.pdf
|
||||
month: august
|
||||
journaltitle: Journal for General Philosophy of Science
|
||||
volume: 30
|
||||
publisher: Harvard University Press, Cambridge
|
||||
|
||||
```
|
||||
|
33
data/recfiles/recfixes.md
Normal file
33
data/recfiles/recfixes.md
Normal file
@ -0,0 +1,33 @@
|
||||
---
|
||||
title: "Recfixes"
|
||||
tags: [ "data", "recfiles" ]
|
||||
requires: "Recfiles"
|
||||
---
|
||||
|
||||
Sometimes `recsel` chokes on a large query, and you need to break the query into chunks with a pipe.
|
||||
|
||||
This Kickstarter file has 374,853 records.
|
||||
Here's the chonky query:
|
||||
|
||||
```sh
|
||||
recsel kick.rec -e "Category = 'Games'" -p "Subcategory,Avg(Goal)" -G Subcategory
|
||||
```
|
||||
|
||||
It breaks down like this:
|
||||
|
||||
| Chunk | Meaning |
|
||||
|:-----------------------------:|:---------------------------------------------:|
|
||||
| `recsel kick.rec` | Select records from `kick.rec` |
|
||||
| `-e "Category = 'Games'"` | Select only records where Category = 'Games' |
|
||||
| `-p "Subcategory,Avg(Goal)"` | Print the Subcategory and average goal |
|
||||
| `-G "Subcategory"` | Group by subcategory |
|
||||
|
||||
Two ways to break the query apart:
|
||||
|
||||
```sh
|
||||
recsel kick.rec -e "Category = 'Games'" | recsel -p "Subcategory,Avg(Goal)" -G "Subcategory"
|
||||
|
||||
recsel kick.rec -e "Category = 'Games'" > games.rec
|
||||
recsel games.rec -p "Subcategory" -G "Subcategory"
|
||||
```
|
||||
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
title: "fonts"
|
||||
tags: [ "distros" ]
|
||||
title: "Ach Linux GPU Setup"
|
||||
tags: [ "arch", "GPU" ]
|
||||
---
|
||||
# Step 1: Multilib
|
||||
|
||||
@ -60,4 +60,3 @@ You should see 'true' here.
|
||||
```bash
|
||||
sudo pacman -S --needed lib32-mesa vulkan-radeon lib32-vulkan-radeon vulkan-icd-loader lib32-vulkan-icd-loader xf86-video-amdgpu
|
||||
```
|
||||
|
||||
|
@ -9,7 +9,7 @@ This works everywhere, including in a bare-ass tty.
|
||||
|
||||
Select a keymap, and create a new custom map.
|
||||
|
||||
```bash
|
||||
```sh
|
||||
su root
|
||||
|
||||
basemap=/usr/share/kbd/keymaps/i386/qwerty/pl1.map.gz
|
||||
@ -22,7 +22,7 @@ gunzip -c $basemap | \
|
||||
|
||||
Tell the system to use this keymap at startup by naming it in the `rc.conf` file:
|
||||
|
||||
```bash
|
||||
```sh
|
||||
echo "KEYMAP=$newmap" >> /etc/rc.conf
|
||||
|
||||
cat /etc/rc.conf
|
||||
@ -33,24 +33,24 @@ reboot
|
||||
|
||||
Set layout to British English.
|
||||
|
||||
```bash
|
||||
```sh
|
||||
setxkbmap -layout gb
|
||||
```
|
||||
|
||||
Or Polish with:
|
||||
|
||||
```bash
|
||||
```sh
|
||||
setxkbmap -layout pl
|
||||
```
|
||||
|
||||
| Language | short |
|
||||
|:--------|:------|
|
||||
| Polish | pl |
|
||||
| Serbian | rs |
|
||||
|:---------|:------|
|
||||
| Polish | `pl` |
|
||||
| Serbian | `rs` |
|
||||
|
||||
Set 'alt + shift', as the command which cycles through the British English, Polish and Serbian keyboard layout.
|
||||
|
||||
```bash
|
||||
```sh
|
||||
setxkbmap -layout gb,pl,rs -option grp:alt_shift_toggle
|
||||
```
|
||||
|
||||
|
@ -1,7 +1,8 @@
|
||||
---
|
||||
title: "wifi"
|
||||
title: "network"
|
||||
tags: [ "Networking" ]
|
||||
---
|
||||
|
||||
# Netstat Stuff
|
||||
|
||||
Stats on local net usage within domain.
|
||||
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
title: "wireguard"
|
||||
tags: [ "Networking", "VPN" ]
|
||||
tags: [ "networking", "VPN" ]
|
||||
---
|
||||
<!--
|
||||
from
|
||||
@ -11,25 +11,22 @@ https://engineerworkshop.com/blog/how-to-set-up-wireguard-on-a-raspberry-pi/
|
||||
|
||||
Install `wireguard-tools` on the server.
|
||||
|
||||
```bash
|
||||
sudo -i
|
||||
```
|
||||
|
||||
```bash
|
||||
```sh
|
||||
su root
|
||||
cd /etc/wireguard
|
||||
```
|
||||
|
||||
umask 077
|
||||
|
||||
```bash
|
||||
```sh
|
||||
wg genkey | tee server_private_key | wg pubkey > server_public_key
|
||||
```
|
||||
|
||||
```bash
|
||||
```sh
|
||||
wg genkey | tee client_private_key | wg pubkey > client_public_key
|
||||
```
|
||||
|
||||
```bash
|
||||
```sh
|
||||
echo "
|
||||
[Interface]
|
||||
Address = 10.0.0.1/24
|
||||
@ -46,20 +43,20 @@ wg genkey | tee client_private_key | wg pubkey > client_public_key
|
||||
" > /etc/wireguard/wg0.conf
|
||||
```
|
||||
|
||||
```bash
|
||||
```sh
|
||||
echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/wg.conf
|
||||
```
|
||||
|
||||
```bash
|
||||
```sh
|
||||
systemctl enable --now wg-quiqck@wg0
|
||||
```
|
||||
|
||||
```bash
|
||||
```sh
|
||||
chown -R root:root /etc/wireguard/
|
||||
```
|
||||
|
||||
```bash
|
||||
chmod -R og-rwx /etc/wireguard/\*
|
||||
```sh
|
||||
chmod -R og-rwx /etc/wireguard/*
|
||||
```
|
||||
|
||||
Forward traffic from port 51900 to the server.
|
||||
@ -72,21 +69,25 @@ Install `wireguard-tools` on the client.
|
||||
|
||||
Copy the client private key and server public key to the server (or just fill in the variables).
|
||||
|
||||
> server_ip=*your server's public ip*
|
||||
|
||||
echo "
|
||||
[Interface]
|
||||
Address = 10.0.0.2/32
|
||||
PrivateKey = $(cat client_private_key)
|
||||
DNS = 9.9.9.9
|
||||
|
||||
[Peer]
|
||||
PublicKey = $(cat server_public_key)
|
||||
Endpoint = $(echo $server_ip:51900)
|
||||
AllowedIPs = 0.0.0.0/0, ::/0
|
||||
" > /etc/wireguard/wg0-client.conf
|
||||
```sh
|
||||
server_ip=$PUBLIC_IP
|
||||
|
||||
> wg-quick up wg0-client
|
||||
echo "
|
||||
[Interface]
|
||||
Address = 10.0.0.2/32
|
||||
PrivateKey = $(cat client_private_key)
|
||||
DNS = 9.9.9.9
|
||||
|
||||
[Peer]
|
||||
PublicKey = $(cat server_public_key)
|
||||
Endpoint = $(echo $server_ip:51900)
|
||||
AllowedIPs = 0.0.0.0/0, ::/0
|
||||
" > /etc/wireguard/wg0-client.conf
|
||||
|
||||
wg-quick up wg0-client
|
||||
|
||||
```
|
||||
|
||||
## Extras
|
||||
|
||||
@ -98,6 +99,6 @@ Add multiple peers by copying the `[peer]` section (they each get called `peer`)
|
||||
|
||||
Make a standard client configuration, then:
|
||||
|
||||
```bash
|
||||
```sh
|
||||
qrencode -t ansiutf8 < /etc/wireguard/mobile_user.conf
|
||||
```
|
||||
|
@ -1,60 +1,63 @@
|
||||
---
|
||||
title: "wireless"
|
||||
tags: [ "Networking" ]
|
||||
tags: [ "networking" ]
|
||||
---
|
||||
|
||||
# Check wifi's working
|
||||
```bash
|
||||
Check wifi's working
|
||||
|
||||
```sh
|
||||
lspci -k
|
||||
```
|
||||
|
||||
Or for usb wifi:
|
||||
|
||||
```bash
|
||||
```sh
|
||||
dmesg | grep usbcore
|
||||
```
|
||||
|
||||
... and hopefully it'll say the new interface is registered.
|
||||
...and hopefully it'll say the new interface is registered.
|
||||
|
||||
# Check if a wifi interface has been created
|
||||
Check if a wifi interface has been created
|
||||
|
||||
```bash
|
||||
```sh
|
||||
ip link
|
||||
```
|
||||
|
||||
or
|
||||
...or
|
||||
|
||||
```bash
|
||||
```sh
|
||||
iw dev
|
||||
```
|
||||
|
||||
Assuming it's wlan0, bring it up with
|
||||
|
||||
```bash
|
||||
```sh
|
||||
ip link set wlan0 up
|
||||
```
|
||||
|
||||
Error messages probably means your wireless chipset requires a firmware to function. In this case, check the kernel messages for firmware being loaded
|
||||
|
||||
```bash
|
||||
```sh
|
||||
dmesg | grep firmware
|
||||
```
|
||||
|
||||
# Utilities
|
||||
|
||||
iw doesn't do wpa/wpa2. wpa_supplicant does everything. iwd does everything except WEXT encryption.
|
||||
- `iw` doesn't do wpa/wpa2.
|
||||
- `iwd` does everything except WEXT encryption.
|
||||
- `wpa_supplicant` does everything.
|
||||
|
||||
# Connecting
|
||||
|
||||
Get the link status:
|
||||
|
||||
```bash
|
||||
```sh
|
||||
iw dev wlan0 link
|
||||
```
|
||||
|
||||
Scan for available points:
|
||||
|
||||
```bash
|
||||
```sh
|
||||
iw dev wlan0 scan
|
||||
```
|
||||
|
||||
|
@ -3,55 +3,55 @@ title: "wpa_supplicant"
|
||||
tags: [ "Networking" ]
|
||||
---
|
||||
|
||||
wpa_supplicant configurations are stored in /etc/wpa_supplicant/wpa_supplicant-wlan0 (or equivalent).
|
||||
`wpa_supplicant` configurations are stored in `/etc/wpa_supplicant/wpa_supplicant-wlan0` (or equivalent).
|
||||
|
||||
## WiFi Connection
|
||||
|
||||
```bash
|
||||
```sh
|
||||
wpa_cli
|
||||
```
|
||||
|
||||
Once in, scan the network, add an empty place to store credentials, then input them.
|
||||
|
||||
```bash
|
||||
```sh
|
||||
scan
|
||||
```
|
||||
|
||||
```bash
|
||||
```sh
|
||||
scan_results
|
||||
```
|
||||
|
||||
```bash
|
||||
```sh
|
||||
add_network
|
||||
```
|
||||
|
||||
This outputs a network number, e.g. '3'. This is the new network you'll work with.
|
||||
|
||||
```bash
|
||||
```sh
|
||||
set_network *3* ssid *"Kosachok Cafe"*
|
||||
```
|
||||
|
||||
```bash
|
||||
```sh
|
||||
set_network 3 psk *"Kosachok2019"*
|
||||
```
|
||||
|
||||
OR (for no password)
|
||||
|
||||
```bash
|
||||
```sh
|
||||
set_network *3* key_mgmt NONE
|
||||
```
|
||||
|
||||
```bash
|
||||
```sh
|
||||
enable_network 3
|
||||
```
|
||||
|
||||
```bash
|
||||
```sh
|
||||
save_config
|
||||
```
|
||||
|
||||
This takes a while to connect, so to speed things up, restart the service:
|
||||
|
||||
```bash
|
||||
```sh
|
||||
sudo sv restart wpa_supplicant
|
||||
```
|
||||
|
||||
@ -59,13 +59,13 @@ sudo sv restart wpa_supplicant
|
||||
|
||||
You can script like this:
|
||||
|
||||
```bash
|
||||
```sh
|
||||
wpa_cli add_network
|
||||
```
|
||||
|
||||
That returns an ID, so you can say:
|
||||
|
||||
```bash
|
||||
```sh
|
||||
newNetwork="$(wpa_cli add_network)"
|
||||
```
|
||||
|
||||
@ -73,19 +73,19 @@ Then `$newNetwork` would equal that number, and you can add/ remove networks wit
|
||||
|
||||
But remember to escape the quotes, so adding a network would be:
|
||||
|
||||
```bash
|
||||
```sh
|
||||
wpa_cli set_network *3* psk *\""passphrase"\"*
|
||||
```
|
||||
|
||||
## Generating Keys Manually
|
||||
|
||||
```bash
|
||||
```sh
|
||||
wpa_passphrase [ssid] [password]
|
||||
```
|
||||
|
||||
For example:
|
||||
|
||||
```bash
|
||||
```sh
|
||||
wpa_passphrase 'Cafe Kosachok' 'Kosachok2019'
|
||||
```
|
||||
|
||||
@ -95,8 +95,11 @@ If you encounter problems, you will probably need to delete the old device pid i
|
||||
|
||||
Next up, start wpa_supplicant:
|
||||
|
||||
```bash
|
||||
```sh
|
||||
wpa_supplicant -B -iwlan0 -c /etc/wpa_supplicant/wpa_supplicant-wlan0
|
||||
```
|
||||
|
||||
The -B flag runs this as a background process. Remove this to see real-time output in order to solve problems. The -i flag denotes the physical device used for the wifi. The -c flag points to the configuration file for use.
|
||||
The `-B` flag runs this as a background process.
|
||||
Remove this to see real-time output in order to solve problems.
|
||||
The `-i` flag denotes the physical device used for the wifi.
|
||||
The `-c` flag points to the configuration file for use.
|
||||
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
title: "Makefiles"
|
||||
title: "make help target"
|
||||
tags: [ "system", "make", "help" ]
|
||||
---
|
||||
|
||||
|
@ -1,8 +1,36 @@
|
||||
---
|
||||
title: "kernel"
|
||||
title: "kernel modules"
|
||||
tags: [ "system" ]
|
||||
---
|
||||
|
||||
Kernel modules live in lib/modules/$(uname -r)
|
||||
|
||||
## Change
|
||||
|
||||
Load them with
|
||||
|
||||
```sh
|
||||
modprobe ath9k
|
||||
```
|
||||
|
||||
Or remove one with
|
||||
|
||||
```sh
|
||||
modprove uvcvideo
|
||||
```
|
||||
|
||||
The PC's irritating speaker beep can be really annoying. Disable it with:
|
||||
|
||||
```sh
|
||||
modprobe -r pcspeaker
|
||||
```
|
||||
|
||||
Permanently disable a module by blacklisting it in `/etc/modprobe.d`:
|
||||
|
||||
```sh
|
||||
echo 'blacklist pcspkr' > /etc/modprobe.d/*nobeep*.conf
|
||||
```
|
||||
|
||||
Check which kernel modules are loaded into memory:
|
||||
|
||||
```sh
|
||||
|
Loading…
Reference in New Issue
Block a user