Co jest najlepszym źródłem do głębokiego zrozumienia Linuksa

10

Jestem użytkownikiem Linuksa od wielu lat. Ostatnio używam go codziennie. Szukam sugestii dla mediów; książki handlowe, darmowe informacje, filmy online itp., które pomogą mi zrozumieć system operacyjny na znacznie głębszym poziomie. Twoje sugestie proszę.

Stuart Woodward
źródło

Odpowiedzi:

6

Znajdziesz kilka darmowych przewodników na stronie Linux Documentation Project, strona przewodników . Oto krótka lista, którą wybrałem stamtąd, ale powinieneś przewinąć stronę, aby znaleźć to, czego potrzebujesz.

  • Wprowadzenie do Linuksa - praktyczny przewodnik; Czerwiec 2008
  • Linux w drodze; Listopad 2005
  • Przewodnik administratora systemu Linux; Lipiec 2005 r
  • Advanced Bash-Scripting Guide; Marzec 2009 (tak, jest to również dobre dla zrozumienia linux)

Powinieneś poszukać konkretnych HOWTO dla interesujących Cię tematów. Kolejna lista posortowała HOWTO .

Jest kilka przystawek na stronie dla początkujących recenzujących Linux .

Wreszcie, jest to mała książka dostępna online - jądro Linux w pigułce . Jest to wersja PDF wydania 2007.

Powinieneś używać tych referencji tylko jako wyczucia, aby rozpocząć własne wyszukiwanie rzeczy, których potrzebujesz.

nik
źródło
Dziękuję wszystkim za wspaniałe odpowiedzi. Jądro w pigułce to prawdziwy klejnot. Tego rodzaju książki szukałem.
Stuart Woodward,
16

Najlepszym sposobem na zrozumienie Linuksa jest zepsuć go źle, a następnie naprawić.

Karl Katzke
źródło
Tee-hee ... Lubię to. Uwielbiam łamać rzeczy.
Evan Anderson
1
-1 To dobra rada, ale to nie jest zasób.
nazwa użytkownika
1
świetna odpowiedź. Nauczyłem się tak wiele o Linuksie, po prostu go grzebiąc i próbując. Po tym, jak go zepsułeś, poszukaj sposobów na naprawę w Internecie. Ponieważ „Linux” jest tak szerokim pojęciem, że w tym przypadku prawdopodobnie odnosi się raczej do całego systemu operacyjnego i aplikacji, które na nim działają, a nie tylko do jądra Linux, tak naprawdę nie ma ani jednego dobrego zasobu, który można by polecić.
Kibbee,
2
Istnieją jednak wytyczne dla każdego rodzaju osób, które moglibyśmy wymienić. Mój osobisty faworyt zaczyna się od najtrudniejszej dystrybucji, a następnie instaluję dystrybucję automagiczną. Przełamywanie rzeczy jest świetne do nauki, ale wiedza o tym, co należy przełamać, aby zdobyć konkretną wiedzę, jest znacznie trudniejsza. Przez większość czasu, niszcząc rzeczy uczymy się rzeczy, o których nawet nie wiedzieliśmy, że musimy się uczyć.
voyager
1
Linux jest darmowy i łatwy do naprawy w większości przypadków jest zdecydowanie zasobem. Doświadczenie, gdy zaczynasz od zepsutego systemu i możesz zobaczyć wszystkie jego części (w przeciwieństwie do komercyjnego systemu operacyjnego) jest ogromną siłą, a jedynym sposobem, w jaki uczysz się, jak badać problem i jak go rozwiązać, jest zrobienie tego.
Karl Katzke,
10

Nie jestem pewien, kiedy mówisz „głębszy poziom”, jeśli mówisz o dostaniu się więcej do wiersza poleceń (niektórzy ludzie nigdy nie opuszczają GUI dostarczanego wraz z ich dystrybucją, jeśli możesz to sobie wyobrazić), lub naprawdę szorstkie rzeczy niskiego poziomu, takie jak pisanie sterowników jądra. Zakładam więcej tego pierwszego niż drugiego.

Radzę ci wytyczyć rozsądne cele dla rzeczy, które chciałbyś robić przy użyciu Linuksa i aplikacji działających w systemie Linux (uruchom serwer WWW, serwuj pliki na hostach Windows, obsługuj DHCP, uruchamiaj pulpit graficzny itp.). Jestem głęboko przekonany, że uczysz się tylko wtedy, gdy „robisz”. Gdy masz już na myśli cel, realizuj go. Oznacza to czytanie stron podręcznika (wiele stron podręcznika), dokumentację „HOWTO”, archiwa list mailingowych, losowe posty na blogach oraz, oczywiście, dokumentację dostarczaną z różnymi programami, które instalujesz lub kompilujesz, aby uruchomić je na twoim pudła.

