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.

piątek, 28 września 2012

Bridge Linux - Grub - konsola

Ostatnio po odtworzeniu obrazu dysku, na którym zainstalowany był Bridge Linux, używający Gruba2 zainstalowanego w MBR (startowy sektor dysku), powitała mnie konsola Gruba... 1. Wszystko przez ClonZillę, która obraz zrobiła poprawnie, ale podczas jego odtwarzania instalowała Gruba 1 zamiast 2.
Reanimacja systemu możliwa jest oczywiście z płyty instalacyjnej Bridge Linux Live, ale można prościej. Należy wykorzystać możliwości konsoli Gruba:

  • root (hd0,0) - wskazanie partycji, na której zainstalowany był Bridge (/dev/sda1);
  • kernel /boot/vmlinuz-linux ro - wskazanie jądra
  • initrd /boot/initramfs-linux.img - wskazanie obrazu startowego systemu plików
  • boot - uruchomienie

Po wydaniu powyższych komend, zgłosi się konsola awaryjna Bridge'a (Archa), czyli rootfs. Zakładając, że używamy systemd do uruchamiania systemu, wykonujemy następujące polecenia:

  • mkdir /boot - jeżeli mamy osobną partycję dla tego katalogu
  • mount /dev/sda1 /new_root - montujemy partycję, na której zainstalowaliśmy Bridge'a
  • cd /new_root
  • exec init=/bin/systemd

Po wydaniu ostatniego polecenia system powinien wystartować. Pozostaje wtedy zainstalować Gruba2:

  • sudo grub-install --target=i386-pc --recheck --force /dev/sda - instalacja w MBR
  • sudo grub-mkconfig -o /boot/grub/grub.cfg


Po restarcie powinniśmy zobaczyć menu startowe Gruba.

Bridge Linux - serwer SSH

Instalacja

sudo pacman -S openssh

Konfiguracja

Edytujemy plik /etc/ssh/sshd_config, w którym można dodać następujące opcje:
AllowUsers user1 user2
PermitRootLogin no

Pierwsza wskazuje użytkowników, którzy będą mogli logować się przez ssh; druga opcja zabrania logowania na konto roota.

Uruchomienie serwera

Mamy dwie możliwości:

  • sudo systemctl enable sshd.service - uruchomienie serwera ssh podczas startu systemu
  • sudo systemctl enable sshd.socket - uruchamianie serwera ssh po próbie połączenia


Proponuję wybrać drugie.

środa, 12 września 2012

Apache2 + PHP5 na Ubuntu 12.04 i Archlinux

Chodzi o zainstalowanie serwera www z obsługą php w katalogach domowych użytkownika.

Ubuntu 12.04


Instalujemy pakiety:
sudo apt-get install apache2 php5 php5-gd php5-sqlite

Po instalacji edytujemy /etc/apache2/mods-available/php5.conf, aby odkomentować wspracie dla php w katalogach użytkownika. Następnie uaktywniamy odpowiednie moduły apache'a:
sudo a2enmod userdir rewrite
sudo service apache2 restart - restart usługi


Archlinux, Bridge Linux


Instalujemy pakiety:
sudo pacman -S apache php php-gd php-sqlite
sudo pacman -S systemd-httpd-units
- pliki konfiguracyjne usługi dla systemd
sudo packer -S php-apache

Do pliku /etc/httpd/conf/httpd.conf dodajemy:
  • LoadModule php5_module modules/libphp5.so - na końcu sekcji LoadModule,
  • Include conf/extra/php5_module.conf - na końcu sekcji Include, pod koniec pliku.

W tym samym pliku odkomentowujemy:
  • TypesConfig conf/mime.types - powinno być odkomentowane domyślnie,
  • MIMEMagicFile conf/magic - opcjonalnie.

Do pliku /etc/httpd/conf/mime.types dodajemy na końcu listy "application":
application/x-httpd-php5 php php5

sudo systemctl start httpd.service - uruchomienie
systemctl status httpd.service - status


Błędy


W obydwu systemach zaglądamy do logów:
  • cat /var/log/apache2/error.log - Ubuntu
  • cat /var/log/httpd/error.log - Arch

Katalogi użytkownika


Tworzymy katalog na strony www:
mkdir public_html

Tworzymy plik testowy index.php z zawartością:
<?php
    phpinfo();
?>
- i zapisujemy w public_html. W przeglądarce wpisujemy localhost/~nazwa_użytk i powinniśmy zobaczyć informacje o środowisku php i serwerze.