Strona 1 z 1

przerabianie linuxa - od czego zacząć?

: 05 kwie 2009, 09:37
autor: lukas_j
Wiec tak:
nie jestem początkującym programistą, ani też zaawansowanym. Programuje w c++, pascalu, delphi, php. Postanowiłem zając się przerabianiem linuxa. Postanowiłem sciągnąć jakieś historyczne jądro np. 0.01. Zaczne od niego, a później będe przerabiał następne. Lecz jak patrze na niektóre kody np:

Kod: Zaznacz cały

static inline void set_cursor(void)
{
	cli();
	outb_p(14,0x3d4);
	outb_p(0xff&((pos-SCREEN_START)>>9),0x3d5);
	outb_p(15,0x3d4);
	outb_p(0xff&((pos-SCREEN_START)>>1),0x3d5);
	sti();
}

static void respond(struct tty_struct * tty)
{
	char * p = RESPONSE;

	cli();
	while (*p) {
		PUTCH(*p,tty->read_q);
		p++;
	}
	sti();
	copy_to_cooked(tty);
}
to wogóle nie rozumiem o co w tym chodzi.. wiec jak radzicie, od czego zacząc, aby przerabiać linuxa, i gdzie znajde jakies materiały dla początkujących w tej dziedzinie?

Odp: przerabianie linuxa - od czego zacząć?

: 05 kwie 2009, 10:17
autor: WebNuLL
Jądro Linux jest zapewne dosyć duże, ta część wygląda na nie opisaną komentarzami.
Aby dowiedzieć się co te funkcje robią, musisz znaleźć i przeczytać ich kod - mowa o funkcjach użytych w tych dwóch funkcjach :pt36:

@edit
Podałbyś przynajmniej nazwę pliku/ów w którym/ch znalazłeś ten kod ;)

Pozdrawiam, WebNuLL

Odp: przerabianie linuxa - od czego zacząć?

: 05 kwie 2009, 10:31
autor: paweln1986
z tego co kojarze to funkje cli() sti() służły do blokowania i odblokowywania przerwan sprzętowych, outb_p() natomias do wykonywania jakois operacji na portach. Więcej informacji możesz uzyskac z http://www.osdever.net/bkerndev/index.php

Odp: przerabianie linuxa - od czego zacząć?

: 05 kwie 2009, 12:15
autor: el.pescado
nie jestem początkującym programistą, ani też zaawansowanym
Moim zdaniem do grzebania w systemie operacyjnym dobrze byłoby być raczej tym "zaawansowanym". Do tego C trzebaby znać na wylot - od strony praktycznej. Następnie przydałaby się odrobina teorii z dziedziny budowy systemów operacyjnych - nie jest źle przeczytać jakąś książkę z tej dziedziny, Silberschatz czy Tanenbaum mogą być dobrzy na początek.

No i na koniec myślę, że może Minix byłby lepszy do grzebania - wszak to jest system od początku pisany z myślą o dydaktyce.

Odp: przerabianie linuxa - od czego zacząć?

: 05 kwie 2009, 13:49
autor: arrevalk
lukas_j pisze:Postanowiłem sciągnąć jakieś historyczne jądro np. 0.01. Zaczne od niego, a później będe przerabiał następne.
No i niestety nic Ci to nieda:/ Bo pomiędzy jądrem 0.01 a jądrami 2.4 lub 2.6 jest baaardzo duża róznica. Lepiej powoli rozgryzać jądra nowsze.
Co do jąder serii 2.6 to jest kilka ciekawych pozycji książkowych które porządnie opisują architekture jądra, Kernel API oraz Linux Driver Model są to:
Linux Device Drivers, 3rd Eddition, do ściągnięcia z sieci całkowicie legalnie i za darmo
The Linux Kernel, http://tldp.org/LDP/tlk/tlk.html
Jest tez kilka książek wydanych przez wydawnictwo O'Reilly np:
Understaning Linux Kernel lub Linux Kernel in a Nutshell.
Częśc z tych książek można kupić przetłumaczonych na język polski. Chyba Helion je rozprowadza.
Co do znajomości C to nie trzeba być super zaawansowanym programistą żeby pisać co kolwiek w jądrze, na pewno niezbędna jest umiejętność z korzystania ze wskaźników oraz wskaźników na funkcje, struktur(nie wspominając o podstawach w stylu switche, pętle itp).
No i trzeba sie pilnować bo niestety w większości przypadków kernel zasygnalizuje Ci błąd zwiechą (jak się poszczęści to oopsem). No i wycieki pamięci w kernelu to powazna sprawa.
A od czego zacząć? Od pisania prostych modułów kernelowych. Dzięki temu zapoznasz się z zasadami rządzącymi kernelem.

