Jak zainstalować Debiana przy pomocy debootstrap – HOWTO

Co prawda instalacja systemu przy pomocy debootstrap jest trywialna, opisów są setki, a i man debootstrap niby jest wystarczający, ale zawsze kończy się tak, że o czymś zapominam jak z głowy robię i muszę bootować powtórnie, więc postanowiłem spisać. Tym bardziej, że ostatnio jest to najpopularniejsza dla mnie metoda instalacji. Instalator Debiana został wykastrowany z niewolnych firmware’ów, przez co instalacja Debiana na laptopach czy ultrabookach, gdy nie ma przewodowej karty sieciowej jest… powiedzmy delikatnie niefajna. No i parę instalacji znowu w ostatnim czasie było.

Instalację przy pomocy debootstrap można zrobić z dowolnego systemu, nie musi być to Debian. Zwykle korzystam z Debiana live lub – ostatnio – Ubuntu w wersji live (jakoś lepiej sprzęt wykrywa, a nie mam czasu sklikać debianowego live z testing/unstable…). Niemniej z bardziej pamiętnych zdarzało się i Gentoo. Cokolwiek co ma pakiet debootstrap się nada. Kolejne kroki wyglądają tak:

  • utworzenie i sformatowanie partycji, na którą ma być zrobiona instalacja
  • utworzenie punktu montowania, zamontowanie partycji – mkdir /chrooted; mount /dev/sda3 /chrooted
  • debootstrap właściwy – debootstrap squeeze /chrooted http://ftp2.de.debian.org/debian/
  • podmontowanie proc- mount proc /chrooted/proc -t proc
  • podmontowanie dev i sys – mount –bind /dev/ /chrooted/dev; mount –bind /sys/ /chrooted/sys
  • wejście do chroota – chroot /chrooted /bin/bash
  • edycja sources.list i aktualizacja listy pakietów
  • instalacja kernela, firmware’ów (także niewolne, jeśli wymagane), gruba
  • aktualizacja wpisów dla grub – update-grub2
  • instalacja dodatkowych programów – apt-get install wajig less mc wicd wpasupplicant wicd-curses
  • edycja /etc/fstab, /etc/network/interfaces, /etc/hosts (w sumie bez tego też działa)
  • zmiana hasła root, ew. dodanie użytkowników
  • wyjście z chroota – exit
  • reboot kontrolny – system powinien działać

Jest szansa,  że o czymś zapomniałem. Zatem jeśli coś się przypomni albo zmieni w nowszych wersjach systemów, to będę aktualizował instrukcję.

UPDATE: Może okazać się, że zainstalowana przy pomocy debootstrap maszyna, dostępna tylko po sieci nie pinguje się. Wtedy, jeśli skonfigurowaliśmy sieć, warto sprawdzić okolice /etc/udev/rules.d/70-persistent-net.rules czy MAC nie został przypisany do kolejnego interfejsu.

Wicd nie startuje w Debianie – problem z Pythonem.

Ostatnio wicd mi się w Debianie znarowiło – nie wstawał klient GTK. Wersja curses działała OK, więc nie wykazałem się należną czujnością i  zignorowałem problem. Zorientowałem się dość późno, bo korzystam z hibernacji głównie, a efektem był brak sieci WiFi po restarcie (no dobrze, skrót myślowy, nie tyle brak sieci, bo wpa_supplicant z ręki daje radę, co niestartowanie wicd). W każdym razie uruchomienie wicd dawało:

 Traceback (most recent call last):
File "/usr/share/wicd/daemon/wicd-daemon.py", line 47, in
import dbus
File "/usr/lib/python2.7/dist-packages/dbus/__init__.py", line 100, in
from dbus._dbus import Bus, SystemBus, SessionBus, StarterBus
File "/usr/lib/python2.7/dist-packages/dbus/_dbus.py", line 46, in
from dbus.bus import BusConnection
File "/usr/lib/python2.7/dist-packages/dbus/bus.py", line 46, in
from dbus.connection import Connection
File "/usr/lib/python2.7/dist-packages/dbus/connection.py", line 42, in
from dbus.proxies import ProxyObject
File "/usr/lib/python2.7/dist-packages/dbus/proxies.py", line 35, in
from dbus._expat_introspect_parser import process_introspection_data
File "/usr/lib/python2.7/dist-packages/dbus/_expat_introspect_parser.py", line 26, in
from xml.parsers.expat import ExpatError, ParserCreate
File "/usr/lib/python2.7/xml/parsers/expat.py", line 4, in
from pyexpat import *
ImportError: /usr/lib/python2.7/lib-dynload/pyexpat.so: undefined symbol: XML_SetHashSalt

W ramach zmyłki – w pakiecie wicd błąd nie jest zgłoszony (i słusznie), za to zgłoszony jest błąd 665346 w Pythonie. I faktycznie, upgrade libexpat1 do 2.1~beta3 (wersja z unstable) pomaga. HTH

Java-package z powrotem w Debianie.

Jakiś czas temu Sun zmienił politykę dotyczącą wydawania swojej wersji Javy, w wyniku czego wyleciała ona zarówno z Ubuntu, jak i Debiana. Użytkownicy zostali z niezaktualizowanymi wersjami, więc obie dystrybucje skierowały swoje zainteresowanie w stronę OpenJDK, która teoretycznie ma zapewnić wystarczającą funkcjonalność. Więcej o sprawie można poczytać tu w przypadku Debiana, oraz tu w przypadku Ubuntu. Ten drugi link zawiera instrukcję co zrobić, żeby mieć bezpieczny system, czyli opis migracji do OpenJDK na Ubuntu (IIRC dokładnie to samo należy zrobić w przypadku Debiana).

Fajnie, że jest wolne rozwiązanie, fajnie, że pewnie projekt OpenJDK dostanie niezłego kopa, jeśli chodzi o rozwój, ale jednak nie wszystkim w tej chwili wystarcza OpenJDK, które jest wolniejsze i… nie zawsze działa poprawnie (ja miałem problem z appletami VNC, które przydają się przy administracji sprzętem, zwłaszcza w przypadku rozwiązań typu KVM…). Wybór był trojaki: instalacja ręczna Javy od Sun, stara, dziurawa wersja albo niedziałanie aplikacji.

Pierwszy wybór jest męczący, jeśli ktoś lubi mieć wszystko w systemie spaczkowane (ja lubię), pozostałe dwa są niezbyt dopuszczalne w praktyce… Cieszy mnie więc reaktywacja projektu java-package (aktualnie dostępny w unstable, jeśli wszytko pójdzie dobrze, będzie we Wheezy), czyli prymitywnego skądinąd narzędzia pozwalającego na zrobienie w prosty sposób pakietu deb z Javą od Sun. Sam fakt spaczkowania oczywiście nie wpływa na działanie w żaden sposób, ale na pewno ułatwi utrzymanie porządku w systemach poprzez włącznie Javy od Sun do systemu zarządzania pakietami, wrzucenie do swojego repozytorium pakietów itp.