Sunday, January 30, 2011

KVM i LXC

Tydzień temu testowałem wirtualizację, którą mógłbym wprowadzić na serwerze. Poświęciłem na to dosłownie cały weekend, a robiłem to tak namiętnie, że prawie cały miniony tydzień spędziłem w łóżku!
Przynajmniej nauczyłem się dwóch nowych rzeczy ;) Pierwsza to pełna wirtualizacja sprzętowa na KVM, a druga to wirtualizacja LXC, tak zwana system-level.

Celem wirtualizacji było oddzielenie usług zewnętrznych od wewnętrznych. Czyli np. instalujemy nowy system na wirtualnej maszynie i tam stawiamy usługę WWW. Na macierzystej maszynie tylko przekierowujemy pakiety z portu 80. Wirtualna maszyna nie posiada publicznego adresu, tylko prywatny.

KVM sprawdziło się świetne, bardzo małe zużycie zasobów i możliwość odpalenie takiej maszyny bez trybu graficznego. Niestety VirtualBox w domu nie zastąpi, ponieważ nie wiem czemu ale nawet jak system Windows nic nie robi to jeden rdzeń ciągle jest wykorzystywany na 100% - jakby jakaś pętla w kółko chodziła. Niemniej jednak KVM na serwer byłby świetny, gdyby nie mały szkopuł, na moim serwerze procesor nie wspiera Intel VT, a KVM działa na zasadzie pełnej wirtualizacji oferowanej przez procesor.
Nic tylko czekać na lepszy serwer, a póki co KVM jest świetny w domowych testach jeżeli chodzi o Linuksa.

Tak więc zawiedziony moim prockiem na serwerze musiałem szukać dalej i znalazłem LXC. LXC to też wirtualizacja ale oferowana przez mechanizmy systemowe, rzekłbym nawet, że to nic innego jak odpowiednik BSD Jail na Linux. Też działa świetne, a nawet lepiej. Mniejsze zużycie procesora i nie wymaga procesora z technologią wirtualizacji. Jedyne co może się nie spodobać to to, że taki system w klatce nie jest kompletną kopią normalnego systemu, wielu rzeczy nie trzeba na nim uruchamiać, gdyż są one realizowane przez system gospodarza. Najważniejsze w tym systemie to same programy i ich środowisko, a nie mechanizmy systemowe.
Fajne jest to, że nie tak jak w KVM wszystkie dane znajdują się w jednym pliku jakim jest dysk wirtualnej maszyny tylko w nowej strukturze katalogów, która rozpoczyna się we wskazanym miejscu. Dzięki temu bez problemu możemy w każdej chwili sięgnąć po jakieś dane z wirtualnego systemu, co bardzo ułatwia tworzenie kopii danych.
Co do Debiana, to po raz kolejny okazał on się dobrym wyborem, ponieważ posiada potrzebne narzędzie zwane debootstrap do budowania struktury systemu bazowego. Ułatwia to tworzenie kontenera LXC.
Niedobrą informacją może być to, że w Debian Lenny LXC jeszcze nie ma, trzeba samemu je kompilować. Mi się udało dopiero wersję 6.0 LXC skompilować na tym systemie, ale ponieważ Squeeze tuż tuż to chyba poczekam i nie będę dalej w to się bawił.

KVM:
http://www.weilnetz.de/qemu-doc.html
http://wiki.debian.org/KVM
http://wiki.debian.org/QEMU#GuestsonNATedinternalnetwork
http://wiki.qemu.org/Qemu-doc.html

LXC:
http://www.ibm.com/developerworks/linux/library/l-lxc-containers/#running-lxc-tools
http://blog.foaa.de/2010/05/lxc-on-debian-squeeze/
http://blog.bodhizazen.net/linux/lxc-configure-ubuntu-lucid-containers/
http://wiki.debian.org/LXC

Wednesday, January 19, 2011

Linux dla internautów

