Blog Image

Välkommen till LinuxFunkar!

Mall för en Erlang-applikation

Erlang Posted on Wed, February 09, 2022 21:55:21

Vad är Erlangs enda svaghet? Lång startsträcka för att komma igång!

Den här mallen är tänkt att underlätta för nybörjare att komma igång med Erlang genom att erbjuda en professionell (förhoppningsvis) Erlang-applikation som går att använda direkt.

https://gitlab.com/tresjuor/SomeErlangAppXyz

Ladda ner genom att klona:

git clone https://gitlab.com/tresjuor/SomeErlangAppXyz.git

Används på följande sätt:

  • make / make all – Build everything
  • make erlang – Compile all erlang modules and create the .app file from .appSrc
  • make prepare_test – Prepare test environment if needed.
  • make test – Run tests. Ignore errors from dialyzer.
  • make run_s – Run the application in an interactive Erlang shell
  • make run_d – Run the application in a detached (from the shell) erlang node
  • make to_erl – Attach to the erlang shell when the application has been started with ‘make run_d’
  • make kill – Terminate the application
  • make doc – Generate documentation
  • make clean – Delete all output files

Applikationen går även att köra i en docker-container med följande kommando:

docker run -it tresjuor/ubuntu-jammy-erlang

Testas enkelt på Play with Docker:
https://labs.play-with-docker.com/



Kör QuakeIII Arena på Linux (utan wine)

Tips och tricks Posted on Tue, August 17, 2021 12:19:27

Hämta och kompilera ioquake:

mkdir q3
cd q3

git clone https://github.com/ioquake/ioq3.git
cd ioq3
make -j4

Kontrollera att ioquake har kompilerats ok:

ls -lh build/release-linux-x86_64/ioquake3.x86_64
-rwxr-xr-x 1 root root 2.0M Aug 17 09:47 build/release-linux-x86_64/ioquake3.x86_64

Kopiera in datafiler från orginalskivan:

cp /run/media/root/QUAKE3/Quake3/baseq3/pak0.pk3 build/release-linux-x86_64/baseq3/
cp /run/media/root/Q3ta/Setup/missionpack/pak0.pk3 build/release-linux-x86_64/missionpack/

Hämta senaste datafilerna från nätet och patcha filerna:

unzip quake3-latest-pk3s.zip
Archive: quake3-latest-pk3s.zip
creating: quake3-latest-pk3s/
creating: quake3-latest-pk3s/baseq3/
creating: quake3-latest-pk3s/missionpack/
inflating: quake3-latest-pk3s/baseq3/pak8.pk3
inflating: quake3-latest-pk3s/baseq3/pak7.pk3
inflating: quake3-latest-pk3s/baseq3/pak6.pk3
inflating: quake3-latest-pk3s/baseq3/pak5.pk3
inflating: quake3-latest-pk3s/baseq3/pak4.pk3
inflating: quake3-latest-pk3s/baseq3/pak3.pk3
inflating: quake3-latest-pk3s/baseq3/pak2.pk3
inflating: quake3-latest-pk3s/baseq3/pak1.pk3
inflating: quake3-latest-pk3s/missionpack/pak3.pk3
inflating: quake3-latest-pk3s/missionpack/pak2.pk3
inflating: quake3-latest-pk3s/missionpack/pak1.pk3

cp quake3-latest-pk3s/baseq3/pak* ioq3/build/release-linux-x86_64/missionpack
cp quake3-latest-pk3s/missionpack/pak* ioq3/build/release-linux-x86_64/missionpack/

Starta Q3:
cd ioq3
./build/release-linux-x86_64/ioquake3.x86_64



Skapa krypterad partition med filsystem

Tips och tricks Posted on Tue, February 04, 2020 22:57:18

Skapa partitionen som ska krypteras (/dev/sda2 i detta exempel)

Använd Gparted, cfdisk, fdisk eller liknande.

Kryptera partitionen /dev/sda2

cryptsetup luksFormat /dev/sda2

WARNING!

This will overwrite data on /dev/sda2 irrevocably.

Are you sure? (Type uppercase yes): YES
(Ange valfritt lösenord)
Enter passphrase:
Verify passphrase:

Avkryptera partitionen och mappa mot valfri tagg (exempelvis encrypted)

cryptsetup open /dev/sda2 encrypted
(Skriv samma lösenord som angavs tidigare)
Enter passphrase for /dev/sda2:

Skapa ett filsystem på partitionen

mkfs.ext4 /dev/mapper/encrypted

mke2fs 1.43.4 (31-Jan-2017)
Creating filesystem with 9883648 4k blocks and 2473984 inodes
Filesystem UUID: c6629598-4f80-4435-9732-7118562ef7d3
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624

