W mgnieniu oka

Witaj na prywatnej stronie blinkkina. Zapoznaj się z informacjami na temat bloga i autora. Subskrybuj witrynę przez kanał atom lub zobacz ostatnie komentarze. W wolnej chwili odwiedź mojego mikrobloga na identi.ca.


stali – [Sta]tyczny [Li]nux

· artykuły · skomentuj

Programiści związani z suckless.org pracują nad stworzeniem własnej dystrybucji Linuksa, w której większość aplikacji ma być skompilowana statycznie.

Stali ma być nową dystrybucją Linuksa z ręcznie dobranym zestawem najlepszych programów do każdego zadania i statycznie łączonymi (włączając w to niektóre klienty X jak xterm, surf, dwm, dmenu, mplayer).

Celem jest także redukcja wielkości plików binarnych poprzez nieobecność glibc i innych zbloatowanych bibliotek GNU, jeśli to możliwe (wczesne doświadczenia wykazały, że statycznie dowiązane pliki binarne są zazwyczaj mniejsze niż ich dynamicznie powiązane z glibc odpowiedniki).

Z powodu ubocznego efektu jakim jest szybsze uruchamianie się statycznych binarek, dystrybucja koncentruje się także na uzyskaniu większej wydajności.

Przewiduje się, że pierwsza działająca wersja zostanie wydana w listopadzie 2009 roku.

Główne założenia projektu:

  • Pliki binarne są głównym priorytetem, każdy plik wykonawczy jest statycznie łączony. Potencjalnie inny format wywołań niż ELF, ponieważ ELF został stworzony głównie z myślą o dynamicznych powiązaniach.
  • Jądro jest pojedyńczym monolitem bazującym na Linuksie, standardowo jądro nie obsługuje modułów
  • Program rozruchowy to lilo (twórcy stali zastanawiają się nad rozwojem lilo)
  • Początkowo brak initrd
  • Być może ładowanie całego systemu do pamięci RAM?
  • Inicjalizacja systemu powinna opierać się tylko o jeden skrypt /etc/rc.{start,stop}

Wygląd systemu plików:

Katalog /usr zostanie usunięty, ponieważ według twórców jest bezużyteczny, aplikacje niezwiązane z podstawowym systemem być może znajdą się w katalogu /local.

  • /bin – wszystkie pliki wykonawcze
  • /bin/kernel – jądro Linuksa
  • /dev – urządzenia, być może z pominięciem udev i innych rozwiazań używanych obecnie w Linuksie, im prościej tym lepiej
  • /etc – konfiguracja systemu, aplikacji, sieci, użytkowników
  • /etc/rc.{start,stop} – skrypt startowy
  • /home/root – katalog roota
  • /home/* – katalogi użytkowników
  • /include
  • /lib – biblioteki używane na platformie deweloperskiej, potencjalnie statyczne
  • /local – być może?
  • /mnt
  • /proc – procesy
  • /share – strony podręcznika man, lokalizacje
  • /sys
  • /tmp – pliki tymczasowe
  • /var – cache, logi, spool i run
  • /usr → / (prawdopodobnie miękkie dowiązanie z powodu niedziałających aplikacji)

Aktualizacja systemu polega na synchronizacji przez rsync z serwerem dystrybucji.

Typowy system końcowego użytkownika:

[anselm@x200s rootfs]$ tree
.
|— bin
|— dev
|— etc
|— home
| `— root
|— mnt
|— proc
|— sys
|— tmp
`— var

Notatka: Na hoście końcowego użytkownika nie znajdziesz katalogów /lib, /include etc. Potrzebuje on tylko tego co naprawdę jest wymagane i nic poza tym.

Rozwój:

Postępy prac nad stali można śledzić pobierając najnowsze źródła używając komendy:

git clone git://sta.li/stali

Wielkość ok. 1,2 GB.

Warto też zapoznać się z najczęściej zadawanymi pytaniami, niektóre odpowiedzi wyjaśniają decyzję podjęte przez twórców stali.

Więcej informacji…