Dziś słów kilka o tym, do czego można polecić Linuksa z czysty sumieniem. Sam używam go już dosyć długo, nie znaczy to jednak, że gdy rozmowa schodzi na temat Linuksa to polecam go każdemu. Wręcz przeciwnie, przeważnie milczę. Nie dlatego, że do niczego się on nie nadaje, tylko dlatego, że Linux lepszy jest w czymś innym, niż "on" potrzebuje.
Ponieważ chciałbym wesprzeć popularyzację Linuksa musiał wymyślić jakieś zastosowanie, które spodobałoby się przeciętnemu użytkownikowi komputera. Z mojego doświadczenia wynika, że Linux najlepiej sprawdza się w dwóch przypadkach:
  • serwer
  • programowanie
Jeżeli o mnie chodzi, to przeszedłem na Linuksa z ze względu na drugi punkt, pierwszy pojawił się później. Co do zastosowań domowych to nie jest za wesoło - zależy co się robi na komputerze.

Tak więc myślałem nad tym, w jakim zastosowaniu, a raczej dla kogo Linux może być fajny na komputerze domowym. W końcu wymyśliłem, a może trochę ściągnąłem od Google. Chodzi dokładnie o Chrome OS, czyli system oparty na Linuksie dla ludzi, którzy najczęściej korzystają z komputera aby użyć sieci. To fakt takich jest dużo i tu rzeczywiście można by polecić Linuksa. Oto najważniejsze powody jakie przyszły mi do głowy:
  • brak wirusów
  • dostępne są najpopularniejsze przeglądarki z najważniejszymi wtyczkami
  • możliwość kontroli treści (np. dla dzieci) przez dansguardiana
  • ładny pulpit (efekty 3D)
Do tego należy dodać, że aplikacje Web cały czas rozwijają się, więc dla internauty częściej wystarcza przeglądarka, a coraz mniej potrzebne jest tradycyjne oprogramowanie. Mam nadzieję, że rozwój takich technologii jak HTML5 i WebGL umocni sens wykorzystywania systemu Linux jako komputer internauty.

Mam zamiar napisać przewodnik, który będzie wyjaśniał jak skonfigurować Debiana w roli systemu do przeglądania Internetu.

Tuesday, January 18, 2011

sftp w klatce

Udostępnianie katalogu dla użytkownika stwarza problemy w bezpieczeństwie. Zakładamy mu konto, podpinamy tam WWW i dajemy SSH i SFTP - przynajmniej ja tak robiłem. Aby użytkownik nie chodził mi po katalogach innych (nie miałem takich) i nie zaglądał do konfiguracji bardzo restrykcyjnie ustawiałem prawa do katalogów i plików. Nie da mu się wyłączyć powłoki, bo sftp przestanie działać.

Trzeba to naprawić i użyć klatki, czyli jail!

Cenna dokumentacja: sshd_config

W konfiguracji sshd ustawiamy:

Subsystem sftp internal-sftp


Match User admin
ChrootDirectory /home/jail/%u
Banner /etc/issue_my.net

W /home/jail/ tylko root może zapisywać, tworzymy w nim katalogi dla użytkowników, również tylko root może tam zapisywać - tak jak w katalogu głównym /. Baner może być indywidualny, jak w przykładanie dla dopasowania do użytkownika admin.

Dzięki internal-sftp możemy już zabrać dla użytkownika powłokę i wstawić /usr/sbin/nologin. W ten sposób sprawę z logowaniem przez ssh mamy załatwioną, a indywidualny baner go o tym poinformuje.

Aha, w katalogu użytkownika tworzymy np. katalog www i jego właścicielem robimy dopiero użytkownika, będzie mógł zapisywać w nim.

Dlatego nie używam serwera FTP.

Thursday, January 13, 2011

World IPv6 Day

8 czerwca 2011 roku będziemy mogli przetestować w saki globalnej protokół IPv6. World IPv6 Day to kolejny krok w kierunku zmian, które zbliżają się coraz większymi krokami.

W teście wezmą udział: Google, Facebook oraz Yahoo. Organizacja ISOC zaprasza do testu również inne zainteresowane organizacje.

Jeżeli Twój ISP udostępnia routing dla protokołu IPv6 również będziesz mógł połączyć się np. z Google z użyciem nowego protokołu. Dostępny jest już test, za pomocą którego sprawdzimy, czy z naszej strony nie ma żadnych problemów.

Test będzie trwał 24 godziny.

