OMG, mam Linuksa i nie wiem co dalej cz 1
Data: 2016-08-11, autor: Michał MisztalTak jak w tytule. Niby proste rzeczy ale nie do końca, zwłaszcza gdy ktoś przesiał się z Windowsa. Większość friendly dystrybucji tworzy konfigurację z automatu. A co jeśli jednak samo się nie ustawi, bo ktoś na początek wypalił z Archem, Slackware czy FreeBSD? Tak naprawdę instalatory dystrybucji Linuksowych to skrypty powłoki opakowane w proste graficzne (lub nie) GUI (CLI). Skrypty te konfigurują podstawowe ustawienia systemu (/etc).
Nie mogę wpisać "ł" i innych polskich znaków
Można dynamicznie przełączać układ klawiatury poleceniem setxkblayout np
[user@komputer ~]$ setxkblayout pl
No ale trzeba by to robić po każdym restarcie. Można dopisać to do skryptów uruchomieniowych użytkownika, systemu lub jako demona init. Ale to też sposoby pośrednie. Taką konfiguracją w systemie zajmuje się X Window System. Należy utworzyć plik /etc/X11/xorg.conf.d/10-keyboard.conf z zawartością
Section "InputClass" Identifier "system-keyboard" MatchIsKeyboard "on" Option "XkbLayout" "pl" Option "XkbModel" "pc104" EndSection
Zapisać, zrestartować system. Jeszcze tylko słowem wyjaśnienia folder /etc/X11/xorg.conf.d. Służy do przechowywania konfiguracji serwera X. Nazwy plików mają znaczenie. Serwer X z tych plików tworzy w momencie uruchomienia jeden wspólny plik konfiguracji. Liczba na początku pliku określa w którym miejscu (kolejności) ten plik zostanie załadowany. Wszystkie pliki muszą mieć rozszerzenie conf inaczej X nie załaduje takiego delikwenta.
Mam kilka systemów na komputerze i każdy pokazuje inną godzinę
Winą takiego stanu są różne ustawienia zegara systemowego (no co ty?). Już wyjaśniam. Mamy dwa formaty obsługi czasu - UTC (czas uniwersalny, zwany również czasem Greenwich) i CEST (czas lokalny np czas warszawski). Uniksy (w tym i Linux) domyślnie obsługuje czas UTC bo to logiczne i tak powinno się to odbywać (funkcja date() zwraca ilość sekund od pierwszego stycznia roku 1970 i jest to wartość bezwzględna (niestety nie w Microsoft)). W takim przypadku godzina ustawiona w BIOS jest godziną czasu UTC natomiast system wywołuje ją jako godzina+stała_localtime. Tzn np gdy w Warszawie mamy godzinę 14 czasu letniego to w BIOS jest ustawiona 12 (czasu UTC). Funkcja systemowa date() zwraca czas skorygowany o wartość localtime. Zatem wszelkie ingerencje w BIOS nawet w momencie przejścia na czas zimowy/letni nie wymagają aktualizacji godziny w BIOS co jest prawidłowym zachowaniem. Jeśli mamy dwa Uniksy to należy sprawdzić czy oba obsługują tą samą konfigurację godziny. Sprawa nieco komplikuje się w przypadku Windows. Tam ktoś wymyślił, że czas systemu to czas BIOS i w drugą stronę. BIOS ma domyślne ustawienia dla czasu miejscowego. Można zmusić Windows do obsługi czasu UTC (od Windows 7 w górę) ale Microsoft to niereformowalna korporacja i prościej będzie przekonfigurować Uniksy na CEST, choć jeśli mamy możliwość zawsze używajmy ustawień UTC. Żeby zmienić ustawienia zegara wklepujemy w terminalu, dla UTC
[root@komputer]# hwclock --systohc --utc
I dla czasu miejscowego
[root@komputer]# hwclock --systohc --localtime
Kiedyś o czasie w kategorii systemów operacyjnych napiszę nieco więcej bo to bardzo ciekawe zagadnienie.
Godzina na komputerze nie zgadza się
Czasu ciąg dalszy. Aby zawsze mieć aktualny czas należy użyć programu NTP (Network Time Protocol) który łączy się z serwerem czasu i aktualizuje czas systemowy. Sam komputer nie jest zbyt dokładny jeśli chodzi o czas. Potrzebuje synchronizacji. Synchronizację czasu można przeprowadzić ręcznie, z wykorzystaniem usługi cron lub przy każdorazowym uruchomieniu systemu jako demona init. Powiedzmy, że utworzymy usługę automatycznej aktualizacja czasu w zegarze BIOS przy starcie systemu. Tworzymy plik /etc/systemd/system/ntpdate.service.d/hwclock.conf a w nim
[Service] ExecStart=/usr/bin/hwclock -w
Uruchomić usługę przy starcie można poleceniem
[root@komputer]# systemctl enable ntpdate
Przy sprawdzeniu statusu okaże się, że ma wartość failed. Wszystko jest w porządku. Proces się uruchamia, synchronizuje i wyłącza.