Wpis ma charakter rozwojowy i będzie aktualizowany w miarę pojawienia się nowych informacji związanych z tematem aktualizacji i konserwacji systemu Ubuntu.
Pierwsze kroki po instalacji systemu Ubuntu 22.04 w maszynie wirtualnej Proxmox VE
Aktualizacja systemu
sudo apt update && sudo apt upgrade sudo reboot
Konfiguracja nienadzorowanych automatycznych instalacji
# instalacja pakietów unattended-upgrades (domyślnie zainstalowany w Ubuntu 22.04)
sudo apt install unattended-upgrades
# sprawdzenie stanu usługi unattended-upgrades (domyślnie włączona w Ubuntu 22.04)
sudo systemctl status unattended-upgrades.service
# edycja parametrów usługi unattended-upgrades
# domyślnie są włączone apps-security oraz infra-security
nano /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
// Extended Security Maintenance; doesn't necessarily exist for
// every release and this system may not have it installed, but if
// available, the policy for updates is such that unattended-upgrades
// should also install from here by default.
"${distro_id}ESMApps:${distro_codename}-apps-security";
"${distro_id}ESM:${distro_codename}-infra-security";
// "${distro_id}:${distro_codename}-updates";
// "${distro_id}:${distro_codename}-proposed";
// "${distro_id}:${distro_codename}-backports";
};
sudo systemctl restart unattended-upgrades.service
Instalacja qemu guest agent
sudo apt install qemu-guest-agent sudo systemctl start qemu-guest-agent # z konsoli serwera Proxmox qm agent 222 ping
Ustawienie strefy czasowej
# sprawdzenie aktualnej strefy czasowej sudo timedatectl # sprawdzenie dostępnych stref czasowych sudo timedatectl list-timezones # ustawienie strefy czasowe sudo timedatectl set-timezone Europe/Warsaw
Ustawienie synchronizacji czasu
# sprawdzenie statusu domyślnej usługi synchronizacji czasu sudo systemctl status systemd-timesyncd # włączenie / wyłączenie synchronizacji czasu sudo timedatectl set-ntp on sudo timedatectl set-ntp off # ustawienie własnych serwerów czasu sudo nano /etc/systemd/timesyncd.conf [Time] NTP=tempus1.gum.gov.pl tempus2.gum.gov.pl FallbackNTP=ntp.ubuntu.com # restart po zmianach konfiruacji sudo systemctl restart systemd-timesyncd # sprawdzenie czasu timedatectl
Ustawienie nazwy serwera
# zmiana nazwy na np. lab.netapps.ovh sudo hostnamectl set-hostname lab.netapps.ovh # sprawdzenie nazwy hostname # należy jeszcze sprawdzić /etc/hosts sudo /etc/hosts 127.0.1.1 lab lab.netapps.ovh
Ustawienie dynamicznego adresu IP serwera
# edycja pliku yaml z połączeniem # bardzo ważne są wszystkie wcięcia sudo nano /etc/netplan/50-cloud-init.yaml # zatwierdzenie zmian w systemie sudo netplan apply
Ustawienia stałego adresu ip serwera
# edycja pliku yaml z połączeniem # bardzo ważne są wszystkie wcięcia sudo nano /etc/netplan/00-installer-config.yaml # zatwierdzenie zmian w systemie sudo netplan apply
Więcej informacji na temat konfiguracji stałego adresu ip w Ubuntu 22.04 jest na stronie https://vitux.com/how-to-configure-networking-with-netplan-on-ubuntu/
Zmiana parametru swappiness w systemie Ubuntu
# sprawdzenie obecnego poziomu swappiness sudo cat /proc/sys/vm/swappiness 30 # ustawienie parametru swappiness do czasu restartu serwera sudo sysctl vm.swappiness=60 # ustawienie wielkości swappiness na stałe sudo echo "vm.swappiness=0" | sudo tee -a /etc/sysctl.d/99-swappiness.conf
Ustawienia swap w systemie Ubuntu
# sprawdzenie czy jest obecnie swap sudo swapon --show # wyłączenie obecnego swapa sudo swapoff /swap.img rm -rf /swap.img # dodanie nowego pliku swap sudo fallocate -l 4G /var/swap mkswap -f /var/swap chmod 0600 /var/swap sudo swapon /var/swap # dopisanie do /etc/fstab aby swap był montowany automatycznie podczas startu systemu nano /etc/fstab /var/swap none swap sw 0 0
Ustawienie profilu tuned-adm
# instalacja tuned sudo apt install tuned tuned-utils tuned-utils-systemtap # ustawienie profilu najlepszego dla maszyny wirtualnej sudo tuned-adm profile virtual-guest # sprawdzenie aktualnego profilu sudo tuned-adm active
Instalacja przydatnego oprogramowania
# oprogramowanie użytkowe sudo apt install mc net-tools mc screen gnupg2 curl git wget nano unzip ncdu bzip2 unrar bc vim lynx nmap sshpass # oprogramowanie testujące sudo apt install sysbench stress vnstat sysstat htop atop iftop btop nmon glances # klient FUSE sudo apt-get install sshfs # klient NFS sudo apt-get install portmap nfs-common # klient SMB/CIFS sudo apt-get install cifs-utils
Konfiguracja serwera OpenSSH w systemie Ubuntu
Więcej informacji na ten temat można znaleźć na stronie Instalacja i konfiguracja serwera OpenSSH w systemie Ubuntu – IT Admin (vblog.ovh)
Zarządzanie dyskami i partycjami EXT4 / LVM w systemie Ubuntu
Więcej informacji na ten temat można znaleźć na stronie Zmiana rozmiaru dysku podłączonego do maszyny wirtualnej w systemie Linux na Proxmox VE – IT Admin (vblog.ovh)
Konserwacja systemu Ubuntu
Zarządzanie usługami w systemie Ubuntu
# lista obecnie uruchomionych usług sudo systemctl list-units --type=service --state=running UNIT LOAD ACTIVE SUB DESCRIPTION cron.service loaded active running Regular background program processing daemon dbus.service loaded active running D-Bus System Message Bus [email protected] loaded active running Getty on tty1 irqbalance.service loaded active running irqbalance daemon ModemManager.service loaded active running Modem Manager multipathd.service loaded active running Device-Mapper Multipath Device Controller networkd-dispatcher.service loaded active running Dispatcher daemon for systemd-networkd polkit.service loaded active running Authorization Manager qemu-guest-agent.service loaded active running QEMU Guest Agent rsyslog.service loaded active running System Logging Service snapd.service loaded active running Snap Daemon ssh.service loaded active running OpenBSD Secure Shell server systemd-journald.service loaded active running Journal Service systemd-logind.service loaded active running User Login Management systemd-networkd.service loaded active running Network Configuration systemd-resolved.service loaded active running Network Name Resolution systemd-timesyncd.service loaded active running Network Time Synchronization systemd-udevd.service loaded active running Rule-based Manager for Device Events and Files udisks2.service loaded active running Disk Manager unattended-upgrades.service loaded active running Unattended Upgrades Shutdown [email protected] loaded active running User Manager for UID 1000 LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. 21 loaded units listed. # sprawdzenie powiązań z innymi usługami sudo systemctl list-dependencies multi-user.target | grep Modem ● ├─ModemManager.service # zatrzymanie usługi sudo systemctl stop ModemManager # wyłączenie usługi sudo systemctl disable ModemManager # usunięcie pakietów związanych z usługą sudo apt-get purge modemmanager
Analiza która usługa spowalnia wyłączanie systemu
sudo journalctl -u systemd-shutdownd
lub
sudo journalctl -rb -1
# po logach widać, że zbyt długo zamyka się jedna z usług tutaj icinga2
# dodajemy / zmieniamy
# TimeoutStartSec=1m
# KillMode=process
# TimeoutSec=60
sudo nano /usr/lib/systemd/system/icinga2.service
[Unit]
Description=Icinga host/service/network monitoring system
Documentation=https://icinga.com/docs/icinga2/latest/
After=network-online.target postgresql.service mariadb.service carbon-cache.service carbon-relay.service
[Service]
Type=notify
UMask=0007
EnvironmentFile=/usr/lib/icinga2/icinga2
EnvironmentFile=/etc/default/icinga2
ExecStartPre=/usr/lib/icinga2/prepare-dirs /usr/lib/icinga2/icinga2
ExecStart=/usr/sbin/icinga2 daemon -e ${ICINGA2_ERROR_LOG}
ExecReload=/usr/lib/icinga2/safe-reload /usr/lib/icinga2/icinga2
TimeoutStartSec=1m
KillMode=process
TimeoutSec=60
PIDFile=/run/icinga2/icinga2.pid
[Install]
WantedBy=multi-user.target
# po zmianach w definicji usług
systemctl daemon-reload
Format historii poleceń konsoli w bashrc
# dla aktualnego użytkownika (nie root-a) nano ~/.bashrc # lub przechodzimy na konto root-a sudo su -- nano /root/.bashrc # zwiększamy rozmiar historii poleceń HISTSIZE=10000 HISTFILESIZE=20000 # na samym dole dodajemy format daty dla polecenia history # np. 4 2023-05-31, 10:36:32 htop export HISTTIMEFORMAT='%F, %T ' # dodaj następujący wiersz, jeśli chcesz dołączyć polecenia do pliku historii zamiast nadpisywania shopt -s histappend # Bash domyślnie zapisuje sesję w pliku historii bash dopiero po zakończeniu sesji. # Aby zmienić to domyślne zachowanie i sprawić, by natychmiast zapisywało każde wykonane polecenie dodaj na końcu PROMPT_COMMAND='history -a'
Kolorowanie składni nano
# dla każdego użytkownika systemowego
find /usr/share/nano/ -iname "*.nanorc" -exec echo include {} \; >> ~/.nanorc
crontab harmonogram zadań w systemie Ubuntu
# edycja crontab usera linuser crontab -e -u linusr # wyświetlenie crontaba usera linuser crontab -l -u linusr # podgląd crontab w inny sposób cat /var/spool/cron/crontabs/root # systemowe crony są w /etc/cron.d/ oraz /etc/cron.daily/ /etc/cron.hourly/ /etc/cron.monthly/ itd. # dodawane tam wpisy powinny mieć uprawnienia root-a i kończyć się nową linią
Symulator ustawień crontab https://crontab.guru/ .Więcej informacji o crontab można znaleźć na tej stronie https://www.digitalocean.com/community/tutorials/how-to-use-cron-to-automate-tasks-ubuntu-1804
Analiza logów systemowych Ubuntu
syslog: Plik syslog zawiera ogólne dzienniki aktywności systemu. Zawiera informacje o zdarzeniach systemowych, uruchamianiu i zatrzymywaniu usług, komunikatach jądra i innych działaniach związanych z systemem.
auth.log: Plik auth.log zawiera dzienniki związane z uwierzytelnianiem. Rejestruje zdarzenia związane z uwierzytelnianiem użytkownika, takie jak udane i nieudane próby logowania, zmiany hasła i błędy uwierzytelniania.
kern.log: Plik kern.log przechowuje komunikaty związane z jądrem. Rejestruje zdarzenia jądra, takie jak błędy sprzętowe, informacje o sterownikach urządzeń oraz szczegóły ładowania/rozładowywania modułów jądra.
dpkg.log: Plik dpkg.log przechowuje dziennik działań zarządzania pakietami wykonywanych za pomocą polecenia dpkg. Rejestruje instalacje pakietów, uaktualnienia i usunięcia.
boot.log: Plik boot.log zawiera informacje związane z procesem uruchamiania systemu. Rejestruje komunikaty podczas sekwencji rozruchu, w tym inicjalizację jądra, uruchomione usługi i inne zdarzenia związane z rozruchem.
ufw.log: Jeśli włączona jest nieskomplikowana zapora sieciowa (UFW), plik ufw.log zawiera dzienniki związane z zaporą ogniową. Rejestruje zmiany reguł zapory, zablokowane połączenia i inne zdarzenia związane z zaporą.
Szukanie błędów przy pomocy dmesg
Jeśli masz problemy z nierozpoznawaniem sprzętu lub jego nieprawidłowym działaniem, dmesg może rzucić trochę światła na ten problem. Użyj dmesg, aby przejrzeć wiadomości od najwyższego poziomu do każdego niższego poziomu, szukając błędów lub ostrzeżeń, które wspominają o elemencie sprzętowym lub mogą mieć związek z problemem. Użyj dmesg, aby wyszukać jakąkolwiek wzmiankę o odpowiednim obiekcie, aby zobaczyć, czy zawierają one przydatne informacje. Przeprowadź potok dmesg przez grep i poszukaj powiązanych ciągów lub identyfikatorów, takich jak producent produktu lub numery modeli.
Użyj opcji –follow i oglądaj wiadomości dmesg w czasie rzeczywistym.
# znacznik czasowy -T humad readable sudo dmesg -T sudo dmesg | last -10 sudo dmesg | grep -i usb sudo dmesg | grep -i sda sudo dmesg | grep -E "memory|tty|dma" sudo dmesg -l debug,notice sudo dmesg -f daemon kern: Kernel messages. user: User-level messages. mail: Mail system. daemon: System daemons. auth: Security/authorization messages. syslog: Internal syslogd messages. lpr: Line printer subsystem. news: Network news subsystem.
Usuwanie niepotrzebnego oprogramowania systemowego Ubuntu
# sprawdzenie wersji zainstalowanych kerneli dpkg --list | egrep -i --color 'linux-image|linux-headers' ii linux-headers-5.15.0-73 5.15.0-73.80 all Header files related to Linux kernel version 5.15.0 ii linux-headers-5.15.0-73-generic 5.15.0-73.80 amd64 Linux kernel headers for version 5.15.0 on 64 bit x86 SMP ii linux-headers-generic 5.15.0.73.71 amd64 Generic Linux kernel headers ii linux-image-5.15.0-73-generic 5.15.0-73.80 amd64 Signed kernel image generic ii linux-image-generic 5.15.0.73.71 amd64 Generic Linux kernel image # sprawdzamy którą wersję aktualnie kernela używamy uname -r 5.15.0-73-generic # jeśli są jakieś stare i niepotrzebne wersje kernelato usuwamy je poleceniem sudo apt remove --purge linux-headers-5.15.0-70-generic # usunięcie niepotrzebnych już wersji oprogramowania sudo apt-get autoremove --purge # wyczyszczenie lokalnego repozytorium ze ściągniętych pakietów sudo apt-get autoclean
Zarządzanie rozmiarem dziennika logów systemu Ubuntu
Domyślnie systemd-journald zapewnia usunięcie starszych rekordów dziennika lub plików dziennika logów, aby zachować pewną ilość wolnego miejsca na dysku. Możemy użyć journalctl do zarządzania rozmiarem dziennika.
# sprawdzenie zajętości systemu przez logi sudo journalctl --disk-usage sudo nano /etc/systemd/journald.conf [Journal] #Storage=auto Compress=yes #Seal=yes #SplitMode=uid #SyncIntervalSec=5m #RateLimitIntervalSec=30s #RateLimitBurst=10000 SystemMaxUse=50M #SystemKeepFree= SystemMaxFileSize=10M #SystemMaxFiles=100 #RuntimeMaxUse= #RuntimeKeepFree= #RuntimeMaxFileSize= #RuntimeMaxFiles=100 #MaxRetentionSec= #MaxFileSec=1month #ForwardToSyslog=yes #ForwardToKMsg=no #ForwardToConsole=no #ForwardToWall=yes #TTYPath=/dev/console #MaxLevelStore=debug #MaxLevelSyslog=debug #MaxLevelKMsg=notice #MaxLevelConsole=info #MaxLevelWall=emerg #LineMax=48K #ReadKMsg=yes #Audit=no # restart usługi journald sudo systemctl restart systemd-journald # przycięcie już istniejących zbyt dużych logów sudo journalctl --vacuum-size=50M # weryfikacja po zmianach zajętości logów sudo journalctl --disk-usage
Zarządzanie MOTD w systemie Ubuntu
# wyłączenie MOTD w systemie Ubuntu sudo chmod -x /etc/update-motd.d/* # włączenie MOTD w systemie Ubuntu sudo chmod o+rx /etc/update-motd.d/* # ustawienie neofetch jako MOTD w systemie sudo chmod -x /etc/update-motd.d/* sudo apt-get install neofetch sudo bash -c $'echo "neofetch" >> /etc/profile.d/mymotd.sh && chmod +x /etc/profile.d/mymotd.sh'
Usunięcie z komunikatu no codec found przy starcie maszyny wirtualnej
sudo nano /etc/modprobe.d/blacklist.conf blacklist floppy blacklist snd_hda_intel # po zapisaniu zmian sudo update-initramfs -u reboot




