我一直是一个Linux用户多年。 最近我每天都在使用它。 我正在寻找媒体的build议; 商业书籍,免费信息,在线video等,这将帮助我更深入地了解操作系统。 你的build议请。
您将在Linux文档项目的指南页面上find几个免费指南。 这是我从那里select的简短列表,但是您应该滚动浏览页面以find所需内容。
你应该寻找你感兴趣的主题的具体HOWTO 。 另一个datesortingHOWTO列表 。
在Linux评论初学者页面有一些初学者 。
最后,这是一本可在线阅读的小书 – Linux Kernel in Nutshell 。 它在2007年版的PDF格式。
你只能把这些参考文献作为一个触angular来开始你自己search你需要的东西。
理解Linux的最好方法是严重破坏它,然后修复它。
我不确定,当你说“更深层次”时,如果你正在谈论进一步进入命令行(有些人不会离开发行版附带的GUI,如果你能想象的话),或者真的像编写内核驱动程序这样坚韧不拔的低层次的东西。 我会比后者承担更多的前者。
我build议你为使用Linux和运行在Linux上的应用程序(运行Web服务器,向Windows主机提供文件,为DHCP服务,运行graphics桌面等)设置合理的目标。 我坚信你只有在你“做”的时候才能学会。 一旦你有一个目标,追求它。 这意味着阅读手册页(大量的手册页),“HOWTO”文档,邮件列表存档,随机博客post,当然还有您正在安装或编译运行的各种程序随附的文档框。
经过几年的教学资讯科技authentication课程的学习,我相信我可以有一定程度的权威认为,我所看到的学生进步最快的是那些正在做自己devise的疯狂项目,他们的裤子。
正如我之前所说的,手册页,“HOWTO”文档( http://tldp.org/docs.html以及网上许多其他地方)和邮件列表存档都是你的朋友。 至less在这个阶段,我会避开任何谈论内核内核的书籍。 你不需要那么深入的知识就可以开始。
跟其他人交谈。 服务器故障看起来像是一个很好的地方得到好的build议。 在这里提出问题,不要认为你会这么做愚蠢。 如果你能和熟悉Linux的人一起“面对面”,就去做吧。 (尽pipe我build议你尝试从事实中分离出一些观点,但是在Linux社区中有许多“神圣的战争”,就像其他社区那样,如何做事情有不同的看法 – 也许更多的是考虑到社区的性质。)
为了深入了解Linux的Unix遗产,你可以去找一些比较老的特定于Unix的pipe理或参考手册。 我很早就摆脱了这些(至less在你能够欣赏Linux的“未采取的path”的历史性质的情况下,与一些Unix派生的操作系统相比)。
不知道你的整体技能水平是什么,我会对一本不论我是否可能成功的书大喊大叫。 我强烈推荐“TCP / IP Illustrated”( http://www.amazon.com/Illustrated-Volumes-Addison-Wesley-Professional-Computing/dp/0201776316 )。 这不是Linux特有的,但是你会做很多与TCP / IP有关的事情,知道它是“冷”的是一件容易的事情。
总而言之,我想说的是,没有魔法书或者书籍,没有“大师”学习的超级秘密录像,但是如果坚持下去的话,绝对没有限制,让你的手变脏
只有多年玩单个组件的经验才能给你一个深刻的理解。 话虽如此,如果你不是一个假人,并且超过24小时,绝大多数奥利利出版社的书籍都写得很好,而且是完美的。 🙂
有一个叫做Linux From Scratch的项目,它向你展示了如何从无到有build立一个Linux发行版。 你可能会发现一次教育。 这将是非常耗时的,因为您需要编译源代码中的所有内容,并且最终将全部丢弃。
我发现LWN.net的内核页面对于跟踪内核中的高层工作是非常宝贵的。
除了每天使用它(我认为这是一件好事!),我build议你开始考虑可以在Linux机器上为你的networking实现的服务。 开始基于Linux服务进行devise,一旦你准备就绪,研究和实施。 在这个过程中会有希望的错误,这些经验将帮助您更深入地了解操作系统。
对于一般的Unix哲学和对命令行的精彩介绍,有Brian Kernighan和Rob Pike的经典Unix编程环境 。
另外,IBM的DeveloperWorks网站在Linux部分有超过900篇文章。 您可以浏览文章列表,了解您感兴趣的主题。
最后,一旦你准备好进入本质,去源头。 获取你在kernel.org上使用的内核版本的源代码(你的发行版也会包含你可以安装的内核源代码包),并查看Documentation目录。 您将在内核内核和configuration设置中find大量的参考资料。
学校。 要真正了解Linux系统,您需要广泛的计算机科学系统背景。 编译器,计算机体系结构和操作系统。 而且你需要一位能向你展示什么是重要的指南,并纠正你有任何forms的误解。
一旦你了解了现代处理器的工作原理以及C编译器如何利用它们,你就可以深入Minix 3这样的书籍:

这是Linux内核作者Torvalds(松散地)基于他的工作的最新版本。 您将了解操作系统的基本组件和algorithm,以及如何实现这一function:文本附带了几乎完整的源代码打印到Minix以供参考和指导。 查看中断处理程序以全面了解系统如何工作以及控制stream在哪里。
在嘲笑学校和计算机科学之前,需要注意的是操作系统要求的作业通常是NP完成的。 因此,理解各种可用algorithm对于性能调优至关重要,因为不会有可certificate的最佳algorithm。
除了内核之外,还有其他一些领域。 因为Linux是开源的,这是一个学术金矿。 像Debian和Ubuntu这样的系统使得它们的源代码可用,而且它很简单:
apt-get source package-name
许多上游用户也在版本控制中托pipe他们的代码,所以您可以阅读程序源代码的最新版本,甚至可以看到它是如何在几年前build立的。
来源 。
当然,如果你指的是内核 。
如果你想学习内核和API以上的系统,我会开始学习旧的Unix 。 也许试试一下FreeBSD / OpenBSD / NetBSD / DragonflyBSD 。 一个小Minix也可以帮忙。 然后转到Slackware , Arch , Debian和Gentoo 。 它们都是不同的( 并且 有 很好的 文档 ),在这些差异中,你的好奇心会让你寻找为什么会这样,你将获得大量的技术,商业,政治和历史知识。
另一种方法是在/etc ,旧的Unix手册,当然还有Google 。
从头开始 learning Linux是learning GNU / Linux的好方法。
刚开始build立自己的发行版。 我已经为你自己做了,你知道吗? 4个月之后,我花了很多时间了解Linux内部的知识,而不是那些使用Linux 10多年的人。
在任何* nix环境中学习是一个整体的方法。 它涉及到一系列的顿悟和经验 。 这不是偶然的。 它的devise是故意的副产品,因为原来的环境是围绕着计算机程序员devise的。 这也是它最大的缺点,因为重点是技术方面,而不是用户体验。 这是一个坚固的框架,将持续100年没有服务,但它的壁板是随意的,油漆显然被忽视“。
与Windows相反,Windows是这个哲学的镜像 – 做一些让用户有实际经验的东西,但是保护他们免受事物的内在运作。 这是“一个美丽的装饰和油漆的房子,但多次build立了多个工作周围的基础”。
要真正开始学习,我会build议构build具有特定于您的硬件的选项的自定义内核映像,并使用所需的选项安装它们。 你应该充分期待这样的事情,某个地方会突破,你可能会或可能无法把事情退回到“正常”。 这是这个学习过程的一个正常的部分,你应该这样做,如果事情会中断(即不要使这是一个主要的安装,使用一个单独的驱动器或虚拟机或其他…)
我已经在类似的问题上做了一个答案,所以为了减less打字,我会在这里交织 。 您还需要阅读本页面的前几个段落,这会给您一个更好的感受 。
开始阅读/在/proc和/etc文件 – 你不会通过简单地阅读文件(如果你捕捉一个产生二进制信息的文件,可能会搞砸你的terminal/ ssh连接)它是人类可读的。 ' sysctl -a '输出也是一个金矿。 当你发现一些有趣的东西,谷歌或man更多的信息。
你可以find关于内核和操作系统如何工作的一些真正的gem。
几个快速指针:
/ etc / inittab中 /etc/rcS.d /etc/rc2.d中 / etc / crontab中 的/ proc / 1 / ENVIRON 的/ proc /文件系统 的/ proc / meminfo中 的/ proc / cpuinfo中 sysctl -a | grep vm.swappiness / etc / default#基于debian的 / etc / sysconfig#redhat-based
快速提示 – / proc中的一些输出是NUL分隔的,因此很难阅读。 使用'tr'将NUL转换为换行符,例如:
sudo cat / proc / 1 / environ | tr'\ 0','\ n'
有关Linux或任何操作系统的知识还有很多。 一种学习就是我所谓的“深入”学习,它是发现内核是如何运作的,它做了什么假设,各个比特如何相互交stream以及如何处理硬件。 这是内核的东西。 像这样的东西是非常有用的,弄清楚为什么操作系统就这样打破。 事实上,我也像Karl Katzke一样学习了。 我打破了东西,并做得更好。
对于这种知识,Linux很容易。 这些都logging在很多地方。 Windows也是如此,尽pipe这里仍然有很多文档。
然后是“在操作系统”学习,这是知识的bash / sed / awk /正则expression式和所有其他的东西派上用场。 因为事实是,现在的操作系统比内核要多得多。 您有供应商提供的驱动程序blob。 你有这个特定的发行版如何打包它的启动脚本。 你有各种补丁/更新机制。 你有系统守护进程,每个人都需要,但不是内核。
这是一个比简单的kernel-fu更广泛的知识范围。 它因经销商而异,所以Red Hat在Slackware上的工作方式可能不一样。 文件的保存位置可能有所不同。 他们可以select什么来取代“六”。
“学习Linux”更多的是学习整个生态系统,而不是简单的操作系统。
我有一本名为“Linux编程”的书,教给我更多关于操作系统的知识,而不是任何“学习Linux”书籍。 我希望自己有ISBN号码,但这真是太神奇了。部分原因是因为它进入了“为什么”的编程,而不仅仅是“如何”。
总的来说,我的大部分学习是通过打破并修复它。 发生的很慢,12年后我还在学习新东西。
这绝对是一个过程。 关键是非常好奇。 当你遇到你不熟悉的东西时,要熟悉它。 寻找关于如何以及为什么蜱的知识,并且学习底层技术。
我发现Linux,FreeBSD,OpenBSD,Solaris,甚至其他各种Linux发行版都是学习Linux的好方法。 关于它如何做不同的事情。 除了你了解自己在哪里之外,你还可以在你的家乡学习很多东西。
说到书籍,我喜欢O'Reilly's,所以“基本系统pipe理袖珍参考”和“Linux系统pipe理”是可能的出发点。
我的TCP / IPnetworkingpipe理副本是一个较旧的版本,我暂时还没有使用它,但是我发现它对于更深入地了解发生的事情非常有用。
通过使用Linux作为您的常规桌面,您已经迈出了第一步。
如果你想了解所有的部分是如何挂接在一起的,我会build议运行Gentoo 。 从普通的stage3安装,你必须编译你自己的内核,安装所有的服务(SSH除外),自己构build和configurationX等等。当你这样做的时候,你最终会得到一个更深入了解进入二进制linux安装的所有位。 Gentoo拥有我发现的任何Distro的最佳文档,或者说Portage是一个非常强大和灵活的软件包pipe理器,
我强烈build议这是“必读”:
Unix编程环境 – Brian W. Kernighan / Rob Pike
ISBN 0-13-937681-X
http://www.amazon.com/Unix-Programming-Environment-Prentice-Hall-Software/dp/013937681X
其他人提到了这一点,我认为它是使用各种linux风格最有帮助的东西。 如果你觉得你有一个合理的Linux处理,开始使用open / net / freebsd。
至于为什么,我曾经使用过的大多数linux用户可能会使用一两个不同于其他版本的linux发行版。 当然,他们中的大多数人都知道他们手上的这些发行版,但他们仍然可以在某些事情的惊人基础上感到惊讶。 我认为(不要开始一场火焰战争),BSD的组装方式更容易发现事情的“原因”(另外,潜伏在bsd邮件列表中,他们解释了“为什么”) )。 这可以归结为改变你的观点,你可能永远不会问,为什么某些事情是这样的,直到有人用完全不同的方式来完成。
本文在Stackoverflow上有大量的Unix / Linux资源列表,其中包括大部分关于这个主题的规范性着作。
学习Linux幕后花絮的另一种方法是使用Linux From Scratch( http://www.linuxfromscratch.org/ )。 这本质上是一套手动安装和configurationlinux系统的各种组件的练习,也是一个很好的介绍。