Qual è la miglior risorsa per comprendere veramente a fondo Linux


10

Sono stato un utente Linux acceso e spento per molti anni. Di recente lo uso quotidianamente. Sto cercando suggerimenti per i media; libri commerciali, informazioni gratuite, video online ecc. che mi aiuteranno a comprendere il sistema operativo a un livello molto più profondo. I tuoi suggerimenti per favore.

Risposte:


6

Troverai diverse guide gratuite in The Linux Documentation Project, pagina delle guide . Questa è una breve lista che scelgo da lì, ma dovresti scorrere la pagina per trovare quello che ti serve.

  • Introduzione a Linux - Una guida pratica; Giu 2008
  • Linux on the Road; Nov 2005
  • La guida per amministratori di sistema Linux; Luglio 2005
  • Guida avanzata agli script di Bash; Mar 2009 (sì, questo è buono anche per capire Linux)

Dovresti cercare gli HOWTO specifici per gli argomenti che ti interessano. Un'altra data ha ordinato la lista degli HOWTO .

Ci sono alcuni antipasti nella pagina per principianti delle recensioni di Linux .

Infine, questo è un piccolo libro disponibile online: kernel Linux in breve . È in formato PDF dell'edizione 2007.

Dovresti usare questi riferimenti solo come tastatore per iniziare la tua ricerca delle cose di cui hai bisogno.


Grazie a tutti per le ottime risposte. Il kernel in breve è un vero gioiello. Questo è il tipo di libro che stavo cercando.
Stuart Woodward,

16

Il modo migliore per capire Linux è romperlo, malamente, e poi risolverlo.


Tee-hee ... Mi piace. Adoro rompere le cose.
Evan Anderson,

1
-1 Questo è un buon consiglio, ma non è una risorsa.
nome utente

1
Bella risposta. Ho imparato così tanto su Linux solo da scherzare con esso e provare cose. Dopo aver rovinato tutto, cerchi su Internet i modi per risolverlo. Dato che "Linux" è un termine così ampio che in questo caso probabilmente si riferisce più all'intero sistema operativo e alle applicazioni che lo eseguono, piuttosto che al solo kernel Linux, Non esiste davvero un'unica buona risorsa che potresti raccomandare.
Kibbee,

2
Ma ci sono alcune linee guida per ogni tipo di persona che potremmo elencare. Il mio preferito personale è iniziare con la distribuzione più difficile possibile, quindi installare una distribuzione automagica. Rompere le cose è ottimo per l'apprendimento, ma sapere cosa rompere in primo luogo per acquisire conoscenze specifiche, è molto più complicato. Il più delle volte, rompendo le cose, impariamo cose che non sapevamo nemmeno che dovevamo imparare.
voyager,

1
Essere Linux libero e facilmente riparabile nella maggior parte dei casi è sicuramente una risorsa. L'esperienza di iniziare con un sistema rotto e di essere in grado di vedere in tutte le sue parti (a differenza di un sistema operativo commerciale) è un enorme punto di forza, e l'unico modo per imparare a ricercare un problema e sentirti come farlo è farlo.
Karl Katzke,

10

Non sono sicuro, quando dici un "livello più profondo", se stai parlando di entrare di più nella riga di comando (alcune persone non escono mai dalla GUI fornita con la loro distribuzione, se puoi immaginarlo), o con davvero roba grintosa di basso livello come scrivere driver del kernel. Presumo più del primo che del secondo.

Ti consiglierei di fissare obiettivi ragionevoli per le cose che vorresti fare usando Linux e le applicazioni in esecuzione su Linux (eseguire un server Web, pubblicare file su host Windows, servire DHCP, eseguire un desktop grafico, ecc.). Sono fermamente convinto che impari solo quando stai "facendo". Una volta che hai un obiettivo in mente, perseguilo. Ciò significa leggere pagine man (molte e molte pagine man), documentazione "HOWTO", archivi di mailing list, post di blog casuali e, naturalmente, la documentazione fornita con i vari programmi che stai installando o compilando per essere eseguita sul tuo scatole.

