From 0ca815eba5236ce1c4cbb4f9943a069b96f0e015 Mon Sep 17 00:00:00 2001 From: zleyyij Date: Sun, 23 Oct 2022 14:32:43 -0600 Subject: [PATCH] epoch --- .gitignore | 1 + ...gerprint authentication on Zephyrus G15.md | 7 + Fixing a non booting linux install.md | 141 ++++++++++++++++ ...ergfxctl black screen on dedicated mode.md | 1 + Installing Arch.md | 156 ++++++++++++++++++ Ohm's Law.md | 30 ++++ Pasted image 20220907095504.png | Bin 0 -> 63532 bytes Setting up SSH keys.md | 57 +++++++ The basics of Git.md | 40 +++++ WiFi not working after pacman -Syu.md | 48 ++++++ ...le to connect to wpa-enterprise via iwd.md | 4 + ...ed after restart or wake from hibernate.md | 6 + 12 files changed, 491 insertions(+) create mode 100644 .gitignore create mode 100644 Enabling fingerprint authentication on Zephyrus G15.md create mode 100644 Fixing a non booting linux install.md create mode 100644 Fixing supergfxctl black screen on dedicated mode.md create mode 100644 Installing Arch.md create mode 100644 Ohm's Law.md create mode 100644 Pasted image 20220907095504.png create mode 100644 Setting up SSH keys.md create mode 100644 The basics of Git.md create mode 100644 WiFi not working after pacman -Syu.md create mode 100644 unable to connect to wpa-enterprise via iwd.md create mode 100644 wlan0 disabled after restart or wake from hibernate.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dd33554 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.obsidian diff --git a/Enabling fingerprint authentication on Zephyrus G15.md b/Enabling fingerprint authentication on Zephyrus G15.md new file mode 100644 index 0000000..84beed4 --- /dev/null +++ b/Enabling fingerprint authentication on Zephyrus G15.md @@ -0,0 +1,7 @@ +****#linux +#laptop +[Documentation](https://github.com/knauth/goodix-521d-explanation) + +From the usbreset directory run `gcc usbreset.c -o usbreset.out` to compile the reset bin, then `sudo ./usbreset.out /dev/bus/usb//` to reset it, for this device it's ``sudo ./usbreset.out /dev/bus/usb/003/002`` + +from goodix-fp-dump run `sudo python run_521d.py` to reflash the firmware \ No newline at end of file diff --git a/Fixing a non booting linux install.md b/Fixing a non booting linux install.md new file mode 100644 index 0000000..b84b978 --- /dev/null +++ b/Fixing a non booting linux install.md @@ -0,0 +1,141 @@ +# Fixing a non-booting linux install +Because of the length and variety of troubleshooting methods, the following article will be segmented by each step of the boot process. + +## UEFI/BIOS +When the system is first powered on, the UEFI/BIOS preforms basic integrity checks of your disk, then checks the MBR for a valid bootloader, and if it's a GPT system, it will check the ESP(EFI System Partition) for a valid bootloader. If it is not found, you may get an error stating boot failure, the system may load into the UEFI/BIOS, or it may reboot. + +### Troubleshooting +Try a live environment. + +##### If the live environment boots successfully: +It indicates the bootloader is not functioning correctly. You can attempt to fix the bootloader by `chroot`ing in: +**On non Arch based distributions:** +Mount the root filesystem, where `sdXY` is your root partition, or `/`. You can find it by running `lsblk`, and looking at the size, or using `sudo fdisk -l`, and looking at the partition size and type. +``` +mount /dev/sdXY /mnt +``` +Mount the API filesystems: +``` +cd /mnt +``` +``` +mount -t proc /proc proc/ +``` +``` +mount /t sysfs /sys sys/ +``` +``` +mount --rbind /dev dev/ +``` +``` +mount --rbind /sys/firmware/efi/efivars sys/firmware/efi/efivars/ +``` +Mount the `efi` partition if the system is UEFI/GPT: +use `sudo fdisk -l` to list disks, look for a partition of ~200-500M, labeled `EFI System`, again, where `/dev/sdXY` is the EFI system partition +``` +mount /dev/sdXY /mnt/boot/efi +``` + +If you require an internet connection: +``` +cp /etc/resolv.conf etc/resolv.conf +``` + +Chroot into `/mnt` using a bash shell: +``` +chroot /mnt /bin/bash +``` + +**On Arch based distributions:** +Chroot into the system using arch's `arch-chroot` script: +``` +arch-chroot /dev/sdXY +``` +Mount the `efi` partition if the system is UEFI/GPT: +Use `sudo fdisk -l` to list disks, look for a partition of ~200-500M, labeled `EFI System`, again, where `/dev/sdXY` is the EFI system partition +``` +mount /dev/sdXY /boot/efi +``` + + +To reinstall grub: +``` +grub-mkconfig -o /boot/grub/grub.cfg +``` +If the system is EFI, you do not need any arguments for `grub-install`: +``` +grub-install +``` +If the system is MBR: +``` +grub-install --target=i386-pc /dev/sdXY +``` +##### If the live environment does *not* boot successfully: +See if Secure Boot is enabled: + Check your UEFI/BIOS and ensure Secure Boot is disabled, or enabled if you are using a linux distro that supports secure boot. +Try Ventoy, if it boots to the Ventoy menu without issue, try redownloading/burning your Linux ISO. You can ensure the checksum matches: +From Linux(this utility is included in most distros): +``` +sha256sum [file] +``` +From Windows(from Powershell): +``` +Get-FileHash +``` +If the checksum doesn't match with the one provided by the original source, than something went wrong during the download process, and the ISO needs to be downloaded again. +If the checksum matches and the ISO *still* isn't booting: +- Try a different iso utility(Rufus, Ventoy, `dd`(unix only), BalenaEtcher) +- Try a different "base" of distro(RHEL, Debian/Ubuntu, Arch, and OpenSUSE are all common alternatives) +- Try a different USB drive +- See if the drive works on a different computer +*If the ISO is STILL not booting:* +- Pray to Tux for mercy +- Ensure it's not a PEBKAC +- Update your UEFI/BIOS + +## GRUB/Bootloader +*Note: this section assumes you use GRUB* +At this point, your UEFI/BIOS has passed control over to GRUB, by default, it presents a menu similar to the one shown below, although the appearence may vary. +![[Pasted image 20220907095504.png]] + +### Recovery shell +With the standard boot option selected in GRUB: +- Hit `e` to temporarily edit the boot config +- Find the line that says `linux`, and go to the end of the line and put `systemd.unit=rescue.target` +- Then hit ctrl + x or F10 to boot with the modified config. +- If the recovery shell doesn't work, you can try an emergency shell(a more minimalistic recovery interface) by replacing `systemd.unit=rescue.target` with `systemd.unit=emergency.target` + +### Init shell +In Linux, the init process is the very first process launched by the system, identified with a PID of 1. This can be changed with a GRUB variable. +- Hit `e` over the correct entry to temporarily edit the boot config +- Append `init=/bin/bash` to the line that starts with `linux`. You can experiement with having it earlier in the line to see if it makes a difference. + +### Troubleshooting from a shell +- Update everything +- Reinstall GPU drivers +- Reinstall the display manager and desktop environment +- Try manually starting display manager/desktop environment + +## System Boot +Once GRUB passes booting over to Linux, it will start booting in VGA text mode under tty1. Troubles here can show symptoms including: +- Appears unresponsive during boot +- Screen goes black as it leaves VGA text mode, then crashes or hangs +- Begins shutting down after a partial boot + + +### Different TTY +During the boot process, you can try switching to a different TTY to bypass the TTY used at boot. You can use ctrl + alt + f2-f9 to drop to a different interface. +#### Troubleshooting from a recovery shell +If the shell loads successfully, than the system not booting might be prevented by a bad config loaded at startup, a nonfunctional display manager or desktop environment. + +**If X11:** +Try starting your desktop environment using [xinit](https://wiki.archlinux.org/title/Xinit): +You can also try skipping xinit by specifying the start environment as a `startx` argument: +(example uses KDE plasma) +`startx startplasma-x11` +if that fails, you can check `dmesg` logs if stdout is inconclusive. + +Try starting your display manager with `systemctl`: +(`sddm` used in example) +`sudo systemctl start sddm` +If you don't know what the systemd service is named, you can try to find it with `systemctl list-units | grep possiblename` where `possiblename` is the or part of it. \ No newline at end of file diff --git a/Fixing supergfxctl black screen on dedicated mode.md b/Fixing supergfxctl black screen on dedicated mode.md new file mode 100644 index 0000000..1352d49 --- /dev/null +++ b/Fixing supergfxctl black screen on dedicated mode.md @@ -0,0 +1 @@ +https://asus-linux.org/faq/#why-did-nvidia-mode-give-me-black-screen-with-xorg \ No newline at end of file diff --git a/Installing Arch.md b/Installing Arch.md new file mode 100644 index 0000000..0b96ef8 --- /dev/null +++ b/Installing Arch.md @@ -0,0 +1,156 @@ +#linux +#documentation + +See offical documentation [here](https://wiki.archlinux.org/title/installation_guide). +### Preperation +**Prerequisites** +Check if system is in UEFI mode with: + `ls /sys/firmware/efi/efivars` +If it lists the directory without issue then it's in EFI mode, if `no directory exists` is returned than EFI is disabled. + +**Partitioning Disks** +List disks with: +`fdisk -l` +Select disk to modify with: +`fdisk /dev/sdx` (where x is the selected disk) +In the *fdisk* environment, use: +- `n` to create a new partition +- `p` or `e` to select primary or extended, primary is fine for all partitions on this install. +- `+[size][scale]` EG: `+512M` or `+1g` create a partition of that size. +- `w` to write changes to the disk. + +Arch requires: +- 1 *EFi system partition* of at least **300MiB** mounted to **/mnt/boot** (Only for UEFI systems) +- 1 *root partition* using **all leftover space** mounted at **/mnt** +- Optionally a *swap partition* **more than 512MiB**, but ideally equal to the total ram.(Note: the swap partition is not mounted, but is instead initialized with `mkswap /dev/swap_partition`) + +**Formatting Partitions** +- Format the root partition as ext4 +```bash +mkfs.ext4 /dev/root_partition +``` +- Format the EFI system partition as Fat32 +```bash +mkfs.fat -F 32 /dev/efi_system_partition +``` +- Initialize the swap partition +```bash +swapon /dev/_swap_partition_ +``` +**Mounting Partitions** +Mount these partitions with `mount /dev/sdxI /mounting_location`, for this purpose `/mnt`. +You will need to: +- Mount root partition(/) +```bash +mount /dev/[root_partition] /mnt +``` +- Mount EFI System Partiton +(boot may need to be made with `mkdir`) +```bash +mount /dev/[efi_system_partition] /mnt/boot +``` +- If a swap partition was made, initialize it with: +```bash +swapon /dev/[swap_partition] +``` +**Update Mirrors** + Use `reflector` to update mirrors to the optimal servers. +### Installation +Use `pacstrap` to install necessary packages into `/mnt` +```bash +pacstrap /mnt base linux linux-firmware dhcpcd nano +``` +Note: if you wish to configure a static IP you can remove `dhcpcd`from the package list and use `ip address add [IP]/[subnet] broadcast + dev [interface]`, where subnet is usually `/24` and the interface can be found with `ip link`. You will need to add a route, which can be done with `ip route add default via [gateway address]`. +**Configuring the system** +Generate an `fstab` file(shows how partitions should translate into disk space) +```bash +genfstab -U /mnt >> /mnt/etc/fstab +``` +**Chroot into the new system** with `arch-chroot` +```bash +arch-chroot /mnt +``` +Optionally set time zone(See installation wiki) + +Edit `/etc/locale.gen` to set locales. For English uncomment `en_US.UTF-8 UTF-8`. +If needed, generate locales with `locale-gen`. + +Start and enable internet +```bash +systemctl start dhcpcd +systemctl enable dhcpcd +``` +**User Account Management** +Set a root password with `passwd`. +Install `sudo` +```bash +pacman -S sudo +``` + +Add a user +```bash +useradd -m [user] +``` + +Give the user a password: +```bash +passwd [user] +``` + +Add the user to the sudoers group(you will need to uncomment a line from /etc/sudoers) +```bash +usermod -aG wheel [user] +``` + +Reboot, unmount the .iso, and login to the user just created. + +Install either `amd-ucode` or `intel-ucode` depending on the system processor +```bash +sudo pacman -S [needed package] +``` + +**Beyond the install** +Install `grub` and`efibootmgr` with pacman +```bash +pacman -S grub +pacman -S efibootmgr +``` + +Create the directory for grub +```bash +mkdir /boot/EFI/GRUB +``` + +Install `grub` to the efi partition. +```bash +grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub +``` + +Generate the grub config +```bash +grub-mkconfig -o /boot/grub/grub.cfg +``` + +Install `xorg-server` +```bash +sudo pacman -S xorg-server +``` + +Install `plasma` +```bash +sudo pacman -S plasma +``` + +Install `sddm` +```bash +sudo pacman -S plasma +``` + +Start sddm +```bash +sudo systemctl start sddm.service +``` +If the desktop works as intended, enable sddm to launch at boot +```bash +sudo systemctl enable sddm.service +``` \ No newline at end of file diff --git a/Ohm's Law.md b/Ohm's Law.md new file mode 100644 index 0000000..b035f09 --- /dev/null +++ b/Ohm's Law.md @@ -0,0 +1,30 @@ +#notes +#school +#electricity + + +Summary: +- **Voltage** is the difference in charge between two points. +- **Current** is the rate at which charge is flowing. +- **Resistance** is a material’s tendency to resist the flow of charge (current). +- Water = **Charge**(Coloumbs) +- Pressure = **Voltage**(Volts) +- Flow = **Current**(Amps) +- Hose Width = **Resistance**(Ohms + +### Equations +- V = Voltage in volts +- I = Current in amps +- R = Resistance in ohms + +Solving for Voltage: +`V = I * R` +Solving for Current: +`I = V / R` +Solving for Resistance: +`R = V/I` + + +### Applying Concepts +If a resistor has a 20 mAh current rating, and it's being powered with a 9 volt battery. +To find the appropriate resistor for the LED, you solve for resistance with `R = V/I`, where V=9 and R = a number less than 0.02, like `9/0.018 = 500`, so you would want a resistor with a voltage at or greator than about 500 Ohms. \ No newline at end of file diff --git a/Pasted image 20220907095504.png b/Pasted image 20220907095504.png new file mode 100644 index 0000000000000000000000000000000000000000..874ba42530f0afcb5e1a1d67cc0d761eaaf7f3ab GIT binary patch literal 63532 zcmeEu`9IX%`+rFpNk}DGXGSAsmnF*xW6KswWQ{>GW9<8kvdcOYNl_w|bu44wWd=p| zLAH#Y?1Qm=$NTfS-}ilg{)Vq#UJr*kuGcx&b)D;aKA%U_J$+5)vscfaIB|kmTMK4% z;sjmIi4!MV0cU6<$&03bv_78N{qGI}2z|O$NTPdmBz-de8F8|pyX{i*>@X6pd>ulBctk>z!KL6`s zqYZK$x;Fpd_5;90y0AOIdw)GFBJZ$`T|N8Hp^J1nSD%AwbgBY6D*yWY|I7xekv{YH zoX2Cyx9HS;Q#`kmJ^np|y07!OfBzw2C;AtwqVs=5X8%3Ii`9WE|FrZyt7#A5;-qEI zsCnn5f0=r5GGF4qcK>JcqAa%SP1RY|f34tq04nymstq&Pb*STT*)io{Em=FIet$a6KBfBC zv}o~ihiz3=O67O^;m7c4IWGsK<9uvg9R}sG-WDHM7kgmkLz#-FtP__OvujcmI%eFg z7P@+dMxGv>eORH|@dC3~yIh-5TSLU@@lYsxU)cTZ%&_H%q2kHp@|x-US^g!|$HFLt z!AeM#(8^Z)$mhXrgZ7Y)JdA!CskeiBuxrf}g&HxfFW%|dRv(U$Fv;Q5X`d~L8ZEEe z%8#fXU3SSo`uLHLX$@J2T;krlY+m5spR1p?ZFiemn&uo6Z%-kht9dha5&6ZmJvZfj zUf=n-WA>pw%~SH|=ymS}9d2agBvw;kKJAux+eQ~xk01PL{^89q!@6cH47x>P>tL{-*VAd$Y_4Lds%Revq?nEf#g_?T|ntNYXBT-%5kr3URk{ z_Jr4btLHWLYcC&unmY-Rt<-LQzF!zPeY5#tJ+&XNj8A38eu+^e;1PA(wJW1>2J-V+ z^K$w;$U>jmMds}af>Lr*&9E? za7_(=i=T`A4tbL35;(=hqVT7}E|�&B+9hU5l$RqhL9>5xwIW*+v89v1w5sCz-2z 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 XkH}`3-Xqx`VO?e>&?_bXI7R#)M`o(f literal 0 HcmV?d00001 diff --git a/Setting up SSH keys.md b/Setting up SSH keys.md new file mode 100644 index 0000000..e42f264 --- /dev/null +++ b/Setting up SSH keys.md @@ -0,0 +1,57 @@ +#documentation +## Terms +The following terms should be standardized across the document. +#### Client +- The user side local computer that connects *to* a remote host, typically a server. +- This side has the **private key**, which you should keep secure +- The private key decrypts data +#### Server +- The remote computer that the client connects to. +- This side has the **public key**, which doesn't need to be secure +- The public key encrypts data + +## SSH Keypairs +SSH keypair authentication relies on asymmetrical encryption, and is only used for authentication. Once they exchange the needed info, they use the Diffie-Hellman Key Exchange Algorithm to create a symmetrical key(can decrypt and encrypt). This is used to encrypt the rest of the session. + + +## Setup +1. Generate an SSH keypair from the *client* with: + ``` + ssh-keygen -t ed25519 + ``` +- Note: while ed25519 encryption is much more secure than rsa4096, it's not universally supported. When using older versions of OpenSSH, generate a key with `ssh-keygen -t rsa -b 4096` to generate an rsa4096 keypair. This should be compatible with almost every implementation of SSH. +2. Follow the prompts onscreen: + - You will be asked where to save the key, the default location is typically correct(`~/.ssh/KEYNAME`) where `KEYNAME` is the name of your keypair. + - You will then be prompted for a password. This password is used alongside the keypair, and is optional(leave blank if you want passwordless login) +3. Copying the public key to the server +- There should now be two files in `~/.ssh` with the format `id_ENCRYPTIONMETHOD` and `id_ENCRYPTIONMETHOD.pub` (EG: `id_ed25519` and `id_ed25519.pub`) +``` +ssh-copy-id USERNAME@SERVERADDRESS +``` +- EG: `ssh-copy-id foo@192.168.0.10` +- Restart the SSH daemon, and test for functionality +## Further Configuration + +### Disabling password based login +1. Edit `/etc/ssh/sshd_config` to have an uncommented line that says: +``` + PasswordAuthenntication no +``` + - This will prevent clients from logging on with a password entirely, unless the SSH key was configured with a passcode. + - Reload the SSH daemon. + +### Storing keys on github +1. See https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account about adding keys, access public keys at `https://github.com/USERNAME.keys` + - You can then add public keys to your server with `curl https://github.com/USERNAME.keys | tee -a ~/.ssh/authorized_keys` + - A similar method should exist across most git clients. +--- + + +## Further Reading +- https://www.hostinger.com/tutorials/ssh +- https://www.hostinger.com/tutorials/ssh-tutorial-how-does-ssh-work +- https://www.digitalocean.com/community/tutorials/ssh-essentials-working-with-ssh-servers-clients-and-keys + + + + diff --git a/The basics of Git.md b/The basics of Git.md new file mode 100644 index 0000000..cf74653 --- /dev/null +++ b/The basics of Git.md @@ -0,0 +1,40 @@ +#notes #documentation +### Create a git repository +`git init` +- This defines the folder as a git repository, and creates `.git`, a folder that contains metadata about the repo, like where the *remote* (repository hosted somewhere else) is, and other useful stuff like version control. You should not need to directly interact with this folder. + +`git add .` + - This makes all files and folders in the current repository(can also be more precise by replacing `.` with specific files) tracked. + + + `git commit -am "The Epoch" + - Syntax breakdown: + - `-a` All, commit all changes + - `-m` Have a message, takes a string argument, in this example, "The Epoch" + +#### If adding a remote repository, GitHub or otherwise. +`git remote add origin https://urltorepo.com/path/to/repo` +- Telling git that the files should come from and go to that remote repository, where `https://urltorepo.com/path/to/repo` is the destination repo. +- If the url is wrong, it can be removed with `git remote remove origin` + +`git branch -M main` +- Syntax breakdown: + - `-M`, shortcut for `--move --force`, used to move/rename a branch. +- Telling git that we want the current branch to be `main`. + +`git push -u origin main` +- Synatx breakdown: + - `-u` is a shortcut for `--set-upstream` +- Telling git that we want the main host of the repository(`origin`, or `https://urltorepo.com/path/to/repo`) to be the host. After this is run one time, git remembers, and you can shorten it to `git push`, to take commits(saved changes) from your local code, and send them to remote(GitHub or other Git server). + + +### Update code on github/remote +`git commit -am "changes"` +- Tell git to keep track of all the changes you made + +`git push` +- Take code here and put it on the server + +### Get code from github +`git clone https://remotehost.com/repo/to/clone` +- Download a folder containing all of the code and versions to a project, where `https://remotehost.com/repo/to/clone` is the url of the repo in question. \ No newline at end of file diff --git a/WiFi not working after pacman -Syu.md b/WiFi not working after pacman -Syu.md new file mode 100644 index 0000000..6b62eba --- /dev/null +++ b/WiFi not working after pacman -Syu.md @@ -0,0 +1,48 @@ +#laptop +#documentation +#issue +#closed +#linux +02/02/2022 + + Because wifi was broken by a pacman update, I’m reverting to an older point in the repos(01/01/2022). + +When updating via pacman -Syyuu, `error: failed to prepare transaction (could not satisfy dependencies) + +:: installing expat (2.4.2-1) breaks dependency 'expat=2.4.4' required by lib32-expat + +:: installing libcap (2.62-1) breaks dependency 'libcap=2.63' required by lib32-libcap` is returned. + +`lib32-expat ` is an xml parser library [Arch WIki](https://archlinux.org/packages/multilib/x86_64/lib32-expat/), and lib32-libcap is some posix document `[arch wiki](https://archlinux.org/packages/multilib/x86_64/lib32-libcap/)`. + + + +New solution: downgrade lib32-libcap(2.63-1 to 2.62-1) and lib32-expat(2.4.4-1 to 2.4.2-1) + +Was going to use expat 2.4.3 but caused dependency issues with the 64 bit version. V2 successfully worked + + + +sudo pacman -U /var/cache/pacman/pkg/[PACKAGE].pkg.tar.zst + + + +After the above downgrade, `sudo pacman -Syyuu` with “y” on skip the lib32-expat and lib32-libcap worked, but returned + +error: failed to commit transaction (conflicting files) + +hwids: /usr/share/hwdata/pci.ids exists in filesystem (owned by hwdata) + +hwids: /usr/share/hwdata/pnp.ids exists in filesystem (owned by hwdata) + +hwids: /usr/share/hwdata/usb.ids exists in filesystem (owned by hwdata) + +[referenced documentation for below as on garuda forums](https://forum.garudalinux.org/t/help-cant-upgrade/16237/2) + +Couldn’t figure out how to fix above issue, attempting a different date(15). + + + + ISSUE CLOSED. + +Solution, using the rollback repos to rollback to 2022/01/15 diff --git a/unable to connect to wpa-enterprise via iwd.md b/unable to connect to wpa-enterprise via iwd.md new file mode 100644 index 0000000..4bf8cd7 --- /dev/null +++ b/unable to connect to wpa-enterprise via iwd.md @@ -0,0 +1,4 @@ +#laptop +#issue +#open +#linux diff --git a/wlan0 disabled after restart or wake from hibernate.md b/wlan0 disabled after restart or wake from hibernate.md new file mode 100644 index 0000000..88c3274 --- /dev/null +++ b/wlan0 disabled after restart or wake from hibernate.md @@ -0,0 +1,6 @@ +#laptop +#issue +#linux +#open +### Disabling the watchdog timer +currently disabled via grub config, trying to disable module loading, don't know module name. Used `lsmod` to list modules, was unable to spot it after a cursory glance. `cat /proc/sys/kernel/watchdog` will show if it's active, and it does return 0, but I want it fully disabled. [see for disabling watchdog timer](https://wiki.archlinux.org/title/improving_performance#Watchdogs), [see for blacklisting modules](https://wiki.archlinux.org/title/Kernel_module#Blacklisting) \ No newline at end of file