DOSBox

Ostatnio nauczyłem się dwóch rzeczy, pierwsza to techniczna, a druga zasada obowiązująca w życiu. Zacznę od tej drugiej. Otóż mówi się, że potrzeba jest matką wynalazku. Odkryłem kto jest ojcem wynalazku - to wojna.
W wyniku "wojny" musiałem zrobić coś czego normalnie bym nie zamierzał robić, ale ponieważ byłem do tego zmuszony, to nie miałem wyjścia.

Problem polegał na przeniesieniu programu DOS (księgowego) z Windows XP na Vista. Zdziwiło mnie to, że po raz kolejny rozwiązuje problem z systemem Microsoftu dzięki projektom open source! Rozwiązania dla biznesu zawiodły, musiałem użyć emulatora DOSBox. Czyż to nie kpina? Microsoft nie zajmuje się tak bardzo problemem starszych programów DOS-owych powszechnych w księgowości jak programiści udostępniający swój kod na licencji GNU GPL.

Ostatnio pisałem o tym, czym jest Linux. Widocznie należałoby jeszcze wspomnieć o tym, że GNU to nie tylko darmowe narzędzia dla otwartego systemu, ale również dla Microsoft Windows.

Powiem więcej, zauważyliście na jakim poziomie jest notatnik w Windows? problem ten rozwiązuje projekt GNU GPL zwany Notepad++.

Saturday, January 8, 2011

Jak powstał Linux?

No własnie, jak on powstał? Często ładnie się pisze w stylu:
Jeżeli kilku ostatnich lat nie spędziłeś w jaskini, to na pewno słyszałeś już o Linuksie.
lub
Jeżeli kilka ostatnich lat spędziłeś na planecie Ziemia, to na pewno słyszałeś już o Linuksie.
co rzeczywiście jest prawdą, ale czy naprawdę ludzie rozumieją tą całą zagmatwaną sytuację? Co wiąże Linuksa z jakimś Uniksem?  Czym różni się Free Software Foundation od Open Source i jak one są powiązane z Linuksem?
Od dawna poruszałem ten problem i wiem, że świadomość użytkowników, zwłaszcza tych pseudo (kilkudniowych) jest mała. Opisywałem to już wcześniej na stronie http://c-plus-plus.w.interia.pl/debian/ [ zakładki Linux->UNIX ]. Opisało to też wiele innych osób, więc w czym problem?
Problem uświadomiła mi pewna osoba, z którą obecnie pracuję nad nowym portalem. Jest on prozaiczny i standardowy, ludzie nie chcą zagłębiać się w te wszystkie szczegóły. Wiele osób uważa, że użytkownik systemu wcale nie musi być informatykiem (słusznie) i wiedzieć jaka jest historia jego systemu. Czy to prawda? Prawda, ale!
Jeżeli ktoś używa Microsoft Windows, to rzeczywiście nie musi wiedzieć jak powstał. Skoro tak uważam, to dlaczego w przypadku Linuksa uważam inaczej? Bo za Windows zapłacił, a Linuksa dostajesz za darmo. Nie wiem jak Wy, ale jak ja dostaję coś za darmo to pierwsza myśl jak mi przychodzi do głowy to "dlaczego"? Dlaczego ktoś rozdaje system, za który normalnie trzeba byłoby zapłacić? Nadal uważasz, że nie jest to takie istotne?
Pytań jest wiele, ale wszystkie sprowadzają się jednego, do przeszłości, tam znajdziemy odpowiedzi na wszystkie pytania. Problem polega na tym, że ludzie nie uważają historii za ciekawą i dlatego stronią od niej. Historia jest bardzo ważna, pozwolę sobie przypomnieć żelazną regułę:
aby zrozumieć teraźniejszość należy poznać przeszłość
Tak więc z jednej strony świadomy jak ważna jest historia Linuksa, a z drugiej niechęci do czytania o historii rozmyślałem nad innymi sposobami, którymi mógłbym dotrzeć do wielu ludzi. W końcu mnie olśniło, zresztą Google też tak robi, tyle tylko, że oni robią coś na kształt kreskówek. Napiszę bajkę o tym skąd wywodzi się Linux.
Dawno, dawno temu, gdy komputery były wykorzystywane tylko w laboratoriach, naukowcy stworzyli system operacyjny, który pozwalał na korzystanie z jednego komputera przez wiele osób. Z czasem, gdy komputery trafiały do innych instytucji i zaczęły być wykorzystywane do celów przemysłowych stworzony system stał się produktem, który można było sprzedawać. Ponieważ nad jego rozwojem pracowało kilka innych instytucji, w momencie, gdy doszło do sprzedaży wybuchła wojna o to, kto jest prawowitym właścicielem systemu. Był to problem, z którym do tej pory jeszcze się nie spotkano. Wówczas wiele osób uświadomiło sobie jakie zagrożenia niesie za sobą komercja dla rozwoju oprogramowania komputerowego. Jeden z naukowców postanowił zapobiec podobnym sytuacjom w przyszłości i stworzył nową ideę wolnego oprogramowania, zwaną GNU. Jej celem było stworzenie nowego systemu, który byłby całkowicie wolny i dostępny dla wszystkich. Naukowiec stworzył podstawowe narzędzia do pisania oprogramowania i udostępnił je bezpłatnie innym, w zamian za to wszystkie stworzone przy ich pomocy programy również musiały być dostępne dla innych. W ramach projektu ochotnicy z całego świata stworzyli prawie wszystkie składniki niezbędne do złożenia kompletnego systemu operacyjnego. Jednak nadal brakowało jednego elementu, bez którego system nie był jeszcze gotowy. W końcu po siedmiu latach, projekt, doczekał się brakującego elementu, którym było jądro systemu. Stworzył go student informatyki z Finlandii przy pomocy narzędzi udostępnionych przez projekt GNU i nazwał go Linux. Od tej pory projekt GNU posiadał wszystkie niezbędne składniki do złożenia kompletnego systemu operacyjnego na wzór pierwotnego systemu stworzonego przed laty w laboratoriach. Ponieważ wszystkie składniki były ogólnie dostępne powstawały liczne wariacje systemów składające się z tych samych części, jądra Linux i narzędzi z projektu GNU. Wersje te zwane są dystrybucjami, a jedną z pierwszych był Debian GNU/Linux. Pojawienie się brakującego elementu bardzo przyśpieszyło rozwój nad projektem otwartego systemu. GNU/Linux jest cały czas udoskonalany, powstały środowiska graficzne na wzór innych systemów komercyjnych i wiele programów realizujących różne zadania. Obecnie GNU/Linux jest najpopularniejszą odmianą pierwotnego systemu stworzonego przez naukowców w laboratoriach.

