真正深入了解Linux的最佳资源是什么


10

多年来,我一直是Linux用户。最近,我每天都在使用它。我正在寻找媒体建议。商业书籍,免费信息,在线视频等,它们将帮助我更深入地了解操作系统。请提出您的建议。

Answers:


6

您可以在The Linux Documentation Project的guides页面中找到一些免费的指南。这是我从那里选择的简短列表,但是您应该滚动浏览页面以找到所需的内容。

  • Linux简介-动手指南;2008年6月
  • Linux上路;2005年11月
  • 《 Linux系统管理员指南》;2005年7月
  • 高级Bash脚本指南;2009年3月(是的,这也有助于理解linux)

您应该为感兴趣的主题查找特定的HOWTO另一个日期按HOWTO list排序

Linux评论初学者页面上有一些初学者

最后,这是一本可在线获得的小书-Nutshell中的Linux内核。其为2007年版本的PDF格式。

您应该仅将这些引用用作探针来开始自己搜索所需的东西。


谢谢大家的精彩回答。果壳中的内核是真正的宝石。这是我一直在寻找的书。
斯图尔特·伍德沃德

16

理解Linux的最好方法是严重破坏它,然后再对其进行修复。


嘻嘻...我喜欢 我喜欢打破事物。
埃文·安德森

1
-1这是个好建议,但不是资源。
用户名2009年

1
好答案。我只是从搞乱Linux和尝试东西中学到了很多Linux。搞砸之后,您会在互联网上寻找修复它的方法。由于“ Linux”的定义如此广泛,因此在这种情况下,它可能指的是整个操作系统和在其上运行的应用程序,而不仅仅是Linux内核,因此实际上并没有一个值得您推荐的好资源。
Kibbee

2
但是对于我们可以列出的每种人都有一些准则。我个人最喜欢的是从最困难的发行版开始,然后安装一个自动发行版。打破事物对于学习非常有用,但是首先要知道要打破什么才能获得特定的知识要困难得多。在大多数时候,打破事物是我们学习的东西,我们甚至都不知道我们必须学习。
航海家

1
Linux的免费而且易于修在大多数情况下绝对的资源。从损坏的系统开始并能够查看其所有部分的经验(与商业操作系统不同)是一种巨大的优势,而学习如何研究问题并感觉到解决问题的唯一方法就是做到这一点。
Karl Katzke 09年

10

我不确定,当您说“更深层次”时,是否要谈论更多地进入命令行(如果可以想象的话,有些人永远不会离开发行版附带的GUI),或者粗糙的低级内容,例如编写内核驱动程序。我将承担更多的前者而不是后者。

我建议您为使用Linux和在Linux上运行的应用程序想要做的事情设定合理的目标(运行Web服务器,将文件提供给Windows主机,提供DHCP,运行图形桌面等)。我坚信,只有在“做事”时才能学习。一旦有了目标,就可以追求它。这意味着要阅读手册页(很多手册页),“ HOWTO”文档,邮件列表清单,随机博客文章,当然还有要安装或编译以在您的程序上运行的各种程序随附的文档盒子。

我从事基于课堂的IT认证课程的教学已经有几年了,我相信我可以说有一定的权威性,我看到最进步的学生是那些正在做自己设计的疯狂项目并在座位上学习的学生。他们的裤子。