Avendo insegnato per diversi anni a corsi di certificazione IT in classe, credo di poter affermare con un certo grado di autorità che gli studenti che ho visto fare il maggior numero di progressi sono stati quelli che stavano facendo progetti pazzi per il loro progetto e imparando dai posti dei loro pantaloni.

Come ho detto prima, le pagine man, la documentazione di "HOWTO" ( http://tldp.org/docs.html e in molti altri posti sulla 'rete) e gli archivi delle mailing list sono i tuoi amici. Eviterei qualsiasi libro che parli degli interni del kernel, almeno in questa fase. Non hai bisogno di quel tipo di conoscenza profonda per iniziare.

Parla con altre persone. Server Fault sembra che stia diventando un ottimo posto per ottenere buoni consigli. Poni domande qui e non pensare che sembrerai stupido nel farlo. Se riesci ad avere un po 'di "faccia a faccia" con persone che hanno familiarità con Linux, provaci. (Anche se ti consiglio di provare a separare l'opinione dai fatti. Esistono tante "guerre sante" nella comunità Linux su opinioni diverse su come fare le cose come in qualsiasi altra comunità - forse di più, data la natura della comunità .)

Per ottenere una conoscenza davvero "approfondita" dell'eredità Unix di Linux, potresti scegliere alcuni vecchi manuali di amministrazione o di riferimento specifici di Unix. Ne eviterei presto (almeno fino a quando non si apprezzerà la natura storica dei "percorsi non presi" con Linux rispetto ad alcuni dei sistemi operativi derivati ​​da Unix).

Non sapendo quale sia il tuo livello generale di abilità, lancerò un grido a un libro che il mio o potrebbe non essere completo. Consiglio vivamente "TCP / IP Illustrated" ( http://www.amazon.com/Illustrated-Volumes-Addison-Wesley-Professional-Computing/dp/0201776316 ). Non è affatto specifico di Linux, ma farai così tante cose che riguardano TCP / IP che conoscerlo "a freddo" è un gioco da ragazzi.

Immagino, in breve, sto dicendo che non ci sono libri magici o video, nessun video super-segreto da cui i "maestri" hanno imparato, ma assolutamente nessun limite a ciò che puoi imparare se ti attieni e non hai paura sporcarsi le mani.


10

Solo anni di esperienza con i singoli componenti ti daranno una comprensione profonda. Detto questo, la stragrande maggioranza dei libri di Oreilly Press sono davvero ben scritti e perfetti se non sei un manichino e hai più di 24 ore. :)

C'è un progetto chiamato Linux From Scratch , che ti mostra come costruire una distribuzione Linux dal nulla. Potresti trovare educativo fare una volta. Richiederà molto tempo poiché dovrai compilare tutto dalla fonte e alla fine butterai via tutto.

Trovo la pagina del kernel di LWN.net preziosa per stare al passo con il modo in cui le cose funzionano nel kernel ad alto livello.


+1 ha votato LFS FTW
bandi

7

Oltre a usarlo tutti i giorni (il che penso sia una cosa grandiosa!), Ti consiglio di iniziare a pensare ai servizi che potrebbero essere implementati per la tua rete su un box Linux. Inizia a progettarlo in base ai servizi Linux, cerca e implementa una volta che sei pronto. Speriamo che ci siano errori nel processo e quell'esperienza ti aiuterà a capire il sistema operativo a un livello più profondo.


3
Anche costruire Linux da zero fa la differenza. Prova questo: linuxfromscratch.org
Caterpillar,

Wow! Sicuramente +1 su quello!
l0c0b0x,

+1 per la creazione di Linux da scrach. Ho imparato un carico di barca sul processo di avvio di Linux, sulle toolchain e sullo sviluppo quasi incorporato usando uclibc costruendo installazioni di floppy basate su dischetti Linux alla fine degli anni '90. Il bootstrap di qualsiasi macchina Linux dal kernel "da zero" ti darà sicuramente molta esperienza.
Evan Anderson,

