Qual é o melhor recurso para realmente entender profundamente o Linux


10

Sou usuário do Linux há muitos anos. Recentemente, tenho usado diariamente. Estou procurando sugestões para mídia; livros comerciais, informações gratuitas, vídeos on-line etc. que me ajudarão a entender o sistema operacional em um nível muito mais profundo. Suas sugestões, por favor.

Respostas:


6

Você encontrará vários guias gratuitos em The Linux Documentation Project, página de guias . Esta é uma pequena lista que eu escolho a partir daí, mas você deve rolar a página para encontrar o que precisa.

  • Introdução ao Linux - Um guia prático; Jun 2008
  • Linux na estrada; Nov 2005
  • O Guia do Administrador do Sistema Linux; Julho de 2005
  • Guia avançado de script de bash; Mar 2009 (sim, isso também é bom para entender o Linux)

Você deve procurar por HOWTOs específicos para os tópicos de seu interesse. Outra lista de HOWTO classificada em data .

Existem alguns iniciantes na página de iniciantes em revisões do Linux .

Finalmente, este é um pequeno livro disponível on-line - Linux Kernel in a Nutshell . Está no formato PDF da edição de 2007.

Você deve usar essas referências apenas como um sensor para iniciar sua própria pesquisa por coisas de que precisa.


Obrigado a todos pelas ótimas respostas. O Kernel em poucas palavras é uma verdadeira jóia. Esse é o tipo de livro que eu estava procurando.
Stuart Woodward

16

A melhor maneira de entender o Linux é quebrá-lo muito e corrigi-lo.


Tee-hee ... eu gosto disso. Eu amo quebrar coisas.
Evan Anderson

1
-1 Esse é um bom conselho, mas não é um recurso.
nome de usuário

1
Ótima resposta. Eu aprendi muito sobre o Linux apenas mexendo com ele e testando coisas. Depois de estragar tudo, você procura na internet maneiras de corrigi-lo. Como "Linux" é um termo tão amplo que, nesse caso, provavelmente se refere mais a todo o sistema operacional e aplicativos que rodam nele, em vez de apenas ao kernel do Linux, não há realmente um único recurso bom que você possa recomendar.
Kibbee

2
Mas existem algumas diretrizes para todo tipo de pessoa que poderíamos listar. Meu favorito pessoal é começar com a distribuição mais difícil possível e instalar uma distribuição automática. Quebrar as coisas é ótimo para aprender, mas saber o que quebrar em primeiro lugar para obter conhecimentos específicos é muito mais complicado. Na maioria das vezes, quebrando coisas que aprendemos, coisas que nem sabíamos que tínhamos que aprender.
Voyager

1
O Linux sendo gratuito e facilmente reparável na maioria dos casos é definitivamente um recurso. A experiência de começar com um sistema quebrado e ser capaz de ver todas as suas partes (diferente de um sistema operacional comercial) é uma força enorme, e a única maneira de aprender como pesquisar um problema e analisar o caminho é fazê-lo.
Karl Katzke

10

Não tenho certeza, quando você diz um "nível mais profundo", se está falando em entrar mais na linha de comando (algumas pessoas nunca deixam a GUI que acompanha sua distribuição, se você pode imaginar isso), ou com realmente coisas de baixo nível como escrever drivers de kernel. Vou assumir mais do que o anterior.

Aconselho que você defina metas razoáveis ​​para as coisas que você gostaria de fazer usando o Linux e aplicativos em execução no Linux (execute um servidor Web, sirva arquivos para hosts do Windows, sirva DHCP, execute uma área de trabalho gráfica, etc.). É minha firme convicção que você só aprende quando está "fazendo". Depois de ter um objetivo em mente, persiga-o. Isso significa ler páginas de manual (muitas e muitas páginas de manual), documentação "HOWTO", arquivos de listas de discussão, postagens aleatórias em blogs e, é claro, a documentação que acompanha os vários programas que você está instalando ou compilando para executar no seu computador. caixas.

Tendo ministrado cursos de certificação de TI em sala de aula por vários anos, acredito que posso dizer com algum grau de autoridade que os alunos que eu vi fazer mais progresso foram os que estavam realizando projetos malucos de seu próprio design e aprendendo pelos assentos de suas calças.