Allocating group tables: done
Writing inode tables: done
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done

Montera filsystemet (på valfritt ställe, exempelvis /mnt)

cryptsetup –type luks open /dev/sda2 encrypted
mount -t ext4 /dev/mapper/encrypted /mnt

root@devuan:~# df -h /mnt
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/encrypted 37G 49M 35G 1% /mnt

Avmontera filsystemet

umount /mnt
cryptsetup close encrypted

Referenser

https://gitlab.com/cryptsetup/cryptsetup/

https://www.cyberciti.biz/hardware/howto-linux-hard-disk-encryption-with-luks-cryptsetup-command/

https://linuxconfig.org/basic-guide-to-encrypting-linux-partitions-with-luks



Installera Erlang på Slackware

Erlang Posted on Sat, February 01, 2020 14:50:47

1. Installera SboPkg för att enkelt kunna bygga program (installationspaket).

https://sbopkg.org/

https://docs.slackware.com/howtos:slackware_admin:building_packages_with_sbopkg

installpkg sbopkg-version-noarch-1_wsr.tgz

2. Kör SboPkg och installera först WxPython och därefter Erlang.

sbopkg

Synka först genom att välja “Sync”.

Tryck därefter på “Search” för att hitta program att installera.



Installera Slackware Linux från installationsmedia på USB

Slackware Linux Posted on Mon, January 06, 2020 12:50:55

Exempel för Slackware-Current:

https://bear.alienbase.nl/mirrors/slackware/slackware64-current-iso/

Ladda ner:
https://bear.alienbase.nl/mirrors/slackware/slackware64-current-iso/slackware64-current-install-dvd.iso


https://bear.alienbase.nl/mirrors/slackware/slackware64-current-iso/MD5SUM

Kontrollera MD5:

md5sum -c MD5SUM
slackware64-current-install-dvd.iso: OK

Kopiera iso-filen till installations-USB’t (sticka på minst 4GB):
dd if=slackware64-current-install-dvd.iso of=/dev/sdb bs=10M

Boota från USB’t och installera Slackware.



Kör Slackware Linux från USB-disk eller sticka

Slackware Linux Posted on Mon, January 06, 2020 11:42:48

OBS: Kräver ramdisk (initrd) då Linuxkärnan som kommer med Slackware inte är kompilerad med drivrutiner för USB.

OBS: Viktigt att installationen görs på den dator och USB-disk där systemet ska köras. Kommer med stor sannolikhet (men inte garanterat) att fungera på andra datorer.

  • Samma procedur som för att installera på vanlig disk. Installera Lilo på USB-diskens MBR.

Avsluta installationsprogrammet och fortsätt i terminalläge.

  • Gör chroot till /mnt för att arbeta mot det nyligen installerade systemet. Montera först sys och proc och gör därefter chroot.

mount -vt proc proc /mnt/proc

mount -vt sysfs sysfs /mnt/sys

chroot /mnt

  • Sätt SW-ROOT som etikett på root-partitionen (i exemplet nedan /dev/sdc1, kan vara /dev/sdXY beroende på installation..).

e2label /dev/sdc1 SW-ROOT

  • Ändra hårdkodade sökvägen till root-partitionen i /etc/fstab till etiketten som sattes tidigare.

joe /etc/fstab

Ändra /dev/sdc1 till LABEL=SW-ROOT

  • Gör ramdisken (initrd) som ska laddas och köras vid boot av Lilo.

/usr/share/mkinitrd/mkinitrd_command_generator.sh > cmd
sh cmd

  • Installera om Lilo för att inkludera ramdisken och för att root-partitionen ska kunna hittas med hjälp av etiketten.

Ändra konfigurationen för Lilo:

joe /etc/lilo.conf

Lägg till raden “compact” för en snabbare bootsekvens.

Lägg till kernelparametrar (används i detta fall endast av ramdisken) med raden append=“root=LABEL=SW-ROOT waitforroot=10”.

Ändra boot=/dev/sdX till boot=/dev/sdc (X kan variera).

Lägg till följande rad efter “image = /boot/vmlinuz”:

initrd = /boot/initrd.gz

Testa först (-t) för att se hur Lilo kommer att installeras:

lilo -t -v

Kör utan -t om allt ser bra ut.

lilo -v

  • Avsluta chrooten, avmontera proc,sys och /mnt och stäng av datorn.

exit

umount /mnt/proc

umount /mnt/sys

umount /mnt

poweroff



Installera om Lilo

Slackware Linux Posted on Thu, August 08, 2019 12:05:50

Problem: Går inte att boota Linux på grund av att bootloadern (Lilo) är trasig eller felaktigt installerad.