5

Per la filosofia generale di Unix e un'eccellente introduzione alla riga di comando, c'è il classico di Unix Programming Environment di Brian Kernighan e Rob Pike .

Inoltre, IBM DeveloperWorks sito Web ha oltre 900 articoli nella sua sezione Linux. Puoi sfogliare l'elenco degli articoli per gli argomenti che ritieni interessanti.

Alla fine, una volta che sei pronto per entrare nel nocciolo, vai alla fonte. Prendi il codice sorgente per la versione del kernel che stai usando su kernel.org (la tua distribuzione avrà anche pacchetti sorgente del kernel che puoi installare) e controlla la directory della documentazione. Troverai un sacco di materiale di riferimento sugli interni del kernel e sulle impostazioni di configurazione.


4

Scuola. Per comprendere veramente il sistema Linux è necessaria un'ampia gamma di sfondi di sistemi di Informatica. Compilatori, architettura informatica e sistemi operativi. E hai bisogno di una guida in grado di mostrarti ciò che è importante e correggere eventuali equivoci che hai o forma.

Una volta capito come funzionano i moderni processori e come i compilatori C li sfruttano, puoi immergerti in libri come Minix 3:

Minix3

Questa è l'ultima versione del libro su cui Torvalds, autore del kernel Linux, (liberamente) ha basato il suo lavoro. Imparerai a conoscere i componenti e gli algoritmi fondamentali di un sistema operativo e come implementarne esattamente uno: il testo viene fornito con una stampa quasi completa del codice sorgente su Minix a scopo di riferimento e didattico. Dai un'occhiata al gestore degli interrupt per avere una comprensione completa di come funziona il sistema e dove scorre il controllo.

E prima di deridere a scuola e in Informatica, è importante notare che i lavori che i sistemi operativi sono chiamati a svolgere sono generalmente NP-completi. Quindi comprendere un'ampia varietà di algoritmi disponibili è fondamentale per l'ottimizzazione delle prestazioni, poiché non ci sarà un algoritmo dimostrabilmente ottimale.

Oltre al kernel, ci sono molte altre aree. Poiché Linux è open source, questa è una miniera d'oro accademica. Sistemi come Debian e Ubuntu rendono disponibile la loro fonte ed è semplicissimo:

apt-get source package-name

Molti upstream inoltre ospitano il loro codice nel controllo di revisione, in modo da poter leggere la versione più aggiornata della fonte di un programma o persino vedere come è stato costruito anni fa.


+1 bump per la menzione "E hai bisogno di una guida che possa mostrarti ciò che è importante e correggere eventuali equivoci che hai o forma." È davvero un sistema operativo che è meglio compreso dalla tradizione orale (purtroppo).
Avery Payne,

3

La fonte .

Questo, ovviamente, se intendi il kernel .

Se stai cercando di imparare il sistema sopra il kernel e l'API, inizierei a studiare la vecchia scuola Unix. Forse prova alcuni FreeBSD / OpenBSD / NetBSD / DragonflyBSD . Anche un piccolo Minix potrebbe aiutare. Quindi passa a Slackware , Arch , Debian e Gentoo . Sono tutti diversi ( e forniti con un'ottima documentazione ) e in quelle differenze, la tua curiosità ti farà cercare perché è così, acquisirai molte conoscenze tecniche, commerciali, politiche e storiche.

Un altro modo sarebbe quello di approfondire /etc, vecchi manuali Unix e, naturalmente, Google .

Linux da zero è un ottimo modo di learningGNU / Linux.


3

Inizia a creare la tua distro. L'ho fatto per te e sai cosa? Dopo 4 mesi ho speso per questo che conosco gli interni di Linux più dei ragazzi intorno a me che usano Linux da più di 10 anni.


3