Como eu disse antes, as páginas de manual, a documentação "HOWTO" ( http://tldp.org/docs.html e em muitos outros locais da rede) e os arquivos das listas de discussão são seus amigos. Eu evitaria qualquer livro que falasse sobre aspectos internos do kernel, pelo menos nesse estágio. Você não precisa desse tipo de conhecimento profundo para começar.

Converse com outras pessoas. Parece que o Server Fault está se tornando um ótimo lugar para obter bons conselhos. Faça perguntas aqui e não pense que você vai parecer estúpido fazendo isso. Se você pode ter algum "tempo de cara" com pessoas familiarizadas com o Linux, faça isso. (Embora eu recomendo que você tente separar opinião e fato. Há tantas "guerras sagradas" na comunidade Linux sobre opiniões divergentes sobre como fazer as coisas como em qualquer outra comunidade - talvez mais, dada a natureza da comunidade. .)

Para obter um conhecimento realmente "profundo" da herança Unix do Linux, você pode optar por alguns manuais mais antigos de administração ou referência específicos ao Unix. Eu evitaria isso desde o início (pelo menos até que você possa apreciar a natureza histórica dos "caminhos não percorridos" no Linux em comparação com alguns dos sistemas operacionais derivados do Unix).

Sem saber qual é o seu nível de habilidade geral, jogarei uma mensagem para um livro que pode ou não ser bom para mim. Eu recomendo o "TCP / IP Illustrated" ( http://www.amazon.com/Illustrated-Volumes-Addison-Wesley-Professional-Computing/dp/0201776316 ). Não é nada específico do Linux, mas você fará tantas coisas que lidam com o TCP / IP que conhecê-lo "frio" é um acéfalo.

Acho que, resumindo, estou dizendo que não há livros ou livros mágicos, nem vídeos super-secretos com os quais os "mestres" aprenderam, mas absolutamente nenhum limite para o que você pode aprender se se ater a ele e não tiver medo sujar as mãos.


10

Apenas anos de experiência jogando com componentes individuais fornecerão uma compreensão profunda. Dito isto, a grande maioria dos livros da Oreilly Press é realmente muito bem escrita e perfeita, se você não é um boneco e tem mais de 24 horas. :)

Existe um projeto chamado Linux From Scratch , que mostra como construir uma distribuição Linux a partir do nada. Você pode achar educativo fazer isso uma vez. Vai levar tempo, pois você precisa compilar tudo da fonte e jogar tudo fora no final.

Acho a página do kernel do LWN.net inestimável para acompanhar como as coisas funcionam no kernel em alto nível.


+1 votado LFS FTW
bandi

7

Além de usá-lo todos os dias (o que eu acho ótimo!), Recomendo que você comece a pensar em serviços que poderiam ser implementados para sua rede em uma caixa Linux. Comece a projetá-lo com base nos serviços Linux, pesquise e implemente quando estiver pronto. Esperamos que haja erros no processo, e essa experiência o ajudará a entender o sistema operacional em um nível mais profundo.


3
Mesmo construindo o linux do zero faz sentido. Tente isto: linuxfromscratch.org
Caterpillar

Uau! Definitivamente +1 nisso!
L0c0b0x 06/06/09

+1 para criar o Linux a partir do scrach. Aprendi muito sobre o processo de inicialização do Linux, as cadeias de ferramentas e o desenvolvimento quase incorporado usando as instalações do Linux baseadas em disquetes de construção de uclibc no final dos anos 90. A inicialização de qualquer máquina Linux a partir do kernel "do zero" definitivamente proporcionará uma grande experiência.
Evan Anderson

5

Para a filosofia geral do Unix e uma excelente introdução à linha de comando, há o clássico The Unix Programming Environment de Brian Kernighan e Rob Pike .

Além disso, o site DeveloperWorks da IBM possui mais de 900 artigos em sua seção Linux. Você pode procurar na lista de artigos os tópicos que achar interessantes.

Finalmente, quando estiver pronto para entrar no âmago da questão, vá para a fonte. Pegue o código fonte da versão do kernel que você está usando no kernel.org (sua distribuição também terá pacotes de fontes do kernel que você pode instalar) e verifique o diretório Documentation. Você encontrará muito material de referência nos internos do kernel e nas definições de configuração.


4

Escola. Para realmente entender o sistema Linux, você precisa de uma ampla variedade de origens de sistemas de Ciência da Computação. Compiladores, arquitetura de computadores e sistemas operacionais. E você precisa de um guia que possa lhe mostrar o que é importante e corrigir qualquer mal-entendido que você tenha ou forme.

Depois de entender como os processadores modernos funcionam e como os compiladores C os exploram, você pode mergulhar em livros como o Minix 3:

Minix3

Esta é a versão mais recente do livro em que Torvalds, autor do kernel do Linux, (vagamente) baseou seu trabalho. Você aprenderá sobre os componentes e algoritmos fundamentais de um sistema operacional e como exatamente implementá-lo: o texto vem com uma impressão quase completa do código-fonte no Minix para fins de referência e instrução. Confira o manipulador de interrupções para obter um entendimento completo de como o sistema funciona e para onde o controle flui.

E antes que você zombe da educação e da Ciência da Computação, é importante observar que os trabalhos que os Sistemas Operacionais são solicitados a fazer geralmente são NP completos. Portanto, entender uma grande variedade de algoritmos disponíveis é fundamental para o ajuste de desempenho, pois não haverá um algoritmo comprovadamente ideal.

Além do kernel, há várias outras áreas. Como o Linux é de código aberto, esta é uma mina de ouro acadêmica. Sistemas como Debian e Ubuntu disponibilizam sua fonte, e é simples:

apt-get source package-name

Muitos upstreams também hospedam seu código no controle de revisão, para que você possa ler a versão mais atualizada da fonte de um programa ou até mesmo ver como foi criada anos atrás.


+1 de aumento para mencionar "E você precisa de um guia que possa lhe mostrar o que é importante e corrigir qualquer mal-entendido que você tenha ou forme". É realmente um sistema operacional que é melhor compreendido pela tradição oral (infelizmente).
Avery Payne

3

A fonte .

Isso, é claro, se você quer dizer o kernel .

Se você está tentando aprender o sistema acima do kernel e da API, eu começaria aprendendo a velha escola Unix. Talvez tente alguns FreeBSD / OpenBSD / NetBSD / DragonflyBSD . Um pouco de Minix também pode ajudar. Em seguida, vá para Slackware , Arch , Debian e Gentoo . São todos diferentes ( e vêm com ótima documentação ) e, nessas diferenças, sua curiosidade fará com que você pesquise por que é assim, obterá muito conhecimento técnico, comercial, político e histórico.

Outra maneira seria cavar /etc, velhos manuais do Unix e, é claro, o Google .

Linux a partir do zero é uma ótima maneira de learningGNU / Linux.


3

Basta começar a criar sua própria distribuição. Eu fiz isso por si mesmo e você sabe o que? Depois de 4 meses, gasto com isso que conheço mais os internos do Linux do que os caras ao meu redor que usam o Linux há mais de 10 anos.


3

Aprender em qualquer um dos ambientes * nix é uma abordagem holística . Envolve uma série de epifanias e experiências . Isso não é por acaso. É o subproduto deliberado de seu design, pois o ambiente original foi projetado em torno e para programadores de computador. É também sua maior falha, pois o foco está nos aspectos técnicos e não na experiência do usuário. É "uma casa com uma estrutura robusta que durará 100 anos sem serviço, mas seu revestimento é aleatório e a tinta claramente negligenciada".

Compare isso com o Windows, que é a imagem espelhada dessa filosofia - faça algo que proporcione ao usuário uma experiência tangível, mas os proteja do funcionamento interno das coisas. É "uma casa com belos acabamentos e tintas, mas a fundação que foi construída várias vezes com várias soluções alternativas".

Para realmente começar a aprender, sugiro criar imagens personalizadas do kernel com opções específicas para o seu hardware e instalá-las com as opções desejadas. Você deve esperar que isso aconteça em alguma coisa, em algum lugar, e você poderá ou não conseguir voltar ao normal. Essa é uma parte normal desse processo de aprendizado e você deve abordar isso como se as coisas quebrassem (por exemplo, não faça desta uma instalação primária, use uma unidade ou máquina virtual separada ou algo assim ...)

Fiz uma resposta em uma pergunta semelhante ; portanto, para reduzir a digitação, eu a vinculo aqui . Você também vai querer ler os primeiros parágrafos desta página , o que lhe dará uma idéia melhor do que você gosta.


2

Comece a ler / criar arquivos /proce /etc- você não fará nenhum dano simplesmente lendo os arquivos (exceto talvez estragar sua conexão terminal / ssh se você cria um arquivo que produz informações binárias), e grande parte é humana legível. ' sysctl -a' a produção também é uma mina de ouro. Quando você encontrar algo interessante, pesquise no Google ou manpara mais informações.

Você pode encontrar algumas informações reais sobre como o kernel e o SO funcionam dessa maneira.

Algumas dicas rápidas:

/ 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 # baseado em debian
/ etc / sysconfig # baseado em redhat

Dica rápida - alguma saída em / proc é separada por NUL e, portanto, é difícil de ler. Use 'tr' para converter os NULs em novas linhas, por exemplo:

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

2

Há muito o que aprender sobre Linux ou qualquer sistema operacional. Um tipo de aprendizado é o que eu chamo de aprendizado "aprofundado", que é descobrir como o kernel opera, quais suposições, como os vários bits conversam entre si e como lida com o hardware. Isso é coisa do kernel. Coisas assim são muito úteis para descobrir por que o sistema operacional foi quebrado exatamente dessa maneira. De fato, eu aprendi da mesma maneira que Karl Katzke . Eu quebrei coisas, e fiz melhor.

Para esse tipo de conhecimento, o Linux é bastante fácil. Está tudo documentado em muitos lugares. O mesmo não pode ser bastante disse para Windows, embora ainda haja muita doc lá fora para ele.

Depois, há o aprendizado do 'como se locomover no sistema operacional', que é onde o conhecimento de bash / sed / awk / regex e todas essas outras coisas são úteis. Porque o fato é que um sistema operacional é muito mais do que seu kernel atualmente. Você possui blobs de driver fornecidos pelo fornecedor. Você tem como essa distribuição específica empacota seus scripts de inicialização. Você possui vários mecanismos de correção / atualização. Você tem daemons do sistema que todos precisam, mas não são do kernel.

Esse é um espectro de conhecimento muito mais amplo que o simples kernel-fu. Varia de acordo com o distribuidor, portanto, como as coisas funcionam no Red Hat podem não funcionar da mesma forma no Slackware. Onde os arquivos são mantidos pode variar. Como pode o que eles escolheram para substituir 'vi'.

"Aprender Linux" é mais sobre aprender um ecossistema inteiro do que um sistema operacional simples.


1

Eu tinha um livro chamado "Programação Linux" que me ensinou mais sobre o SO do que qualquer livro "Aprenda Linux". Eu gostaria de ter o número do ISBN, mas foi incrível ... em parte porque foi inserido na programação "por que" s, não apenas no "como".

No geral, a maior parte do meu aprendizado foi honestamente quebrando e corrigindo. Aconteceu devagar, e ainda estou aprendendo coisas novas depois de 12 anos.

Definitivamente é um processo. A chave é ser muito, muito curioso. Quando você encontrar algo que não conhece, familiarize-se com ele. Busque conhecimento sobre como e por que funciona e aprenda as tecnologias subjacentes também.


1

Encontrei à deriva no Linux, FreeBSD, OpenBSD, Solaris e até várias outras distribuições Linux uma boa maneira de aprender muito sobre o Linux. Sobre como as coisas eram diferentes. Você aprende muito sobre sua cidade natal enquanto visita outros lugares do que sobre onde está.


1

Quando se trata de livros, eu gosto dos O'Reilly's, então "Essential System Administration Pocket Reference" e "Linux System Administration" são possíveis pontos de partida.

Minha cópia da Administração de rede TCP / IP é antiga e não a uso há algum tempo, mas achei muito útil entender melhor o que está acontecendo.


1

Você já está dando o primeiro passo usando o Linux como sua área de trabalho normal.

Se você quiser entender como todas as partes se juntam e são configuradas, sugiro executar o Gentoo . A partir de uma instalação stage3 regular, você precisa compilar seu próprio kernel, instalar todos os seus serviços (exceto o SSH que está pronto para uso), criar e configurar o X você mesmo, etc. muito maior entendimento de todos os bits que entram em uma instalação binária do linux. Também não faz mal que o Gentoo tenha a melhor documentação de qualquer Distro que eu tenha encontrado, ou que o portage seja um gerenciador de pacotes fantasticamente poderoso e flexível.



1

Alguém mencionou isso, e acho que é a coisa que mais me ajudou a usar vários sabores do Linux. Se você acha que tem um controle razoável no linux, comece a usar o open / net / freebsd.
Quanto ao porquê, a maioria das pessoas com quem trabalhei pode usar uma ou duas distros que não são tão diferentes da outra. Claro, a maioria deles conhecia aquelas distros como as costas da mão, mas ainda assim podiam se surpreender de maneira alarmante com certas coisas. Eu acho (para não iniciar uma guerra de chamas) que a maneira como os BSDs são montados é um pouco mais fácil de descobrir o "porquê" do modo como as coisas são feitas (além disso, espreitando nas listas de discussão sobre bsd, eles explicam que "por que" até a morte ) Tudo se resume a mudar seu ponto de vista; talvez nunca lhe ocorra perguntar por que certas coisas são do jeito que são até que alguém faça isso de uma maneira completamente diferente.


1

Esta postagem no Stackoverflow possui uma grande lista de recursos Unix / Linux, incluindo a maioria dos trabalhos canônicos sobre o assunto.

Outra maneira de aprender o que faz o Linux funcionar nos bastidores é trabalhar com o Linux From Scratch ( http://www.linuxfromscratch.org/ ). É essencialmente um conjunto de exercícios para instalar e configurar manualmente os vários componentes de um sistema Linux e é uma introdução muito boa para aprender as porcas e parafusos.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.