wtorek, 5 lutego 2013

Archlinux - problemy z weryfikacją pakietów podczas instalacji

Pacman, domyślny menedżer pakietów w Archu, umożliwia weryfikowanie pakietów na podstawie podpisów, niestety niekiedy mechanizm ten sprawia problemy. Co można zrobić?
Pierwsza rzecz to wydać polecenie pacman-key --refresh-keys, które powinno zaktualizować lokalną bazę kluczy. Notabene odświeżenie kluczy zapewnia również instalacja pakietu archlinux-keyring. Jeżeli to nie pomoże, spróbuj zmienić repozytorium w /etc/pacman.d/mirrorlist. Jeżeli i to nie pomoże, można spróbować następujących kroków:

  1. W pliku konfiguracyjnym pacman.conf tymczasowo wyłączamy weryfikację pakietów dla repozytoriów core, extra i community, czyli wpisujemy SigLevel = Never,
  2. rm -R /etc/pacman.d/gnupg - usunięcie katalogu z kluczami,
  3. rm /var/cache/pacman/pkg/* - opróżnienie cachu pakietów, wymagane, gdyż w przeciwnym razie mogą wystąpić błędy mówiące o uszkodzonych pakietach,
  4. w tym miejscu trzeba czasem zmienić serwer, z którego pobierane są pakiety (zajrzyj do pliku /etc/pacman.d/mirrolist),
  5. pacman -Syu archlinux-keyring - instalujemy aktualne klucze Archa,
  6. pacman-key --init - przygotowanie lokalnej bazy kluczy, podczas tej operacji warto w innych konsolach wydać polecenie ls -R / oraz poruszać i poklikać myszą, co przyśpieszy generowanie entropii; można też zainstalować pakiet haveged i poprzedzić inicjalizację poleceniem haveged -w 1024,
  7. pacman-key --populate archlinux - inicjalizacja kluczy, podczas której należy potwierdzić zaufanie dla kluczy głównych deweloperów wciskając "T" + Enter (samo Enter nie wystarczy!),
  8. W pliku pacman.conf przywracamy weryfikację podpisów, czyli ustawiamy SigLevel = PackageRequired dla poszczególnych repozytoriów,
  9. pacman -Syyu - odświeżenie list pakietów i aktualizacja systemu.

Jeżeli powyższe kroki nie umożliwią bezproblemowej instalacji pakietów, pozostaje wspomniana opcja SigLevel = Never. To rozwiązanie ostateczne, wyłącza przecież weryfikację podpisów pakietów, nie jest więc polecenie, ale czasem przydaje się, żeby "awaryjnie" zainstalować jakiś pakiet.

Niestety, zdarzyło się ostatnio kilka razy po zainstalowaniu najnowszego Bridge Linuksa, że powyższe porady nie przyniosły oczekiwanego skutku. Ciągle pozostawał jeden pakiet, co do którego pojawiała się informacja mówiąca o jego uszkodzeniu. Rozwiązanie było następujące: usunięcie problematycznego pakietu wg sugestii pacmana, tymczasowa zmiana serwera, zainstalowanie opornego pakietu, przywrócenie poprzedniego serwera (notabene niekonieczne, ale był szybszy) i dalsza instalacja (aktualizacja).

czwartek, 10 stycznia 2013

Problemy z Dnsmasq

Opis konfiguracji Dnsmasq na serwerze Ubuntu 12.04 LTS znajduje się tutaj. Czasem jednak nie wszystko do końca działa, jak trzeba. Dobrze skonfigurowany Dnsmasq powinien zapewniać rozwiązywanie nazw hostów podpiętych do lokalnej sieci. Można to osiągnąć stosując adresowanie statyczne IP oraz dopisując aliasy hostów w pliku /etc/host na serwerze. Plik ten jest następnie propagowany do hostów w sieci lokalnej. Jeżeli jednak chcemy korzystać z adresowania dynamicznego (co nie przeszkadza oczywiście adresować wybranych hostów statycznie) i mieć możliwość rozwiązywania lokalnych nazw, musimy sprawdzić kilka rzeczy, na co zwraca uwagę m.in. FAQ Dnsmasqa.
  1. Upewniamy się, że na interfejsie, na którym nasłuchujemy żądań z sieci lokalnej jest dobrze ustawiony adres broadcast, który w systemach opartych na debianie ustawiamy w /etc/network/interfaces; polecenie sudo ip addr pozwoli sprawdzić poprawność ustawień.
  2. Porty 67 i 68 dla protokołu UDP oraz ruch dla pakietów broadcast z adresem źródłowym 0.0.0.0 i adresem przeznaczenia 255.255.255.255 powinny być odblokowane w firewallu na interfejsie lokalnym. Jeżeli w sieci mamy MS Vistę, to do firewalla dodajemy:
    iptables -A OUTPUT -o $INTIF -p udp -s $INTIP --sport 67 -d $UNIVERSE --dport 68 -j ACCEPT
    - gdzie $INTIF to nazwa interfejsu LAN, np. eth1, $INTIP - adres IP naszego serwera DHCP, $UNIVERSE - dowolny adres, czyli 0.0.0.0/0 (zobacz przykładową konfigurację firewalla).
  3. W przypadku systemów Windows XP zaleca się we właściwościach lokalnego połączenia sieciowego podać nazwę lokalnej domeny, czyli Panel sterowania / Połączenia sieciowe, prawy klik na połączeniu lokalnym i Właściwości / Protokół internetowy TCP/IP / Właściwości / Zaawansowane / DNS / Sufiks DNS dla tego połączenia: .mojadomena.org.
  4. Dystrybucje linuksa korzystają zazwyczaj z dwóch różnych klinetów dhcp. Jest to albo dhcpcd - z nim nie ma problemu, tzn. domyślnie wysyła do serwera nazwę hosta, albo dhclient, który jest również domyślnie wykorzystywany przez ostatnie wersje Network Managera, np. w Archu. W tym ostatnim przypadku musimy utworzyć plik /etc/dhclient.conf i wpisać w nim linię: send host-name = pick-first-value(gethostname(), "ISC-dhclient"); lub po prostu: send host-name = mojhost;.
  5. Warto dodać, że Network Manager na stacjach roboczych z Archem, podpiętych do sieci lokalnej za pomocą kabla, nie jest potrzebny. Możemy go odinstalować za pomocą polecenia: pacman -Rns networkmanager network-manager-applet. Pamiętać tylko trzeba, żeby uruchamiać domyślnie usługę dhcpcd, czyli: systemctl enable dhcpcd@eth0.service.

piątek, 21 grudnia 2012

Archlinux - konfiguracja


Po zainstalowaniu "czystego" Archa, co opisałem w poprzednim poście, czas na dostosowanie go do własnych potrzeb. Poniżej pokazuję, jak doinstalować i skonfigurować środowisko graficzne i programy użytkowe potrzebne w codziennej pracy. Wszystko wykonujemy po zalogowaniu się na konto roota.

Instalacja

Uwaga: znak ";" oznacza zatwierdzenie komendy, czyli naciśnięcie Enter; po znakach "#" umieszczono komentarze do poleceń.
  1. pacman -S sudo; visudo; #odkomentowujemy wpis %wheel ALL=(ALL) NOPASSWD: ALL, dzięki czemu zwykły użytkownik dodany do grupy wheel będzie mógł wykonywać polecenia administracyjne z użyciem sudo 
  2. pacman -S xorg-server xorg-xinit xorg-server-utils xterm mesa xf86-video-vesa xf86-video-... #instalacja serwera X, biblioteki grafiki 3D oraz sterownika karty graficznej, zamiast kropek trzeba wpisać: intel, nouveau lub ati; jeżeli ktoś ma wątpliwości lub starszy sprzęt powinien zajrzeć do podręcznika instalacji
  3. pacman -S alsa-utils lxdm xfce4 xfce4-goodies gvfs-smb xdg-user-dirs gksu #instalacja grfaicznego menedżera logowania (lxdm) oraz środowiska xfce4 i kilku narzędzi
  4. pacman -S ttf-dejavu ttf-liberation cantarell-fonts ttf-droid #podstawowe czcionki
  5. pacman -S mc p7zip zip unzip unrar file-roller #menedżer plików i archiwów
  6. pacman -S gtk-engine-murrine gtk-engine-unico #silniki tematów graficznych
  7. pacman -S leafpad evince gpicview vlc gimp gstreamer0.10-plugins audacious #instalacja edytora tekstów, przeglądarki pdf i plików graficznych oraz obsługi multimediów
  8. pacman -S chromium jre7-openjdk icedtea-web-java7 flashplugin #przeglądarka, obsługa javy i flasha 
  9. pacman -S libreoffice mythes mythes-pl hunspell hunspell-pl hyphen hyphen-pl #instalacja pakietu biurowego, podczas wyboru składników można pominąć pakiety numer 7,9,10 i 11, polski pakiet lokalizacji ma numer 73
  10. pacman -S geany #jeżeli ktoś programuje...
  11. pacman -S networkmanager network-manager-applet #menedżer połączeń sieciowych

Konfiguracja

  1. usermod -a -G wheel alek #dodanie konta zwykłego użytkownika do grupy wheel
  2. systemctl enable graphical.target #ustawienie graficznego trybu uruchamiania systemu jako domyślnego
  3. systemctl enable lxdm.service #ustawienie automatycznego uruchamiania graficznego menedżera logowania
  4. systemctl enable NetworkManager #automatyczne zarządzanie połączeniami sieciowymi
  5. nano /etc/skel/.xinitrc #odkomentować linię: exec startxfce4
  6. nano /etc/X11/xorg.conf.d/10-keyboard-layout.conf:
       Section "InputClass"
            Identifier "keyboard-layout"
            Driver "evdev"
            MatchIsKeyboard "yes"
            Option "XkbLayout" "pl, us"
       EndSection
    
  7. nano /etc/lxdm/lxdm.conf #ustawiamy w sekcji [base] session=/usr/bin/startxfce4 i sekcji [userlist] disable=1
  8. nano /etc/xdg/user-dirs.defaults #wpisujemy domyślne nazwy folderów użytkownika, np. Pulpit, Pobrane, Szablony, Publiczny, Dokumenty, Muzyka, Obrazy, Wideo

Uwagi

Zanim zrestartujemy system warto przetestować poprawność uruchamiania się serwera X, graficznego menedżera logowania i środowiska Xfce. W tym celu na drugiej konsoli logujemy się jako zwykły użytkownik, którego konto założyliśmy podczas instalacji, a następnie uruchamiamy usługę graficznego menedżera logowania: sudo systemctl start lxdm.
Jeżeli uda się nam zalogować, Xfce zaoferuje utworzenie panelu, wybieramy opcję "domyślny". Jeżeli nie, błędów szukamy w plikach: /var/log/Xorg.0.log oraz ~/.xsession-errors.

niedziela, 16 grudnia 2012

Archlinux - instalacja

Przygodę z Archlinuksem można zacząć od jakiejś dystrybucji opartej na nim, ale prostszej w instalacji i zazwyczaj już skonfigurowanej. Przykładami takich dystrybucji są Bridge Linux lub Cinnarch, które warto oczywiście wypróbować. Są o wiele lepiej przemyślane niż popularne Ubuntu. Jednak różnice pomiędzy "łatwiejszymi" dystrybucjami a "czystym" Archiem sprowadzają się w gruncie rzeczy do graficznego opakowania instalacji i (ewentualnie) konfiguracji.
Jeżeli chcemy poznać podstawy dystrybucji linuksowych, warto spróbować instalacji i konfiguracji Archa od podstaw. Dodatkową korzyścią takiego podejścia jest także szybciej i zazwyczaj stabilniej działający system, ponieważ znajdą się w nim tylko pakiety wymagane przez nasz sprzęt. Proces ten dla średniozaawansowanego lub po prostu chcącego się czegoś nauczyć użytkownika nie jest bardzo trudny ze względu na świetną dokumentację zapewnianą przez Wiki Archa. Na początku warto przejrzeć następujące strony:


Ponieważ powyższe zasoby są dosyć rozbudowane, uwzględniają wiele potencjalnych konfiguracji i omawiają różne możliwości, przygotowałem skróconą, podręczną wersję.

Najpierw pobieramy obraz aktualnego medium instalacyjnego, wypalamy go na CD lub przenosimy na pendrive'a, a następnie uruchamiamy z niego komputer. Po uruchomieniu systemu trafimy do konsoli tekstowej, w której przeprowadzamy właściwą instalację.

Instalacja

Uwaga: znak ";" oznacza zatwierdzenie komendy, czyli naciśnięcie Enter; po znakach "#" umieszczono komentarze do poleceń.
  1. loadkeys pl; setfont Lat2-Terminus16; #wczytanie polskiej klawiatury i ustawienie czcionki konsoli (można też użyć Lat2-Terminus16)
  2. nano /etc/locale.gen; #określamy język, w którym będziemy porozumiewali się z systemem; w pliku odkomentowujemy (tj. usuwamy znak #) linie zawierające wpisy: en_US.UTF-8 i pl_PL.UTF-8
  3. locale-gen; export LANG=PL_PL.UTF-8; #tworzymy bazę zlokalizowanych komunikatów systemowych i ustawiamy zmienną systemową określającą nasz język
  4. cfdisk /dev/sda #uruchamiamy narzędzie pozwalające przygotować partycje potrzebne do instalacji systemu, na początek wystarczą dwie, jedna o wielkości ok. 8-10 GB i druga, której wielkość jest dwa razy większa niż ilość pamięci RAM w naszym komputerze
  5. mkfs.reiserfs /dev/sda2; mount /dev/sda2 /mnt; #tworzymy system plików na przygotowanej partycji (można też użyć mkfs.ext4) i montujemy partycję instalacyjną
  6. mkswap /dev/sda3; swapon /dev/sda3; # tworzymy i montujemy partycję wymiany
  7. nano /etc/pacman.d/mirrorlist; #opcjonalnie wybieramy repozytorium
  8. pacstrap -i /mnt base base-devel; #instalujemy podstawowe grupy pakietów
  9. genfstab -U -p /mnt >> /mnt/etc/fstab; nano /mnt/etc/fstab; # generujemy plik fstab
  10. arch-chroot /mnt; #zmiana katalogu root na /mnt
  11. powtarzamy punkty 1-3
  12. echo LANG=pl_PL.UTF-8 > /etc/locale.conf #ustawiamy polski język w konsoli
  13. nano /etc/vconsole.conf; #spolszczamy konsolę: KEYMAP=pl; FONT=lat2-16; FONT_MAP=;
  14. ln -s /usr/share/zoneinfo/Europe/Warsaw /etc/localtime #ustawienie strefy czasowej
  15. hwclock --set --date="2012-12-14 14:12:05" --utc; hwclock --hctosys --utc #ustawienie zegara RTC (sprzętowego) na czas UTC i zsynchronizowanie go z zegarem systemowym
  16. timedatectl set-time "2012-12-14 14:12:05 ; timedatectl set-local-rtc 0 #tych poleceń można użyć po(!) instalacji do ustawienia zegara;
  17. echo archie > /etc/hostname; #ustawienie nazwy komputera (archie)
  18. systemctl enable dhcpcd@eth0.service; #uruchomienie automatycznej konfiguracji sieci. Uwaga: nazwa interfejsu może być inna, sprawdzamy ją, wydając polecenie: ip link.
  19. nano /etc/pacman.d/mirrorlist; #opcjonalne sprawdzenie repozytoriów
  20. mkinitcpio -p linux; #wygenerowanie obrazu initrd (initial ramdisk environment)
  21. passwd; #ustawienie hasła roota
  22. useradd -m -g users -G wheel,lp,optical,power,storage -s /bin/bash alek; passwd alek; #dodanie konta użytkownika i ustawienie hasła
  23. pacman -S grub-bios os-prober; grub-install --target=i386-pc --recheck --force /dev/sda; grub-mkconfig -o /boot/grub/grub.cfg; #instalacja bootmenedżera GRUB w MBR i wygenerowanie jego pliku konfiguracyjnego
  24. exit; umount /mnt; reboot; #wyjście ze środowiska chroot, odmontowanie i restart

  25. Uwagi

  • Relatywnie najtrudniejszym elementem jest tworzenie partycji. Jeżeli mamy na dysku jakiś system, a także (zazwyczaj) jakieś partycje, lepiej skorzystać z graficznego edytora partycji i z jego pomocą wygospodarować miejsce na instalację. Można użyć np. środowiska GParted Live lub CloneZilla. Oczywiście oznaczenia partycji (np. /dev/sda2), należy dostosować.
  • Menadżer pakietów w Archu, czyli pacman, używa repozytoriów zgodnie z kolejnością ich wystąpienia w pliku /etc/pacman.d/mirrorlist. Na początek warto skopiować jakieś europejskie repo, np. bardzo szybkie i często aktualizowane:
    Server = http://mir1.archlinux.fr/archlinux/$repo/os/$arch.
  • Uwaga: z doświadczenia wynika, że od czasu do czasu repozytorium trzeba zmienić ze względu na błędy podczas aktualizacji systemu.
  • Powyższa instrukcja pomija konfigurację sieci, zwłaszcza wifi, i zakłada automatyczne nawiązanie połączenia z internetem za pomocą łącza kablowego. Połączenie kablowe jest zalecane podczas instalacji.
  • W razie problemów zajrzeć trzeba do wspomnianych wyżej stron wiki.
W następnym wpisie przedstawię przykładową konfigurację Archa.

wtorek, 13 listopada 2012

Systemd i journal - polecenia

Archlinux przeszedł na nowy menedżer uruchamiania systemd, o czym pisałem poprzednio. W związku z tym zmienia się również domyślny sposób zarządzania usługami, jak i mechanizm logowania zdarzeń systemowych. Poniżej lista przydatnych poleceń.

Systemctl

  • $ systemctl start/stop/retsart vftpd.service - uruchomienie/zatrzymanie/restart usługi
  • $ systemctl enable/disable vftpd.service - włączenie/wyłączenie uruchamiania usługi podczas startu systemu
  • $ systemctl enable/disable sshd.socket - włączenie/wyłączenie uruchamiania usługi na żądanie
  • $ systemctl list-units --type=target - pokaż "usługi" typu target
  • $ systemctl isolate multi-user.target - uruchom podany "stan", zatrzymując inne; odpowiednik zmieniania poziomów (runlevel)
Szczegóły w manualu i na stronie projektu.

Journalctl

  • $ journalctl --b - log z bieżącego uruchomienia systemu
  • $ journalctl -n100 - pokaż ostatnie 100 wpisów
  • $ journalctl -u NetworkManager - pokaż logi dotyczące podanej "usługi"
Szczegóły w manualu i na stronie projektu.

Problemy z uruchomieniem

Po uruchomieniu się Gruba wciskamy "e" i w linii rozpoczynającej się od "linux" dodajemy jako parametr startowy jądra: systemd.unit=recovery.target lub w ostateczności: systemd.unit=emergency.target.

wtorek, 6 listopada 2012

Czysty systemd

Od 4.11.2012 domyślnym mechanizmem uruchamiania Archa jest systemd, a to oznacza, że podczas aktualizacji pakietów, np. w Bridge'u, należy pamiętać o kilku rzeczach. Przypomnijmy.

1) Ustawienia systemowe w plikach:
  • /etc/locale.conf
  • /etc/locale.gen
  • /etc/hostname
  • /etc/hosts
  • /etc/adjtime
  • /etc/vconsole.conf
  • /etc/environment
2) Usunięcie wsparcia dla initscripts, instalacja pakietu kompatybilności, usunięcie poprzedniego pliku konfiguracji systemu, pełna aktualizacja systemu:
  • pacman -R sysvinit initscripts
  • pacman -S systemd-sysvcompat
  • rm /etc/rc.conf
  • pacman -Syu
3) Ustawienie domyślnego poziomu (targetu) uruchamiania oraz domyślnie uruchamianych usług, np.:
  • systemctl enable graphical.target
  • systemctl enable lxdm.service
  • systemctl enable NetworkManager.service
4) Zmiana sposobu uruchamiania środowiska graficznego, np. XFCE w Bridge'u, co wymaga nowej zawartości pliku ~/.xinitrc:

#!/bin/sh

if [ -d /etc/X11/xinit/xinitrc.d ]; then
  for f in /etc/X11/xinit/xinitrc.d/*; do
    [ -x "$f" ] && . "$f"
  done
  unset f
fi

exec startxfce4

Po wykonaniu tych czynności wykonujemy restart, a system powinien wykorzystać już czysty systemd.

wtorek, 23 października 2012

Aktualizacja do Ubuntu 12.10 w linii poleceń

Po pierwsze należy zrobić standardową aktualizację systemu:
sudo apt-get update && sudo apt-get dist-upgrade

Jeżeli podczas aktualizacji zostanie zainstalowane nowe jądro, dobrze jest zrestartować system.
Następnie instalujemy menadżer aktualizacji:
sudo apt-get install update-manager-core

Sprawdzamy, czy w pliku /etc/update-manager/release-upgrades mamy wpis Prompt=normal, w razie potrzeby zmieniamy na podany.
Pozostaje uruchomić aktualizację:
sudo do-release-upgrade -d

Po potwierdzeniu kilku zapytań pobrane zostaną nowe pakiety (co w zależności od szybkości połączenia może trwać długo) i nastąpi aktualizacja wydania.