L'apprendimento in uno qualsiasi degli ambienti * nix è un approccio olistico . Implica una serie di epifanie ed esperienze . Questo non è per caso. È il sottoprodotto deliberato del suo design, poiché l'ambiente originale è stato progettato intorno e per i programmatori di computer. È anche il suo più grande difetto, poiché l'attenzione è rivolta agli aspetti tecnici e non all'esperienza dell'utente. È "una casa con una struttura robusta che durerà 100 anni senza servizio, ma il suo raccordo è a casaccio e la vernice chiaramente trascurata".

Contrasta questo con Windows, che è l'immagine speculare di questa filosofia - fai qualcosa che dia all'utente un'esperienza tangibile, ma proteggilo dal funzionamento interno delle cose. È "una casa con belle rifiniture e vernice, ma la base che è stata ricostruita più volte con molteplici soluzioni".

Per iniziare davvero ad imparare, suggerirei di creare immagini del kernel personalizzate con opzioni specifiche per il tuo hardware e installarle con le opzioni che desideri. Dovresti aspettarti completamente che qualcosa, da qualche parte si romperà, e potresti o meno essere in grado di riportare le cose alla "normalità". Questa è una parte normale di quel processo di apprendimento e dovresti affrontarlo come se le cose si interrompessero (cioè non rendere questa un'installazione primaria, utilizzare un'unità separata o una macchina virtuale o qualcosa del genere ...)

Ho risposto a una domanda simile , quindi per ridurre la digitazione la collegherò qui . Si potrà anche leggere i primi paragrafi di questa pagina , che vi darà una migliore sensazione per quello che siete dentro per.


2

Inizia a leggere / cat'ing i file /proce /etc- non farai alcun danno semplicemente leggendo i file (salva forse rovinando il tuo terminale / ssh-connection se esegui il cat di un file che produce informazioni binarie), e gran parte di esso è umano leggibile. ' sysctl -a' anche l'output è una miniera d'oro. Quando trovi qualcosa di interessante, google oman per ulteriori informazioni a riguardo.

Puoi trovare alcune vere gemme su come il kernel e il sistema operativo funzionano in questo modo.

Alcuni suggerimenti rapidi:

/ Etc / inittab
/etc/rcS.d
/etc/rc2.d
/ Etc / crontab
/ Proc / 1 / environ
/ proc / filesystems
/ Proc / meminfo
/ Proc / cpuinfo
sysctl -a | grep vm.swappiness
/ etc / default # basato su debian
/ etc / sysconfig # basato su redhat

Suggerimento rapido: alcuni output in / proc sono separati da NUL, quindi è difficile da leggere. Usa 'tr' per convertire i NUL in newline, ad esempio:

sudo cat / proc / 1 / environment | tr '\ 0', '\ n'

2

C'è molto da imparare su Linux o su qualsiasi sistema operativo. Un tipo di apprendimento è quello che io chiamo apprendimento "approfondito", che sta scoprendo come funziona il kernel, quali ipotesi fa, come i vari bit parlano tra loro e come si occupa dell'hardware. Questa è roba del kernel. Cose del genere sono molto utili per capire perché il sistema operativo si è rotto in quel modo. In effetti, l'ho imparato allo stesso modo di Karl Katzke . Ho rotto le cose e le ho rese migliori.

Per questo tipo di conoscenza, Linux è piuttosto semplice. È tutto documentato in molti luoghi. Lo stesso non può essere abbastanza dire per Windows, anche se c'è ancora un sacco di doc là fuori per questo.

Poi c'è l'apprendimento 'muoversi in giro nel sistema operativo', che è dove la conoscenza di bash / sed / awk / regex e tutte le altre cose sono utili. Perché il fatto è che un sistema operativo è molto più del suo kernel in questi giorni. Sono disponibili BLOB di driver forniti dal fornitore. Hai come questa particolare distribuzione impacchetta i suoi script di avvio. Hai vari meccanismi di patch / aggiornamento. Hai dei demoni di sistema di cui tutti hanno bisogno, ma non sono kernel.