Odp: przerabianie linuxa - od czego zacząć?

: 05 kwie 2009, 15:06
autor: 17piotrek

Odp: przerabianie linuxa - od czego zacząć?

: 05 kwie 2009, 23:14
autor: arrevalk
Celem projektu Linux From Scratch nie jest pokazanie jak działa kernel i jak go modfikować. A raczej pokazanie jak samemu zbudować system w oparciu o jądro linuxa i istniejące kody źródłowe bez wnikania w zasady działania poszczególnych komponentów (bo jak wiadomo same jądro to jeszcze nie w pełni funkcjonalny system operacyjny). Chyba że coś się zmieniło...
Niech tylko ktoś nie wyciągnie wniosku ze krytykuje ten projekt, jest to świetny projekt który pokazuje ile wysiłku trzeba włożyć w zrobienie systemu operacyjnego z istniejących źródeł. I daje to naprawdę duża satysfakcję, gdy po kilku dniach kompilacji przeróźnych pakietów. Działa nam nasz własny linux (chociażby w konsoli, bez żadnych beryli, gnomów i innych bajerów).

Odp: przerabianie linuxa - od czego zacząć?

: 06 kwie 2009, 14:46
autor: 17piotrek
Powiedzialem na poczatek:P Wiem ze nie jest to moze doglebne poznanie samego systemu, ale na poczatek moze byc nienajgorsze.

Odp: przerabianie linuxa - od czego zacząć?

: 06 kwie 2009, 18:16
autor: Ormi
http://tldp.org/LDP/lkmpg/2.6/html/index.html
To jest całkiem fajny kurs pisania modułów jądra. Potem musisz zacząć powoli przeglądać źródła jądra. Ja zacząłem od systemu plików proc. Po tym rozdziale: http://tldp.org/LDP/lkmpg/2.6/html/c708.html masz już o procfs jakieś pojęcie. Można zacząć przeglądać, jak działają funkcje create_proc_*_entry. Poza tym uważam, że dobrym pomysłem jest pisanie swojego rootkita w formie modułu jądra. Podczas jego pisania przydatna jest wiedza o wielu aspektach działania jądra - procesy, mechanizmy sieciowe, systemy plików i wiele innych rzeczy. A żeby prostego rootkita napisać nie trzeba mieć jakiejś szczególnej wiedzy o tych zagadnieniach. Tylko trochę :) A przy pisaniu czegoś takiego jest mobilizacja do dalszego przeglądania źródeł. Zawsze są pytania "co jeszcze można zrobić, żeby rootkit był trudniej wykrywalny", "jak lepiej ukrywać procesy" itd. itp. :)

Odp: przerabianie linuxa - od czego zacząć?

: 18 kwie 2009, 15:10
autor: lukas_j
> No i na koniec myślę, że może Minix byłby lepszy do grzebania - wszak to jest system od początku pisany z myślą o dydaktyce.

Tak, masz racje, spróbuje to :]

Odp: przerabianie linuxa - od czego zacząć?

: 23 kwie 2009, 16:42
autor: filo86
Trzeba też wiedzieć, żę jądro miniksa pracuje na trochę innych zasadach niż linux - minix to mikrojądro, linux to jajko monolityczne.

Przy okazji witam forumowiczów! :)

Odp: przerabianie linuxa - od czego zacząć?

: 24 kwie 2009, 15:34
autor: j0cker