Od kilku lat prowadząc klasowe kursy certyfikacji IT, mogę powiedzieć z pewnym autorytetem, że uczniowie, których widziałem, robili największy postęp, to ci, którzy robili szalone projekty według własnego projektu i uczą się przy siedzeniach ich spodni.

Jak powiedziałem wcześniej, strony man, dokumentacja „HOWTO” ( http://tldp.org/docs.html oraz w wielu innych miejscach w sieci) i archiwa list mailingowych są twoimi przyjaciółmi. Unikam wszelkich książek, które mówią o wewnętrznych elementach jądra, przynajmniej na tym etapie. Na początek nie potrzebujesz takiej głębokiej wiedzy.

Rozmawiaj z innymi ludźmi. Awaria serwera wygląda, jakby okazało się, że jest to świetne miejsce na uzyskanie dobrych porad. Zadawaj pytania tutaj i nie myśl, że będziesz wyglądał głupio. Jeśli masz trochę czasu na rozmowę z ludźmi znającymi Linuksa, skorzystaj z niego. (Chociaż zalecam, abyś spróbował oddzielić opinię od faktów. W społeczności Linuksa jest tyle „świętych wojen” w porównaniu do różnych opinii na temat robienia rzeczy, jak w każdej innej społeczności - być może więcej, biorąc pod uwagę charakter społeczności .)

Aby naprawdę „pogłębić” wiedzę o uniksowym dziedzictwie Linuksa, możesz skorzystać ze starszych, specyficznych dla Uniksa instrukcji administracyjnych lub podręczników. Chciałbym omijać je wcześnie (przynajmniej dopóki nie docenisz historycznej natury „ścieżek, które nie zostały podjęte” w Linuksie w porównaniu z niektórymi systemami operacyjnymi pochodzącymi z Uniksa).

Nie wiedząc, jaki jest twój ogólny poziom umiejętności, rzucę okrzyk na książkę, która jest dla mnie lub może nie być pomocna. Bardzo polecam „TCP / IP Illustrated” ( http://www.amazon.com/Illustrated-Volumes-Addison-Wesley-Professional-Computing/dp/0201776316 ). To w ogóle nie jest specyficzne dla Linuksa, ale będziesz robił tak wiele rzeczy, które zajmują się TCP / IP, że znajomość tego „zimnego” nie jest żadnym problemem.

Krótko mówiąc, mówię, że nie ma magicznej książki ani książek, żadnych super tajnych filmów, od których uczyli się „mistrzowie”, ale absolutnie nie ma ograniczeń co do tego, czego możesz się nauczyć, jeśli będziesz się jej trzymać i nie boisz się ubrudzić sobie ręce.

Evan Anderson
źródło
10

Tylko wieloletnie doświadczenie w grze z poszczególnymi komponentami zapewni Ci głębokie zrozumienie. To powiedziawszy, ogromna większość książek Oreilly Press jest naprawdę dobrze napisana i idealna, jeśli nie jesteś manekinem i masz więcej niż 24 godziny. :)

Istnieje projekt o nazwie Linux From Scratch , który pokazuje, jak zbudować dystrybucję linux z niczego. Może się to okazać jednorazowe. To będzie czasochłonne, ponieważ musisz skompilować wszystko ze źródła, a wszystko to wyrzucisz na końcu.

Uważam, że strona jądra LWN.net jest nieoceniona, aby nadążyć za tym, jak rzeczy działają w jądrze na wysokim poziomie.

David Pashley
źródło
+1 zagłosowało LFS FTW
bandi
7

Oprócz codziennego korzystania (co myślę, że to świetna rzecz!), Polecam zacząć myśleć o usługach, które mogłyby być zaimplementowane dla twojej sieci na Linuksie. Rozpocznij projektowanie w oparciu o usługi Linux, badaj i wdrażaj, gdy będziesz gotowy. Mam nadzieję, że wystąpią błędy w tym procesie, a to doświadczenie pomoże ci zrozumieć system operacyjny na głębszym poziomie.

l0c0b0x
źródło
3
Nawet budowanie Linuksa od podstaw robi wrażenie. Spróbuj tego: linuxfromscratch.org
Caterpillar
Łał! Zdecydowanie +1 na to!
l0c0b0x
+1 za budowę Linuksa ze scrach. Nauczyłem się łódki na temat procesu rozruchu Linuksa, łańcuchów narzędzi i quasi-osadzonego programowania przy użyciu instalowania systemu Linux na dyskietkach uclibc w późnych latach 90-tych. Uruchomienie dowolnej maszyny z Linuksem od jądra w górę „od zera” na pewno zapewni wiele wspaniałych wrażeń.
Evan Anderson
5

Ogólną filozofię Uniksa i doskonałe wprowadzenie do wiersza poleceń można znaleźć w klasycznym środowisku programistycznym Briana Kernighana i Roba Pike'a .

Ponadto w witrynie IBM DeveloperWorks w sekcji dotyczącej systemu Linux znajduje się ponad 900 artykułów. Możesz przeglądać listę artykułów w poszukiwaniu interesujących Cię tematów.

Wreszcie, gdy będziesz gotowy, aby dostać się do drobiazgów, idź do źródła. Chwyć kod źródłowy wersji jądra, której używasz na kernel.org (twoja dystrybucja będzie również zawierała pakiety źródłowe jądra, które możesz zainstalować) i sprawdź katalog Documentation. Znajdziesz wiele materiałów referencyjnych na temat wewnętrznych elementów jądra i ustawień konfiguracji.

Ben Williams
źródło
4

Szkoła. Aby naprawdę zrozumieć system Linux, potrzebujesz szerokiej gamy środowisk informatycznych. Kompilatory, architektura komputera i systemy operacyjne. Potrzebujesz przewodnika, który pokaże ci, co jest ważne, i skoryguje wszelkie nieporozumienia, które masz lub które formujesz.

Kiedy zrozumiesz, jak działają współczesne procesory i jak je wykorzystują kompilatory C, możesz zanurzyć się w książkach takich jak Minix 3:

Minix3

Jest to najnowsza wersja książki, na której Torvalds, autor jądra Linuksa (luźno) oparł swoją pracę. Dowiesz się o podstawowych składnikach i algorytmach systemu operacyjnego oraz o tym, jak dokładnie je zaimplementować: tekst zawiera prawie całkowity wydruk kodu źródłowego do Minix w celach informacyjnych i instruktażowych. Sprawdź moduł obsługi przerwań, aby uzyskać pełne zrozumienie, jak działa system i gdzie przepływa kontrola.

I zanim zaczniesz drwić ze szkoły i informatyki, ważne jest, aby pamiętać, że zadania, o które proszone są systemy operacyjne, są na ogół NP-ukończone. Dlatego zrozumienie szerokiej gamy dostępnych algorytmów ma kluczowe znaczenie dla dostrajania wydajności, ponieważ nie będzie możliwego do udowodnienia optymalnego algorytmu.

Oprócz jądra istnieje wiele innych obszarów. Ponieważ Linux jest open source, jest to akademicka kopalnia złota. Systemy takie jak Debian i Ubuntu udostępniają swoje źródło, a to jest bardzo proste:

apt-get source package-name

Wiele osób upstreams hostuje również swój kod w kontroli wersji, dzięki czemu możesz przeczytać najbardziej aktualną wersję źródła programu, a nawet zobaczyć, jak został zbudowany lata temu.

jldugger
źródło
+1 guz za wzmiankę „I potrzebujesz przewodnika, który pokaże ci, co jest ważne, i skoryguje wszelkie nieporozumienia, które masz lub formujesz”. To naprawdę system operacyjny najlepiej rozumiany w tradycji ustnej (niestety).
Avery Payne
3

Źródło .

Oczywiście jeśli chodzi o jądro .

Jeśli próbujesz nauczyć się systemu nad jądrem i interfejsem API, zacznę od nauki starej szkoły Unix. Może wypróbuj FreeBSD / OpenBSD / NetBSD / DragonflyBSD . Trochę Minix też może pomóc. Następnie przejdź do Slackware , Arch , Debian i Gentoo . Są one różne ( i przychodzą z wielkiego dokumentacji ), w tych diferencies, twoja ciekawość sprawi, że będziesz szukać dlaczego tak jest, można zdobyć dużo wiedzy technicznej, komercyjne, politycznym i historycznym.

Innym sposobem byłoby zagłębienie się w /etcstare podręczniki Unixa i oczywiście Google .

Linux od podstaw to świetny sposób na learningGNU / Linux.

podróżnik
źródło
3

Po prostu zacznij budować własną dystrybucję. Zrobiłem to dla siebie i wiesz co? Po 4 miesiącach spędziłem na tym, że wiem o wewnętrznych elementach Linuksa bardziej niż ludzie wokół mnie, którzy używają Linuksa od ponad 10 lat.

Alexander Gromnitsky
źródło
3

Uczenie się w dowolnym środowisku * nix jest podejściem całościowym . Obejmuje serię objawień i doświadczeń . To nie jest przypadek. Jest to celowy produkt uboczny jego projektu, ponieważ oryginalne środowisko zostało zaprojektowane wokół i dla programistów komputerowych. Jest to również jego największa wada, ponieważ nacisk kładziony jest na aspekty techniczne, a nie wrażenia użytkownika. Jest to „dom o solidnej ramie, który przetrwa 100 lat bez serwisu, ale jego bocznica jest przypadkowa, a farba wyraźnie zaniedbana”.

Porównaj to z Windows, który jest lustrzanym odbiciem tej filozofii - zrób coś, co daje użytkownikowi namacalne wrażenia, ale chroń go przed wewnętrznym działaniem rzeczy. Jest to „dom z pięknymi wykończeniami i farbą, ale fundamentem, który został kilkakrotnie zbudowany, z wieloma obejściami”.

Aby naprawdę rozpocząć naukę, sugeruję zbudowanie niestandardowych obrazów jądra, które mają opcje specyficzne dla twojego sprzętu, i zainstalowanie ich z wybranymi opcjami. Powinieneś w pełni spodziewać się, że coś w tym stanie się gdzieś złamie i możesz, ale nie musi, cofnąć wszystko do „normalności”. Jest to normalna część tego procesu uczenia się i powinieneś podejść do tego tak, jakby coś się zepsuło (tj. Nie rób z tego podstawowej instalacji, użyj osobnego dysku lub maszyny wirtualnej albo czegoś ...)

Odpowiedziałem na podobne pytanie , więc aby ograniczyć pisanie, odsyłam go tutaj . Będziesz także chciał przeczytać kilka pierwszych akapitów na tej stronie , które dadzą Ci lepsze wyczucie tego, w czym jesteś.

Avery Payne
źródło
2

Rozpocznij czytanie / cat'ing plików /proci /etc- nie zrobisz żadnych szkód po prostu czytając pliki (zapisz może zepsucie połączenia terminala / ssh, jeśli cat plik, który produkuje informacje binarne), a większość z nich to ludzie czytelny. „ sysctl -a” Wyjście jest także kopalnia złota. Gdy znajdziesz coś interesującego, wejdź na google lub manpo więcej informacji na ten temat.

Możesz znaleźć prawdziwe klejnoty na temat tego, jak działa jądro i system operacyjny.

Kilka szybkich wskazówek:

/ etc / inittab
/etc/rcS.d
/etc/rc2.d
/ etc / crontab
/ proc / 1 / Environment
/ proc / filesystems
/ proc / meminfo
/ proc / cpuinfo
sysctl -a | grep vm.swappiness
/ etc / default # oparty na debianie
/ etc / sysconfig # redhat-based

Szybka wskazówka - niektóre dane wyjściowe w / proc są oddzielone NUL, a zatem są trudne do odczytania. Użyj „tr”, aby przekonwertować wartości NUL na znaki nowej linii, np .:

sudo cat / proc / 1 / Environment | tr „\ 0”, „\ n”
Mike Pountney
źródło
2

Jest wiele do nauczenia się na temat Linuksa lub dowolnego systemu operacyjnego. Jednym z rodzajów uczenia się jest to , co nazywam uczeniem „dogłębnym”, czyli dowiadywanie się, jak działa jądro, jakie przyjmuje założenia, jak różne bity rozmawiają ze sobą i jak radzi sobie ze sprzętem. To jest jądro. Takie rzeczy są bardzo przydatne w ustaleniu, dlaczego system operacyjny właśnie się zepsuł. W rzeczywistości nauczyłem się tego w ten sam sposób, co Karl Katzke . Zniszczyłem rzeczy i ulepszyłem.

Dla tego rodzaju wiedzy Linux jest dość łatwy. Wszystko jest udokumentowane w wielu miejscach. Tego samego nie można raczej powiedzieć o Windows, chociaż nadal istnieje wiele doc tam dla niego.

Potem jest nauka „poruszania się po systemie operacyjnym”, w której przydatna jest znajomość bash / sed / awk / regex i wszystkich innych rzeczy. Ponieważ faktem jest, że obecnie system operacyjny to znacznie więcej niż jądro. Dostarczyłeś obiekty BLOB sterowników. Masz sposób, w jaki ta konkretna dystrybucja pakuje swoje skrypty startowe. Masz różne mechanizmy łatek / aktualizacji. Masz demony systemowe, których wszyscy potrzebują, ale nie są jądrem.

Jest to znacznie szersze spektrum wiedzy niż proste jądro-fu. Różni się w zależności od dystrybutora, więc sposób działania w Red Hat może nie działać tak samo w Slackware. Miejsce przechowywania plików może się różnić. Jak to, co wybrali, zastąpili „vi”.

„Nauka Linuksa” polega bardziej na nauce całego ekosystemu niż na zwykłym systemie operacyjnym.

sysadmin1138
źródło
1

Miałem książkę zatytułowaną „Programowanie Linux”, która nauczyła mnie więcej o systemie operacyjnym niż jakakolwiek książka „Learn Linux”. Chciałbym mieć numer ISBN, ale to było niesamowite ... częściowo dlatego, że weszło w programowanie „dlaczego”, a nie tylko „jak”.

Ogólnie rzecz biorąc, większość mojej nauki polegała na szczerym łamaniu i naprawianiu. Stało się to powoli, a ja wciąż uczę się nowych rzeczy po 12 latach.

To zdecydowanie proces. Kluczem jest być bardzo, bardzo ciekawym. Kiedy napotkasz coś, czego nie znasz, zapoznaj się z tym. Poszukaj wiedzy o tym, jak i dlaczego tyka, a także poznaj podstawowe technologie.

Matt Simmons
źródło
1

Uznałem, że dryfowanie po Linuksie, FreeBSD, OpenBSD, Solarisie, a nawet różnych innych dystrybucjach Linuksa to dobry sposób na nauczenie się dużo o Linuksie. O tym, jak wyglądało inaczej. Dowiesz się tyle samo o swoim rodzinnym mieście, odwiedzając inne miejsca, niż dowiesz się, gdzie jesteś.

Kyle Hodgson
źródło
1

Jeśli chodzi o książki, lubię O'Reilly's, więc „Essential System Administration Pocket Reference” i „Linux System Administration” są możliwymi punktami wyjścia.

Moja kopia Administracji sieci TCP / IP jest starsza i od dłuższego czasu jej nie używałem, ale uważam, że bardzo przydatne jest lepsze zrozumienie tego, co się dzieje.

Totem - Przywróć Monikę
źródło
1

Już robisz pierwszy krok, używając Linuksa jako zwykłego pulpitu.

Jeśli chcesz zrozumieć, w jaki sposób wszystkie części łączą się i są skonfigurowane, sugeruję uruchomienie Gentoo . Od zwykłej instalacji stage3 musisz skompilować własne jądro, zainstalować wszystkie swoje usługi (oprócz SSH, który jest dostępny po wyjęciu z pudełka), zbudować i skonfigurować X samodzielnie, itp. Kiedy to robisz, otrzymujesz znacznie lepsze zrozumienie wszystkich bitów wchodzących w binarną instalację linuksową. Nie szkodzi również, że Gentoo ma najlepszą dokumentację ze wszystkich Distro, jakie znalazłem, lub że portage jest fantastycznie potężnym i elastycznym menedżerem pakietów.

Ophidian
źródło
1

Ktoś inny wspomniał o tym i myślę, że to właśnie pomogło mi najbardziej przy użyciu różnych smaków linuksowych. Jeśli czujesz, że masz rozsądne podejście do systemu Linux, zacznij korzystać z open / net / freebsd.
Z tego powodu większość ludzi z Linuksem, z którymi pracowałem, może używać jednej lub dwóch dystrybucji Linuksa, które nie różnią się tak bardzo od innych. Jasne, większość z nich znała takie zakłócenia jak grzbiet dłoni, ale wciąż mogły być zaskakująco zaskoczone niektórymi rzeczami. Myślę (nie rozpętać wojny z płomieniami), że sposób, w jaki gromadzone są BSD, trochę łatwiej jest odkryć „dlaczego” sposobu, w jaki się to robi (plus czają się na listach dyskusyjnych bsd, wyjaśniają, że „dlaczego” na śmierć ). Sprowadza się to do zmiany twojego punktu widzenia, może nigdy nie przyszło ci do głowy zapytać, dlaczego pewne rzeczy są takie, jakie są, dopóki ktoś nie zrobi tego w zupełnie inny sposób.

DF
źródło
1

Ten post na Stackoverflow zawiera dużą listę zasobów Unix / Linux, w tym większość kanonicznych prac na ten temat.

Innym sposobem, aby dowiedzieć się, co sprawia, że ​​Linux tyka za kulisami, jest praca z Linux From Scratch ( http://www.linuxfromscratch.org/ ). Zasadniczo jest to zestaw ćwiczeń z ręczną instalacją i konfiguracją różnych komponentów systemu Linux i jest to bardzo dobre wprowadzenie do nauki nakrętek i śrub.

ConcernedOfTunbridgeWells
źródło