Questo è uno spettro di conoscenza molto più ampio rispetto al semplice kernel-fu. Varia a seconda del distributore, quindi il modo in cui le cose funzionano su Red Hat potrebbe non funzionare allo stesso modo su Slackware. La posizione dei file può variare. Come può quello che hanno scelto per sostituire "vi".

"Imparare Linux" riguarda più l'apprendimento di un intero ecosistema che un semplice sistema operativo.


1

Ho avuto un libro chiamato "Programmazione Linux" che mi ha insegnato di più sul sistema operativo rispetto a qualsiasi libro "Impara Linux". Vorrei avere il codice ISBN, ma è stato fantastico ... in parte perché è entrato nella programmazione dei "perché", non solo dei "come".

Nel complesso, la maggior parte del mio apprendimento è stato onestamente attraverso la sua rottura e correzione. È successo lentamente e sto ancora imparando cose nuove dopo 12 anni.

È sicuramente un processo. La chiave è essere molto, molto curiosi. Quando incontri qualcosa di cui non hai familiarità, acquisisci familiarità. Cerca la conoscenza di come e perché spunta e impara anche le tecnologie sottostanti.


1

Ho trovato alla deriva attraverso Linux, FreeBSD, OpenBSD, Solaris e poi anche varie altre distribuzioni Linux un buon modo per imparare molto su Linux. Di come ha fatto le cose diversamente. Impari tanto sulla tua città natale mentre visiti luoghi diversi da quello su dove ti trovi.


1

Quando si tratta di libri, mi piacciono gli O'Reilly's, quindi "Essential System Administration Pocket Reference" e "Linux System Administration" sono possibili punti di partenza.

La mia copia di TCP / IP Network Administration è una versione precedente e non la uso da un po 'di tempo, ma l'ho trovato molto utile per una comprensione più approfondita di ciò che sta accadendo.


1

Stai già facendo il primo passo usando Linux come desktop normale.

Se vuoi capire come tutte le parti si uniscono e sono configurate, ti suggerisco di eseguire Gentoo . Da una normale installazione stage3, devi compilare il tuo kernel, installare tutti i tuoi servizi (tranne SSH che è lì fuori dalla scatola), compilare e configurare tu stesso X, ecc. Quando lo fai, finisci con un comprensione molto maggiore di tutti i bit che vanno in un'installazione binaria di linux. Inoltre non fa male che Gentoo abbia la migliore documentazione di qualsiasi Distro che abbia trovato, o che portage sia un gestore di pacchetti incredibilmente potente e flessibile.



1

Qualcun altro ha menzionato questo, e penso che sia la cosa che mi ha aiutato di più con l'uso di vari tipi di Linux. Se ritieni di avere un handle ragionevole su Linux, inizia a usare open / net / freebsd.
Per quanto riguarda il motivo, la maggior parte delle persone di Linux con cui ho lavorato possono usare una o due distribuzioni di Linux che non sono così diverse dall'altra. Certo, la maggior parte di loro conosceva quelle distro come il palmo della loro mano, ma potevano ancora essere sorpresi su una base allarmante con certe cose. Penso (non per iniziare una guerra di fiamma) che il modo in cui i BSD sono assemblati è un po 'più facile scoprire il "perché" del modo in cui le cose vengono fatte (inoltre, in agguato nelle mailing list bsd spiegano che "perché" alla morte ). Dipende dal cambiare il tuo punto di vista, non ti viene mai in mente di chiederti perché certe cose sono come sono fino a quando qualcuno non lo fa in un modo completamente diverso.


1

Questo post su Stackoverflow ha un ampio elenco di risorse Unix / Linux, inclusa la maggior parte delle opere canoniche sull'argomento.

Un altro modo per imparare cosa spinge Linux dietro le quinte è lavorare con Linux From Scratch ( http://www.linuxfromscratch.org/ ). Si tratta essenzialmente di una serie di esercizi per l'installazione e la configurazione manuali dei vari componenti di un sistema Linux ed è un'ottima introduzione per imparare da dadi e bulloni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.