正如我之前说过的,手册页,“ HOWTO”文档(http://tldp.org/docs.html以及'net上的许多其他地方)和邮件列表档案是您的朋友。至少在现阶段,我不会讲任何有关内核内部的书籍。您不需要那种深入的知识就可以开始。

与其他人交谈。Server Fault看起来是个很好的建议的好地方。在这里提问,不要以为你看起来会很愚蠢。如果您可以和熟悉Linux的人打交道,那就去吧。(尽管我建议您尝试将观点与事实分开。在Linux社区中,关于做事的观点与其他社区中一样,存在着许多“圣战”,鉴于社区的性质,也许更多)

要真正真正了解Linux的Unix知识,您可以去一些旧的Unix特定的管理或参考手册。我会尽早地避免这些问题(至少直到您了解与Unix衍生的某些操作系统相比,Linux的“未采用的路径”的历史性质)。

不知道您的整体技能水平是什么,我会大声疾呼一本我自己或可能不会很高兴的书。我强烈建议使用“ TCP / IP图解说明”(http://www.amazon.com/Illustrated-Volumes-Addison-Wesley-Professional-Computing/dp/0201776316)。它根本不是特定于Linux的,但是您将要做许多处理TCP / IP的事情,以至于知道它“冷”就可以了。

简而言之,我想我想说的是没有一本或多本魔术书,也没有从“大师”那里学到的超级秘密视频,但是如果坚持下去并且不害怕,绝对可以学到什么使您的手变脏。


10

只有多年使用各个组件的经验才能使您深刻理解。话虽如此,如果您不是虚拟人并且拥有超过24小时的阅读能力,绝大多数Oreilly Press的书都写得很好并且很完美。:)

有一个名为Linux From Scratch的项目,它向您展示了如何从零开始构建linux发行版。您可能会发现做一次有教育意义。这将非常耗时,因为您需要从源代码编译所有内容,然后将其全部丢弃。

我发现LWN.net的内核页面对于在更高层次上了解事情在内核中的工作方式非常有用。


+1投票赞成LFS FTW
bandi

7

除了每天使用它(我认为这是一件很了不起的事情!)之外,我建议您开始考虑可以在Linux机器上为网络实现的服务。开始基于Linux服务进行设计,准备就绪后进行研究和实施。希望过程中会出现错误,这些经验将帮助您更深入地了解操作系统。


3
即使是从头开始构建linux也会引起人们的注意。试试这个:linuxfromscratch.org
卡特彼勒2009年

哇!绝对是+1!
l0c0b0x

+1用于从零开始构建Linux。我通过使用uclibc构建基于Linux的软盘在90年代后期安装了Linux引导过程,工具链和准嵌入式开发方面的知识。从内核“从头开始”引导任何Linux机器肯定会给您带来很多宝贵的经验。
埃文·安德森

5

要获得一般的Unix哲学和对命令行的出色介绍,可以参考Brian Kernighan和Rob Pike的经典著作《 Unix编程环境》

另外,IBM的DeveloperWorks网站的Linux部分有900篇文章。您可以浏览文章列表以查找感兴趣的主题。

最后,一旦您准备好了解细节,请查阅源代码。在kernel.org上获取您正在使用的内核版本的源代码(您的发行版还将包含您可以安装的内核源程序包),并签出Documentation目录。您会在内核内部和配置设置上找到很多参考资料。


4

学校。要真正了解Linux系统,您需要各种各样的计算机科学系统背景。编译器,计算机体系结构和操作系统。您需要一个指南,该指南可以告诉您重要的内容并纠正您对表格的任何误解。

了解了现代处理器的工作原理以及C编译器如何利用它们之后,您就可以阅读Minix 3之类的书

迷你x3

这是Linux内核作者Torvalds(轻松地)基于他的著作的最新版本。您将了解操作系统的基本组件和算法,以及如何精确地实现一个:文本附带将源代码几乎完整地打印到Minix中,以供参考和指导。检查中断处理程序,以全面了解系统如何工作以及控制流向何处。

而且,在嘲笑学校和计算机科学之前,请务必注意,要求操作系统完成的工作通常是NP完整的。因此,了解广泛的可用算法对于性能调整至关重要,因为不会有可证明的最佳算法。

除了内核之外,还有许多其他领域。因为Linux是开源的,所以这是一个学术金矿。像Debian和Ubuntu这样的系统使它们的源可用,这简直是简单的:

apt-get source package-name

许多上游程序还将它们的代码托管在版本控制中,因此您可以阅读程序源代码的最新版本,甚至可以查看它几年前的构建方式。


+1碰到提及“并且您需要一个指南,该指南可以向您展示重要内容并纠正您对表格的任何误解。” 确实,这是一个最好通过口头传统来理解的操作系统。
艾利·佩恩

3

当然,如果您的意思是内核

如果您想学习内核和API之上的系统,那么我将从学习老派开始Unix。也许尝试一些FreeBSD / OpenBSD / NetBSD / DragonflyBSD。一点Minix也可以提供帮助。然后转到SlackwareArchDebianGentoo。他们都是不同的(并且 带有 很大的 文件),并在这些diferencies,你的好奇心会让你寻找它为什么是这样,你将获得很多技术业,贸易,政治和历史知识。

另一种方法是在/etc旧的Unix手册(当然还有Google)中进行挖掘。

从头开始使用LinuxlearningGNU / Linux的一种好方法。


3

刚开始建立自己的发行版。我已经为您自己完成了,您知道吗?在4个月后,我花了更多的时间来了解Linux的内部知识,而不是周围使用Linux超过10年的人。


3

在任何* nix环境中学习都是一种整体方法。它涉及一系列的顿悟和经验。这不是偶然的。它是其设计的故意副产品,因为原始环境是针对计算机程序员而设计的。这也是它的最大缺点,因为重点是技术方面而不是用户体验。它是“具有坚固框架的房屋,即使不使用也可以使用100年,但是其壁板是随意的,油漆显然被忽略了”。

将其与Windows进行对比,Windows是此哲学的镜像-做一些可以为用户带来切实体验的事情,但可以使他们免受事物内部的影响。它是“具有漂亮装饰和油漆的房子,但基础已经经过多次解决,已经经过多次建造”。

为了真正开始学习,我建议您构建具有特定于您的硬件的选项的自定义内核映像,并使用所需的选项进行安装。您应该完全期望进入此操作后,某个地方的某些东西会破裂,并且您可能能够也可能无法将其恢复为“正常”状态。这是该学习过程的正常部分,您应该采取措施,好像事情会破裂(即不要将其作为主要安装,使用单独的驱动器或虚拟机之类的东西)。

我已经对一个类似的问题做了回答,为了减少输入,我将在这里进行交叉链接。您还将需要阅读本页的前几段,这将使您对所要从事的工作有更好的感觉


2

开始读取文件/为其添加文件,/proc并且/etc-仅读取文件就不会造成任何损坏(如果您保存会产生二进制信息的文件,则可能会损坏终端/ ssh连接)可读的。“ sysctl -a”输出也是一个金矿。当您发现有趣的东西时,请使用google或man有关它的更多信息。

您可以找到有关内核和操作系统如何工作的真正瑰宝。

一些快速提示:

/ etc / inittab
/etc/rcS.d
/etc/rc2.d
/ etc / crontab
/ proc / 1 /环境
/ proc /文件系统
/ proc / meminfo
/ proc / cpuinfo
sysctl -a | grep vm.swappiness
/ etc / default#基于debian
/ etc / sysconfig#基于Redhat的

快速提示-/ proc中的某些输出是NUL分隔的,因此很难阅读。使用“ tr”将NUL转换为换行符,例如:

须藤猫/ proc / 1 / environ | tr'\ 0','\ n'

2

关于Linux或任何操作系统,有很多知识要学习。一种学习是所谓的“深度”学习,它是要了解内核的运行方式,其做出的假设,各个位之间如何相互通信以及如何处理硬件。那是内核的东西。这样的东西对于弄清操作系统为何以这种方式崩溃非常有用。实际上,我是和卡尔·卡茨克(Karl Katzke)一样学习的。我把东西弄碎了,变得更好了。

对于这种知识,Linux非常简单。所有地方都有记录。尽管Windows上仍然有很多文档,但对于Windows来说还不能完全相同

然后是“在操作系统中变通”学习,这是对bash / sed / awk / regex以及其他所有知识的了解。因为事实是,如今,操作系统已远远超过其内核。您有供应商提供的驱动程序Blob。您具有此特定发行版如何打包其启动脚本。您有各种修补程序/更新机制。您拥有每个人都需要的系统守护进程,但不是内核。

这比简单的核函数更广泛的知识范围。它因发行商而异,因此在Red Hat上的工作方式在Slackware上可能会不同。文件保存的位置可能会有所不同。他们可以选择替换“ vi”。

“学习Linux”更多地是关于学习整个生态系统,而不是简单的操作系统。


1

我有一本名为“ Linux编程”的书,比任何一本“学习Linux”书都教给我更多有关操作系统的知识。我希望我拥有ISBN号,但这真是太了不起了。部分原因是它进入了编程的“为什么”,而不仅仅是“如何”。

总的来说,我的大部分学习都是通过打破并修复它来进行的。它发生的很慢,而且12年后我仍在学习新事物。

这绝对是一个过程。关键是要非常非常好奇。当您遇到不熟悉的事物时,请熟悉它。寻求有关如何以及为什么进行滴答的知识,并学习基础技术。


1

我发现在Linux,FreeBSD,OpenBSD,Solaris,甚至其他各种Linux发行版中都可以找到很多学习Linux的好方法。关于它如何做事不同。在访问其他地方时,您对自己的家乡的了解远比对自己的所在地要了解的多。


1

在书籍方面,我喜欢O'Reilly的书籍,因此“基本系统管理口袋参考”和“ Linux系统管理”是可能的起点。

我的《TCP / IP网络管理》是一个较旧的副本,我已经有一段时间没有使用它了,但是我发现它对于深入了解正在发生的事情非常有用。


1

通过使用Linux作为常规桌面,您已经迈出了第一步。

如果您想了解所有部件如何连接在一起并进行配置,建议您运行Gentoo。在常规的stage3安装中,您必须编译自己的内核,安装所有服务(开箱即用的SSH除外),自己构建和配置X,等等。当您这样做时,最终得到一个对二进制Linux安装中的所有内容有更多的了解。Gentoo拥有我发现的所有Distro中最好的文档,或者Portage是一个功能强大且灵活的软件包管理器,这也没有什么坏处。



1

有人提到了这一点,我认为这是使用各种Linux风格对我最大的帮助。如果您觉得在Linux上有合理的处理方法,请开始使用open / net / freebsd。
至于为什么,与我合作过的大多数Linux人员可能使用一个或两个Linux发行版,它们彼此之间并没有什么不同。当然,他们中的大多数人都知道像手背一样的发行版,但是他们仍然会对某些事情感到震惊。我认为(不要发动火焰战争)BSD的组装方式更容易发现事情的“原因”(此外,潜伏在bsd邮件列表中,他们解释说“为什​​么”会死掉) )。归结于改变您的观点,直到有人以完全不同的方式进行操作,您才可能问自己为什么某些事情是这样的。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.