Lösning:
Installera om Lilo genom att boota med installationsskivan eller bootbart usbminne.

Montera rootpartitionen (i exemplet nedan /dev/sdb1) på /mnt:

mount /dev/sdb1 /mnt

Gör chroot till /mnt:

chroot /mnt

Kontrollera/ändra konfigurationen för Lilo:

joe /etc/lilo.conf

Lägg till raden “compact” för en snabbare bootsekvens.

Lägg till eventuella kernelparametrar med raden append = “<kernelparametrar>”.

Installera om Lilo:

Testa först (-t) för att se hur Lilo kommer att installeras.

lilo -t -v

Kör utan -t om allt ser bra ut.

lilo -v

Avsluta chrooten och avmontera rootpartitionen:


exit
umount /mnt

Överkurs:
Hantera ramdisken initrd.gz (används där mer kontroll eller funktionalitet behövs i bootsekvensen):

Se till att följande rad finns i /etc/lilo.conf:

initrd = /boot/initrd.gz

Gör eventulla ändringar i ramdisken:

cd /boot/initrd-tree

Tex.

Kopiera in alla kernelmoduler (drivrutiner) till ramdisken:

cp -a /lib/modules/4.19.62 lib/modules

Lägg till moduler som ska laddas manuellt vid boot:

joe load_kernel_modules

Lägg till för varje modul som ska laddas
Ex.
modprobe -v xhci-hcd

Lägg till en fördröjning (10s) innan rootpartitionen monteras (behövs om den tex ligger på ett USB-minne):

echo 10 > wait-for-root

Skapa och komprimera ramdisken så att den kan användas av Lilo:

mkinitrd

OBS: Glöm inte att installera om Lilo (lilo -v) efter att ramdisken har ändrats.



Automatisk SSH-inloggning

Tips och tricks Posted on Fri, May 17, 2019 21:36:47

Automatisk SSH-inloggning med kryptonycklar istället för lösenord

Referenser:

https://www.ssh.com/ssh/
https://www.ssh.com/ssh/keygen
http://www.rebol.com/docs/ssh-auto-login.html
https://www.benhup.com/freebsd/openssh-configuration-with-elliptic-curve
https://www.techrepublic.com/article/how-to-easily-add-an-ssh-fingerprint-to-your-knownhosts-file-in-linux/

Vad behövs:

Ett kryptonyckelpar (med en publik nyckel och en privat nyckel) för varje klient som vill ansluta mot servern (SSH-server).
Den publika nyckeln läggs på servern och den privata används av klienten för att logga in på servern.

1. Skapa nyckelparet (inloggad på servern som den användare som ska ansluta från klienten):

På servern:

Nycklarna skapas som default i katalogen ~/.ssh

cd ~/.ssh
ssh-keygen -t ed25519

Tryck retur vid varje prompt. Ange en passphrase om du vill kryptera den privata nyckeln för ökad säkerhet.

Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/maup/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/maup/.ssh/id_ed25519.
Your public key has been saved in /home/maup/.ssh/id_ed25519.pub.

2. Konfigurera servern att använda den publika nyckeln (id_ed25519.pub):

På servern:

cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys

Ändra filrättigheter så att filen authorized_keys inte är läsbar för andra.

chmod 600 ~/.ssh/authorized_keys

Observera >> som lägger till nyckeln i slutet av filen authorized_keys som kan innehålla flera publika nycklar.

3. Kopiera den privata nyckeln (id_ed25519) till klienten:

På klienten:

cp /media/MyUSB/id_ed25519 ~/.ssh/

Ändra filrättigheter så att den inte är läsbar för andra.

chmod 600 ~/.ssh/id_ed25519

4. Konfigurera klienten så att den privata nyckeln kopplas ihop med servern som har den publika nyckeln.

På klienten (byt ut “some.server.or.ip.com” mot serverns namn eller IP):

echo “Host myserver” >> ~/.ssh/config
echo “Hostname some.server.or.ip.com” >> ~/.ssh/config
echo “IdentityFile ~/.ssh/id_ed25519” >> ~/.ssh/config

5. Lägg in serverns host-fingerprint i klientens ~/.ssh/known_hosts för att vara säker på att det är rätt server som klienten ansluter mot.

På klienten (byt ut “some.server.or.ip.com” mot serverns namn eller IP):

ssh-keyscan -H some.server.or.ip.com >> ~/.ssh/known_hosts

(för paranoida) Jämför innehållet i ~/.ssh/known_hosts med *.pub-filerna i /etc/ssh på servern:

ls /etc/ssh/*.pub
/etc/ssh/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ed25519_key.pub /etc/ssh/ssh_host_rsa_key.pub

6. Testa

På klienten:

ssh myserver



Next »