Wystąpili
System operacyjny stworzony w laboratoriach przez naukowców - UNIX™ 
Wojna o prawa do systemu - Unix wars
Naukowiec, który stworzył projekt GNU - Richard Stallman
Twórca brakującego elementu, jądra - Linus Torvalds
Kompletny system - GNU/Linux

Przedstawiona historia przedstawia wszystkie najważniejsze fakty z przeszłości i przede wszystkim wyjaśnia dlaczego powstał Linux, dlaczego ma otwarty kod i co ma wspólnego z Uniksem i jaka jest różnica między Linuksem a GNU. Tyle wystarczy, choć jeszcze wieleee pozostało do wyjaśnienia, ale to już dla chętnych. Mam nadzieję, że tekst zostanie opublikowany.

Sunday, January 2, 2011

Python 3.1

Ostatnio pisałem o problemie dzielenia w Pythonie, podczas gdy wynik ma być mniejszy od 1 wynikiem jest 0. Pisałem też, że problem ten nie występuje w nowszej wersji Pythona 3.1. Wtedy mnie to dosyć zniechęciło do Pythona ale gdzieś podświadomie wiedziałem, że jest to język na tyle dobry, iż ma jakieś rozwiązanie tego problemu. Ostatnio wpadała mi w ręce książka "Python 3. Kompletne wprowadzenie do programowania. Wydanie II" i to nie przypadkiem ;).

