[{"content":"","date":"27 September 2024","externalUrl":null,"permalink":"/tags/hardware/","section":"Tags","summary":"","title":"Hardware","type":"tags"},{"content":"Installation # Note Before installing, it is necessary to modify some UEFI Settings. They can be accessed with F2 when booting.\nChange the SATA Mode from the default \u0026ldquo;RAID\u0026rdquo; to \u0026ldquo;AHCI\u0026rdquo;. This will allow Linux to detect the NVMe SSD. Disable Secure Boot. Other useful settings:\nTurn off Intel TurboBoost - that usually the main cause of thermal throttling. Turn on \u0026ldquo;Intel Speed Step\u0026rdquo; - downscale CPU clock and voltage when idling Turn off \u0026ldquo;Intel Speed Shift Technology\u0026rdquo; - does not play nicely when \u0026ldquo;Intel Speed Step\u0026rdquo; is enabled. Partitions # EFI System partition(fat32) /boot/efi - 512MiB Root partition(xfs) / ~100GiB Rest is /home - xfs and swap partition(at least double amount of installed memory) Fix ext4 settings # Source: Essential and strongly recommended things to do directly after a Kubuntu 24.04 LTS installation\nMake sure that you don\u0026rsquo;t use discard option for ext4 on SSD - use defaults instead, because a systemd timer for fstrim is already running.\nTo not do both is recommended by e.g. Red Hat and the ArchWiki (and openSUSE, Debian or Ubuntu\u0026rsquo;s main distribution also do not do it)!\nFurthermore, Red Hat and SUSE(openSUSE) also recommend in general to use a fstrim.timer instead of the discard option (and Fedora, Debian or Ubuntu\u0026rsquo;s main distribution also use fstrim.timer instead) - except for special cases.\nIf you are unlucky, using the discard option in /etc/fstab may decrease the SSD\u0026rsquo;s lifetime and can lead to performance degradation. Also fstrim can behave unpredictably when the \u0026ldquo;discard\u0026rdquo; option is additionally set…\nsudo cp /etc/fstab /etc/fstab.orig sudo sed -i \u0026#39;/ext4/ s/discard/defaults/\u0026#39; /etc/fstab Mount with \u0026ldquo;noatime\u0026rdquo;, \u0026ldquo;nodiratime\u0026rdquo; # Mounting your partitions with the options noatime and nodiratime will stop timestamp writes when you read files and folders. These timestamp writes are not generally required unless you use a local mail server client such as mutt.\nFor example:\nUUID=49E1-D264 /boot/efi vfat defaults 0 2 UUID=bc47366e-1ae0-463d-8f54-e9681cc975bf / xfs defaults,noatime,nodiratime 0 1 UUID=afba86b8-14ab-43d0-835e-b258fabf2e8b /home xfs defaults,noatime,nodiratime 0 2 UUID=f9ded650-ae18-4816-a9eb-e296a1423c3d swap swap defaults 0 0 tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0 Zabbly Kernel # https://github.com/zabbly/linux#installation\nKernel settings # GRUB_CMDLINE_LINUX_DEFAULT=\u0026#34;mitigations=off nvidia-drm.modeset=1 mem_sleep_default=deep scsi_mod.use_blk_mq=1\u0026#34; mitigations=off - disable all optional CPU mitigations. This improves system performance, but it may also expose users to several CPU vulnerabilities. nvidia-drm.modeset=1 - enable the DRIVER_MODESET capability flag in the nvidia-drm devices so that DRM clients can use the various modesetting APIs. In addition to allowing clients that talk to the low-level DRM interface to work, it’s also necessary for some PRIME-related interoperability features. mem_sleep_default=deep - by default, the very inefficient s2idle suspend variant is selected, which consumes a large amount of power. Last setting scsi_mod.use_blk_mq=1 is setting different I/O scheduler.\nI/O schedulers in Linux are responsible for managing read and write data operations that go in and out of the SSD. The default scheduler on most Linux distributions is the Completely Fair Queuing (CFQ) scheduler, which isn’t suitable for SSD.\nThe most suitable schedulers for the SSD are the deadline and noop schedulers. However, various I/O schedulers such as none, bfq, and mq-deadline show minimal capacity differences for fast multi-queue SSD or NVME devices. In these cases, it could be preferable to use none as the I/O scheduler to minimize CPU overhead. This option maximizes system performance by reducing pointless processing, thereby utilizing the SSD’s built-in speed.\nReduce swappiness for desktop installations # As it\u0026rsquo;s suggested by https://help.ubuntu.com/community/SwapFaq#What_is_swappiness_and_how_do_I_change_it.3F[Ubuntu].\necho -e \u0026#34;# Reduce swappiness for desktop installation (default = 60)\\nvm.swappiness=10\u0026#34; | sudo tee /etc/sysctl.d/99-sysswappiness.conf Reduce systemd timeouts for desktop installations # So, the system will not \u0026ldquo;hang\u0026rdquo; for 90 seconds and longer from time to time when logging out, rebooting or shutting down.\nKDE suggests for Plasma in their https://community.kde.org/Distributions/Packaging_Recommendations#Systemd_configuration[Distributions/Packaging Recommendations].\nsudo mkdir -p /etc/systemd/system.conf.d \u0026amp;\u0026amp; echo -e \u0026#34;# Reduce timeout (default = 90s)\\n\\n[Manager]\\nDefaultTimeoutStopSec=15s\u0026#34; | sudo tee /etc/systemd/system.conf.d/99-systemtimeout.conf sudo mkdir -p /etc/systemd/user.conf.d \u0026amp;\u0026amp; echo -e \u0026#34;# Reduce timeout (default = 90s)\\n\\n[Manager]\\nDefaultTimeoutStopSec=15s\u0026#34; | sudo tee /etc/systemd/user.conf.d/99-usertimeout.conf Terminal font # install Terminus font: sudo apt install xfonts-terminus configure font: sudo dpkg-reconfigure console-setup configure GRUB(/etc/default/grub): GRUB_TERMINAL=gfxterm GRUB_GFXMODE=1280x1024 GRUB_GFXPAYLOAD_LINUX=keep sudo update-grub Software # PipeWire: Disable HSP/HFP profile # 💡Disable PipeWire HSP/HFP profile\nmkdir -p ~/.config/wireplumber/bluetooth.lua.d/ cp /usr/share/wireplumber/bluetooth.lua.d/50-bluez-config.lua ~/.config/wireplumber/bluetooth.lua.d/ ... bluez_monitor.properties = { ... [\u0026#34;bluez5.headset-roles\u0026#34;] = \u0026#34;[ ]\u0026#34;, ... [\u0026#34;bluez5.hfphsp-backend\u0026#34;] = \u0026#34;none\u0026#34;, } ... bluez_monitor.rules = { { ... apply_properties = { ... [\u0026#34;bluez5.auto-connect\u0026#34;] = \u0026#34;[ a2dp_sink ]\u0026#34;, ... [\u0026#34;bluez5.hw-volume\u0026#34;] = \u0026#34;[ a2dp_sink ]\u0026#34;, }, ... }, } Homebrew # 💡 More info about Homebrew on linux could be found https://docs.brew.sh/Homebrew-on-Linux[here].\nsudo apt-get install build-essential procps curl file git Then follow installation instructions on https://brew.sh/\nZSH # sudo apt install zsh # Make zsh default shell chsh -s $(which zsh) # Logout Oh My Zsh # https://ohmyz.sh/#install[https://ohmyz.sh/#install]\nUse most as a pager for man # sudo apt install most Add to ~/.zshrc\nexport MANPAGER=\u0026#34;/usr/bin/most -s\u0026#34; Install Gruvbox color theme # https://github.com/sbugzu/gruvbox-zsh curl -L https://raw.githubusercontent.com/sbugzu/gruvbox-zsh/master/gruvbox.zsh-theme \u0026gt; ~/.oh-my-zsh/custom/themes/gruvbox.zsh-theme Set in ~/.zshrc: ZSH_THEME=\u0026#34;gruvbox\u0026#34; SOLARIZED_THEME=\u0026#34;dark\u0026#34; Download and install Nerd Font: https://nerdfonts.com/ Copy: Gruvbox color scheme into ~/.local/share/konsole/gruvbox.colorscheme Edit current profile in Konsole -\u0026gt; Appearance. Select Gruvbox color scheme and 3270Medium Nerd Font Mono ZSH settings # ~/.zshrc\nexport MANPAGER=\u0026#34;/usr/bin/most -s\u0026#34; # https://github.com/homeport/dyff export KUBECTL_EXTERNAL_DIFF=\u0026#34;dyff between --omit-header --set-exit-code --truecolor on\u0026#34; function git-main-diff () { CURRENT_BRANCH=`git rev-parse --abbrev-ref HEAD` echo \u0026#34;\\e[0;31mDouble check that ${CURRENT_BRANCH} is rebased on main!\\e[0m\u0026#34; COMMITS=`git log --oneline ${CURRENT_BRANCH} ^main | wc -l` echo \u0026#34;${CURRENT_BRANCH} diff with main: ${COMMITS}\u0026#34; } function git-master-diff () { CURRENT_BRANCH=`git rev-parse --abbrev-ref HEAD` echo \u0026#34;\\e[0;31mDouble check that ${CURRENT_BRANCH} is rebased on master!\\e[0m\u0026#34; COMMITS=`git log --oneline ${CURRENT_BRANCH} ^master | wc -l` echo \u0026#34;${CURRENT_BRANCH} diff with master: ${COMMITS}\u0026#34; } function git-squash () { git reset --soft HEAD~$1 \u0026amp;\u0026amp; git commit } HIST_STAMPS=\u0026#34;yyyy-mm-dd\u0026#34; plugins=(git brew ssh-agent poetry yarn kubectl kubectx) alias gw=\u0026#34;./gradlew\u0026#34; alias gw-updates=\u0026#34;./gradlew dependencyUpdates --refresh-dependencies -Drevision=release\u0026#34; alias java-flags=\u0026#34;java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version\u0026#34; eval \u0026#34;$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)\u0026#34; Midnight Commander # sudo apt install mc Edit ~/.config/mc/ini:\nskin=modarin256-defbg-thin Edit /root/.config/mc/ini:\nskin=modarin256root-defbg-thin SSH key # ssh-keygen -t ed25519 -C \u0026#34;your_email@example.com\u0026#34; Git # sudo add-apt-repository ppa:git-core/ppa sudo apt install git git-lfs git-man git config --global user.name \u0026#34;Your Name\u0026#34; git config --global user.email \u0026#34;youremail@yourdomain.com\u0026#34; git config --global core.autocrlf input # You can use an existing SSH key to sign commits and tags git config --global gpg.format ssh git config --global user.signingkey /home/USERNAME/.ssh/id_ed25519 # To sign all commits by default git config --global commit.gpgsign true Insync # https://www.insynchq.com/downloads/linux#apt[https://www.insynchq.com/downloads/linux#apt]\nKeePassXC # sudo add-apt-repository ppa:phoerious/keepassxc sudo apt update sudo apt install keepassxc Java # Install SDKMAN! Install JetBrains Toolbox App Podman # Follow Podman Installation Instructions systemctl --user enable podman.socket --now ~/.zshrc\nexport DOCKER_HOST=\u0026#34;unix://$(podman info -f \u0026#34;{{.Host.RemoteSocket.Path}}\u0026#34;)\u0026#34;","date":"27 September 2024","externalUrl":null,"permalink":"/posts/2024-09-27-kubuntu-24-04/","section":"Posts","summary":"Installation # Note Before installing, it is necessary to modify some UEFI Settings. They can be accessed with F2 when booting.\nChange the SATA Mode from the default “RAID” to “AHCI”. This will allow Linux to detect the NVMe SSD. Disable Secure Boot. ","title":"Kubuntu XPS installation","type":"posts"},{"content":"","date":"27 September 2024","externalUrl":null,"permalink":"/tags/linux/","section":"Tags","summary":"","title":"Linux","type":"tags"},{"content":"","date":"27 September 2024","externalUrl":null,"permalink":"/","section":"Notes \u0026 bookmarks","summary":"","title":"Notes \u0026 bookmarks","type":"page"},{"content":"","date":"27 September 2024","externalUrl":null,"permalink":"/posts/","section":"Posts","summary":"","title":"Posts","type":"posts"},{"content":"","date":"27 September 2024","externalUrl":null,"permalink":"/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"},{"content":"Next time you\u0026rsquo;re afraid to share an idea, remember someone once said in a meeting ‘let\u0026rsquo;s make a film with a tornado full of sharks’\n","externalUrl":null,"permalink":"/about/","section":"Notes \u0026 bookmarks","summary":"Next time you’re afraid to share an idea, remember someone once said in a meeting ‘let’s make a film with a tornado full of sharks’\n","title":"About","type":"page"},{"content":"","externalUrl":null,"permalink":"/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"},{"content":" Git # How Core Git Developers Configure Git Java # Java API Java Platform, core libraries, NIO, FFM etc. java.net.http properties JavaFX JavaFX API FXML CSS Reference Guide Checkstyle Style Guides # API \u0026amp; JSON # Structured error messages for HTTP APIs Google API Improvement Proposals Google JSON Style Guide Zalando RESTful API and Event Guidelines Hyphen, underscore, or camelCase as word delimiter in URIs You should use hyphens in a crawlable web application URL. Why? Because the hyphen separates words (so that a search engine can index the individual words), and a hyphen is not a word character. Underscore is a word character, meaning it should be considered part of a word.\nDouble-click this: camelCase Double-click this: under_score Double-click this: hyphen-ated See how browser only thinks one of those is two words?\ncamelCase and underscore also require the user to use the shift key, whereas hyphenated does not.\nWriting stile guides # Back End, Back-End Don\u0026rsquo;t use if you can substitute a more specific term, such as server, operating system, database, or network.\nTwo words as a noun. Hyphenate as an adjective.\nfront end, front-end In content for a general audience, don\u0026rsquo;t use as a synonym for the desktop interface to a database or server. Instead, refer to the program by name, or use interface, program, app, or another specific and accurate term instead. It\u0026rsquo;s OK to use these terms in content for a technical audience.\nTwo words as a noun. Hyphenate as an adjective.\nMicroservices # Design patterns in microservices: Direct, API Gateway, Backend for Frontend Circuit Breaker pattern \u0026ldquo;AI\u0026rdquo; # A very comprehensive and precise spec ","externalUrl":null,"permalink":"/links/","section":"Notes \u0026 bookmarks","summary":"Git # How Core Git Developers Configure Git Java # Java API Java Platform, core libraries, NIO, FFM etc. java.net.http properties JavaFX JavaFX API FXML CSS Reference Guide Checkstyle Style Guides # API \u0026 JSON # Structured error messages for HTTP APIs Google API Improvement Proposals Google JSON Style Guide Zalando RESTful API and Event Guidelines Hyphen, underscore, or camelCase as word delimiter in URIs You should use hyphens in a crawlable web application URL. Why? Because the hyphen separates words (so that a search engine can index the individual words), and a hyphen is not a word character. Underscore is a word character, meaning it should be considered part of a word.\n","title":"Guidelines \u0026 links","type":"page"}]