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.

niedziela, 2 września 2012

Bridge Linux i Systemd

W poprzednim poście nt. instalacji najnowszego Bridge'a poruszyłem temat migracji na nowy mechanizm startowy systemd. Wypada rozszerzyć i uporządkować uwagi dotyczące wdrażania tego rozwiązania.

Pliki konfiguracyjne

Pierwszym, nieodzownym warunkiem przejścia na systemd jest zastąpienie dotychczasowego pliku konfiguracyjnego Archa, tj. rc.conf, plikami charakterystycznymi dla nowego systemu, co opisałem wcześniej:

  • /etc/hostname
  • /etc/vconsole.conf
  • /etc/locale.conf
  • /etc/timezone
  • /etc/adjtime
  • /etc/environment

Obsługa modułów ładowanych podczas uruchamiania systemu realizowana jest przez pliki z katalogu /etc/modules-load.d/ [więcej], moduły blokowane konfigurujemy w katalogu /etc/modprobe.d/ [więcej].

Próbne użycie systemd

Pierwsze użycie systemd wiąże się z czynnościami opisanymi w poprzednim poście:
  • w /etc/environment wstawiamy: LANG=pl_PL.utf8
  • w /etc/default/grub dopisujemy: GRUB_CMDLINE_LINUX_DEAFAULT="quiet init=/bin/systemd"
  • sudo grub-mkconfig -o /boot/grub/grub.cfg - aktualizujemy Gruba
  • sudo systemctl enable graphical.target - ustawiamy domyślny target (runlevel, poziom) uruchamiania
  • sudo systemctl enable lxdm.service - uruchamiamy podczas startu systemu menedżer logowania
Restart i... wszystko powinno działać.

Tylko systemd

Jeżeli po restarcie wszystko (lub prawie) działa, należy spróbować całkowitego zastąpienia dotychczasowych skryptów startowych nowym mechanizmem:
  • sudo pacman -R sysvinit initscripts - usuwamy stare skrypty startowe
  • sudo pacman -S systemd-sysvcompat - instalujemy pakiet kompatybilności systemd z sysvinit
  • sudo systemclt enable NetworkManager.service - jeżeli wykorzystujemy NetworkManagera do zarządzania połączeniami sieciowymi uruchamiamy go podczas startu systemu
Restart i... wszystko powinno działać.
Jeżeli wszystko (lub prawie) działa, z domyślnej konfiguracji Gruba można usunąć parametr "init=/bin/systemd", pamiętając o zaktualizowaniu potem pliku koniguracyjnego.

Journal zamiast syslog-ng

Systemd zawiera własną usługę logowania, journal. Syslog-ng można odinstalować lub skonfigurować do używania razem z journalem. Domyślnie logi journala są tracone po restarcie, aby tak nie było należy utworzyć klatalog: sudo mkdir /var/log/journal. Rozmiar logu ustawiamy w pliku /etc/ssytemd/journald.conf, np. na 20 MB:
SystemMaxUse=20M
Użyteczne polecenia:
  • journalctl - wyświetlenie logów
  • journalctl _SYSTEMD_UNIT=alsa.service - przykładowe filtrowanie logów

sobota, 1 września 2012

Bridge Linux 2012.8 i systemd

Jak zainteresowanym wiadomo, dostępna jest następna kompilacja Bridge Linux, oznaczona 2012.8. Instalacja przebiega tak samo, jak w wersji 2012.5, ale domyślnie instalowany jest GRUB2. W moim przypadku po restarcie okazało się, że bootmenedżer poprawnie się nie zainstalował. Musiałem więc jeszcze raz uruchomić komputer z wypalonej instalki Bridge'a i wklepać trochę kodu:

sudo mount /dev/sda2 /mnt -o rw
cd /mnt
sudo mount -t proc proc proc/
sudo mount -t sysfs sys sys/
sudo mount -o bind /dev dev/
sudo mount -t devpts pts dev/pts/
chroot . /bin/bash
- po tych operacjach można zainstalować GRUBA2 tak jak potrzeba, np.:
grub-install --target=i386-pc --recheck --force /dev/sda[2]
grub-mkconfig -o /boot/grub/grub.cfg
exit
- powyższe polecenia instalują GRUBa na dysku /dev/sda albo w MBR (/dev/sda), albo na wybranej partycji (/dev/sda2). Po restarcie wszystko powinno działać.

Po udanej instalacji, jak zwykle uruchomi się skrypt konfiguracyjny, który ustawia m.in. repozytoria i uruchamia procedurę aktualizacji. Tym razem przebiega ona bez większych problemów, ale jak się okazuje Bridge nadal używa "starego" pliku konfiguracyjnego /etc/rc.conf. Ponieważ ArchLinux stopniowo rezygnuje ze skryptów startowych sysvinit na rzecz systemd, należy je jednak utworzyć. W poście Bridge Linux 2012.5 - konfiguracja opisałem, które pliki są potrzebne. Po ich utworzeniu plik /etc/rc.conf można ograniczyć do wpisu:
DAEMONS=(dbus networkmanager syslog-ng @alsa)
- czyli określenia usług uruchamianych podczas startu systemu.

Systemd

Przejście Archa na mechanizm startowy systemd niesie ze sobą przede wszytskim przyśpieszenie uruchamiania i wyłączania systemu (w moim przypadku system uruchamia się w trybie GUI 10 sekund). Jednak żeby tak się stało, trzeba skonfigurować kilka rzeczy. Na początek w pliku /etc/environment dopisujemy:
LANG=pl_PL.utf8
- następnie w pliku /etc/default/grub jedną linię uzupełniamy:
GRUB_CMDLINE_LINUX_DEFAULT="quiet init=/bin/systemd"

Trzeba jeszcze zaktualizować plik konfiguracyjny GRUBa, czyli: sudo grub-mkconfig -o /boot/grub/grub.cfg.
Teraz można skonfigurować domyślny poziom (ang. target) uruchamiania się systemu i start graficznego menedżera logowania:
systemctl enable graphical.target
systemctl enable lxdm.service

Pozostaje restart i... obserwowanie szybszego startu systemu... Na koniec warto dodać, że powyższe zmiany nie porzucają jeszcze całkowicie mechanizmu sysvinit i jego skryptów konfiguracyjnych. Jak całkowicie przejść na systemd, napiszę niedługo.

Aktualizacja: Czysty systemd w Bridge Linux 2012.8.