Mimo, iż Pythona używałem już wcześniej to nigdy nie czytałem żadnej książki o nim (w wersji papierowej). Spodziewałem się, że taka książka może dużo wyjaśnić i pokazać Pythona w nowym świetle. Chodzi głownie o wyjaśnienie filozofii tego języka. Takie mam własnie odczucie ją czytając.

Jeszcze jest za wcześniej, aby oceniać tą książkę ale już mogę przedstawić kilka ciekawostek, które wyczytałem.

Po pierwsze to środowisko IDLE. W Windows jest domyślnie dodawane do instalacji Pythona. W Linuksie można również je zainstalować jako dodatkową paczkę. Tak samo sytuacja wygląda z samym interpreterem Pythona w wersji 3.x. W Windows dostaniemy najnowszą wersję, na moim systemie jakim jest wersja stabilna Debiana domyślnie jest Python w wersji starszej 2.x z pewnych powodów - systemowych. Nie oznacza to jednak, że nie można jednocześnie posiadać wersji nowszej, owszem, można, tylko również trzeba dodatkowo to zainstalować i jest.


Tak samo sprawa wygląda z środowiskiem IDLE, które jest napisane w GUI Tkinter. To standardowa biblioteka Pythona do pisania programów z GUI, bazuje ona na Tk. Jej zaletą jest "lekkość". Za IDLE przemawia również wbudowany debugger, więc czemu nie.



Kolejną rzeczą jest rozmiar liczb. Nie wiem jak we wcześniejszych wersjach Pythona ale w 3.x zmienne są ograniczone tylko przez dostępną pamięć w komputerze. Ciekawe.

Co do samych wersji to faworyzowana jest wersja 3.1 lub późniejsze bo zawiera pewne poprawki wersji 3.0.

Pisałem o instalacji dodatkowo Pythona 3, w wyniku czego mamy kilka interpreterów - jak widać na pierwszym zdjęciu. Chodzi o to, że zapis w skrypcie:

#!/usr/bin/env python

oznacz, że interpreter może być zainstalowany w innej ścieżce niż wymieniona albo używa pierwszy napotkany w tym katalogu - pierwszym będzie zapewne ten o najniższym numerze. Możemy to przetestować.


grzesiek@home:~/Desktop$ cat test.py 
#!/usr/bin/env python
import sys


print(sys.version)

grzesiek@home:~/Desktop$ ./test.py 
2.6.6 (r266:84292, Oct  9 2010, 12:24:52) 
[GCC 4.4.5]

Dlatego preferuje samemu wywoływać interpreter ale nie w kodzie np.:

grzesiek@home:~/Desktop$ cat test.py 
#!/usr/bin/python3.1
import sys

print(sys.version)
 
grzesiek@home:~/Desktop$ ./test.py 
3.1.3 (r313:86834, Nov 28 2010, 10:01:07) 
[GCC 4.4.5]

tylko tak:

grzesiek@home:~/Desktop$ python3.1 test.py 
3.1.3 (r313:86834, Nov 28 2010, 10:01:07) 
[GCC 4.4.5]


Kwestia upodobań.

Teraz kilka ciekawych przykładów.

>>> "test"[2]
's'
>>> _
's'
>>> "test"[0]
't'

"_" to ostatnie wykonanie wyrażenie.

>>> int(" xxx3")
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    int(" xxx3")
ValueError: invalid literal for int() with base 10: ' xxx3'
>>> int(" 3 ")
3

Obiekt przestaje istnieć, jeżeli zostało usunięte ostatnie odniesienie do niego. Tym właśnie są wszystkie zmienne. Zmienne są niezmienne - prawda, że śmieszne. Krotki i napisy również.

Wyliczanie elementów krotki i napisu:

>>> "aa","bb","cc"
('aa', 'bb', 'cc')
>>> len(("aa",))
1
>>> len("aa")
2

Listy można zmieniać:

>>> x = ["a","b","c"]
>>> x
['a', 'b', 'c']
>>> x.append("x")
>>> x
['a', 'b', 'c', 'x']
>>> list.append(x,999)
>>> x
['a', 'b', 'c', 'x', 999]
>>> x[0]
'a'
>>> x[0] = 0
>>> x
[0, 'b', 'c', 'x', 999]
>>>


Tożsamość:

