przerabianie linuxa - od czego zacząć?

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Awatar użytkownika
lukas_j
Sędziwy Jeż
Sędziwy Jeż
Posty: 54
Rejestracja: 20 lut 2009, 10:25
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

przerabianie linuxa - od czego zacząć?

Post 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?
Awatar użytkownika
WebNuLL
Sędziwy Jeż
Sędziwy Jeż
Posty: 70
Rejestracja: 13 gru 2008, 16:09
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: KDE Plasma
Architektura: x86

Odp: przerabianie linuxa - od czego zacząć?

Post 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
Awatar użytkownika
paweln1986
Piegowaty Guziec
Piegowaty Guziec
Posty: 7
Rejestracja: 20 paź 2008, 21:58
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME

Odp: przerabianie linuxa - od czego zacząć?

Post 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
Awatar użytkownika
el.pescado
Zakręcona Traszka
Zakręcona Traszka
Posty: 734
Rejestracja: 26 maja 2005, 11:43
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: przerabianie linuxa - od czego zacząć?

Post 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.
arrevalk
Piegowaty Guziec
Piegowaty Guziec
Posty: 29
Rejestracja: 07 sie 2006, 16:51
Płeć: Mężczyzna
Wersja Ubuntu: 8.10
Środowisko graficzne: GNOME

Odp: przerabianie linuxa - od czego zacząć?

Post 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.
arrevalk
Piegowaty Guziec
Piegowaty Guziec
Posty: 29
Rejestracja: 07 sie 2006, 16:51
Płeć: Mężczyzna
Wersja Ubuntu: 8.10
Środowisko graficzne: GNOME

Odp: przerabianie linuxa - od czego zacząć?

Post 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).
17piotrek

Odp: przerabianie linuxa - od czego zacząć?

Post autor: 17piotrek »

Powiedzialem na poczatek:P Wiem ze nie jest to moze doglebne poznanie samego systemu, ale na poczatek moze byc nienajgorsze.
Awatar użytkownika
Ormi
Piegowaty Guziec
Piegowaty Guziec
Posty: 5
Rejestracja: 14 lut 2009, 19:22
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: przerabianie linuxa - od czego zacząć?

Post 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. :)
Awatar użytkownika
lukas_j
Sędziwy Jeż
Sędziwy Jeż
Posty: 54
Rejestracja: 20 lut 2009, 10:25
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: przerabianie linuxa - od czego zacząć?

Post 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 :]
filo86
Piegowaty Guziec
Piegowaty Guziec
Posty: 1
Rejestracja: 23 kwie 2009, 16:28
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME

Odp: przerabianie linuxa - od czego zacząć?

Post 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! :)
j0cker
Sędziwy Jeż
Sędziwy Jeż
Posty: 38
Rejestracja: 30 cze 2008, 16:57
Płeć: Mężczyzna
Wersja Ubuntu: 7.10
Środowisko graficzne: GNOME

Odp: przerabianie linuxa - od czego zacząć?

Post autor: j0cker »

ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 14 gości