>>> a = 5
>>> b = 5
>>> a is b
True
>>> a2 = "test"
>>> b2 = "test"
>>> a2 is b2
True
>>> a3 = [1,2,3]
>>> b3 = [1,2,3]
>>> a3 is b3
False
>>> a3 = b3
>>> a3 is b3
True
>>> a4 = (1,2,3)
>>> b4 = (1,2,3)
>>> a4 is b4
False
>>> a = 4
>>> a is b
False

Porównanie:

>>> a2 == b2
True
>>> a4 == b4
True

Ładnie wygląda:

>>> a =3
>>> 0 < a < 10
True

Operator przynależności:

>>> a3
[1, 2, 3]
>>> 2 in a3
True
>>> 10 not in a3
True
>>> a2
'test'
>>> "t" in a2
True

Operatory arytmetyczne nie tylko dla liczb:

>>> nazwa = "cos"
>>> nazwa += " tam"
>>> nazwa
'cos tam'

>>> x
[0, 'b', 'c', 'x', 999]
>>> x += nazwa
>>> x
[0, 'b', 'c', 'x', 999, 'c', 'o', 's', ' ', 't', 'a', 'm']
>>> x += "999"
>>> x
[0, 'b', 'c', 'x', 999, 'c', 'o', 's', ' ', 't', 'a', 'm', '9', '9', '9']

Elementy wbudowane:

>>> dir()
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'a', 'a2', 'a3', 'a4', 'b', 'b2', 'b3', 'b4', 'main', 'nazwa', 'os', 'x']
>>> dir("__builtins__")
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
>>> dir('b')
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']


Liczby:

>>> 0b1010101
85
>>> 0xEEEEE
978670
>>> bin(1234)
'0b10011010010'
>>> hex(1234)
'0x4d2'
>>> oct(1234)
'0o2322'
>>> import math
>>> math.pi
3.141592653589793
>>> 1,3.14
(1, 3.14)


Nie będę tu opisywał dokładnie tych przykładów ale i tak są przydatne - przynajmniej dla mnie.

Saturday, January 1, 2011

Kompilacja jądra Linux

Ostatnio natrafiłem na prosty i przejrzysty sposób kompilacji własnego jądra w Debianie. Jak by nie było jest tam często wiele niewykorzystywanego kodu np. bluetooth, wireless, RAID, FireWire, Token Ring, PCMCIA, ATM (modemy), Xen, VMware, EXPERIMENTAL, ISDN, Telephony support, Reiserfs itp..

Przedstawię sposób kompilacji ale szczerze powiem, że sama kompilacja trwa bardzo długo i do zastosowań domowych raczej nie ma sensu. Opłaca się tylko ze względów bezpieczeństwa, gdy wiemy, że serwer nie będzie  resetowany z powodu aktualizacji jądra.

Wszystko robimy jako root. Jeszcze jedno, kompilacja będzie wymagała dużo wolnej przestrzeni, więc katalog ze źródłami musi się znajdować na partycji posiadającej odpowiednią ilość wolnego miejsca.

aptitude install kernel-package

To polecenie pobiera źródła obecnie zainstalowanego jądra do poniższego katalogu:

cd /usr/src/

Teraz należy paczkę ze źródłami skopiować w jakieś miejsce np:

cp linux-source-2.6.32.tar.bz2 /roo/kernel/

pamiętaj o wolnym miejscu.

cd /root/kernel/
tar vjxf linux-source-2.6.32.tar.bz2
cd linux-source-2.6.32

Teraz graficzne konfigurowanie kernela, gconfig bo GNOME, są też inne, chyba kconfig dla KDE...

make gconfig

Kolejna sprawa, często pisze się w sieci, że potrzebna jest paczka fakeroot, wcale nie jest potrzebna. Zalogowałeś się na konto root wcześniej i jest ona już niepotrzebna.

make-kpkg --revision my.1 linux_image

To polecenie stworzyło paczkę, która pojawi się w katalogu wcześniej, więc aby ja zainstalować piszemy:

dpkg -i ../linux-image-2.6.32_my.1_amd64.deb

To wszystko, podczas ostatniego polecenia zostanie skonfigurowany grub, więc można już odpalić komputer z nowego jądra.