Что является лучшим ресурсом для глубокого понимания Linux

10

Я был пользователем Linux в течение многих лет. Недавно я использовал его ежедневно. Я ищу предложения для СМИ; коммерческие книги, бесплатная информация, онлайн-видео и т. д., которые помогут мне понять ОС на более глубоком уровне. Ваши предложения, пожалуйста.

Стюарт Вудворд
источник

Ответы:

6

Вы найдете несколько бесплатных руководств на Проекте документации Linux, страница руководств . Это короткий список, который я выбираю, но вы должны прокрутить страницу, чтобы найти то, что вам нужно.

  • Введение в Linux - практическое руководство; Июнь 2008
  • Linux на дороге; Ноя 2005
  • Руководство системного администратора Linux; Июль 2005
  • Расширенный Bash-Scripting Guide; Март 2009 (да, это тоже хорошо для понимания linux)

Вы должны искать конкретные HOWTO по темам, которые вас интересуют. Другая дата отсортировала список HOWTO .

На странице начинающих обзоров Linux есть несколько стартеров .

Наконец, это небольшая книга, доступная онлайн - Linux Kernel in Nutshell . Это в формате PDF издания 2007 года.

Вы должны использовать эти ссылки только для того, чтобы начать поиск того, что вам нужно.

Nik
источник
Спасибо всем за отличные ответы. Ядро в двух словах - настоящая жемчужина. Это книга, которую я искал.
Стюарт Вудворд
16

Лучший способ понять Linux - это плохо его сломать, а потом исправить.

Карл Кацке
источник
Хи-хи ... Мне это нравится. Я люблю ломать вещи.
Эван Андерсон
1
-1 Это хороший совет, но это не ресурс.
имя пользователя
1
отличный ответ. Я так много узнал о Linux, просто покопавшись в нем и попробовав что-нибудь. После того, как вы все испортили, вы ищите в интернете способы исправить это. Поскольку «Linux» является настолько широким термином, что в данном случае, вероятно, относится больше ко всей операционной системе и приложениям, которые на ней работают, а не только к ядру Linux, на самом деле нет ни одного хорошего ресурса, который вы могли бы порекомендовать.
Кибби
2
Но есть некоторые рекомендации для каждого человека, которого мы могли бы перечислить. Мой личный фаворит - начать с самого тяжелого дистрибутива, а затем установить автоматический дистрибутив. Разрывать вещи - это хорошо для обучения, но знать, что сломать в первую очередь, чтобы получить конкретные знания, гораздо сложнее. Большую часть времени, ломая то, что мы изучаем, мы даже не знали, что должны были учиться.
Вояджер
1
Linux, являющийся бесплатным и легко ремонтируемым в большинстве случаев , безусловно, является ресурсом. Опыт начала работы со сломанной системой и способности видеть все ее части (в отличие от коммерческой ОС) - огромная сила, и единственный способ научиться исследовать проблему и чувствовать, как ее решить, - это сделать это.
Карл Кацке
10

Я не уверен, когда вы говорите «более глубокий уровень», если вы говорите о получении большего в командной строке (некоторые люди никогда не покидают GUI, который входит в их дистрибутив, если вы можете себе это представить), или с действительно мелкие вещи низкого уровня, такие как написание драйверов ядра. Я собираюсь предположить больше первого, чем второго.

Я бы посоветовал вам установить разумные цели для вещей, которые вы хотели бы сделать с помощью Linux и приложений, работающих на Linux (запуск веб-сервера, передача файлов на хосты Windows, обслуживание DHCP, запуск графического рабочего стола и т. Д.). Я твердо верю, что ты учишься только тогда, когда делаешь. Как только у вас есть цель, преследуйте ее. Это означает чтение справочных страниц (много-много справочных страниц), документацию "HOWTO", архивы списков рассылки, случайные записи в блогах и, конечно же, документацию, которая поставляется с различными программами, которые вы устанавливаете или компилируете для запуска на своем коробки.

Пройдя несколько лет на курсах по сертификации в классе, я уверен, что могу с некоторой долей уверенности сказать, что те ученики, которых я видел, добились наибольшего прогресса - это те, кто делал сумасшедшие проекты собственного дизайна и учился на местах. их штаны.

Как я уже говорил, справочные страницы, документация "HOWTO" ( http://tldp.org/docs.html и во многих других местах в сети) и архивы списков рассылки - ваши друзья. Я бы держался подальше от любых книг, в которых говорится о внутренностях ядра, по крайней мере, на данном этапе. Вам не нужны такие глубокие знания, чтобы начать.

Поговорите с другими людьми. Похоже, сбой сервера оказался отличным местом для получения хороших советов. Задавайте вопросы здесь, и не думайте, что при этом вы будете выглядеть глупо. Если вы можете пообщаться с людьми, знакомыми с Linux, сделайте это. (Хотя я бы порекомендовал вам попробовать и отделить мнение от факта. В сообществе Linux столько же «священных войн» за разные мнения о том, как действовать, как и в любом другом сообществе - возможно, даже больше, учитывая природу сообщества. .)

Чтобы получить действительно «глубокие» знания о наследии Unix от Linux, вы можете обратиться к некоторым старым специфическим для Unix административным или справочным руководствам. Я бы избежал этого на раннем этапе (по крайней мере, до тех пор, пока вы не сможете оценить историческую природу «путей, которые не пройдены» в Linux по сравнению с некоторыми из операционных систем Unix-производных).

Не зная, каков ваш общий уровень мастерства, я выкрикиваю книгу, которая мне или не может быть ужасной. Я настоятельно рекомендую «Иллюстрированный TCP / IP» ( http://www.amazon.com/Illustrated-Volumes-Addison-Wesley-Professional-Computing/dp/0201776316 ). Это совсем не специфично для Linux, но вы будете делать так много вещей, связанных с TCP / IP, что знать, что это «холодно», не сложно.

Короче говоря, я говорю, что нет волшебной книги или книг, нет сверхсекретных видео, из которых учились «мастера», но абсолютно нет предела тому, чему вы можете научиться, если будете придерживаться этого и не будете бояться пачкать руки.

Эван Андерсон
источник
10

Только многолетний опыт работы с отдельными компонентами даст вам глубокое понимание. Сказав это, подавляющее большинство книг Oreilly Press действительно хорошо написаны и безупречны, если вы не дурачок и у вас более 24 часов. :)

Существует проект под названием Linux From Scratch , который показывает, как создать дистрибутив linux из ничего. Вы можете найти учебное занятие один раз. Это займет много времени, так как вам нужно скомпилировать все из исходного кода, и вы все выбросите в конце.

Я считаю, что страница ядра LWN.net неоценима для того, чтобы следить за тем, как все работает в ядре на высоком уровне.

Дэвид Пашли
источник
+1 проголосовали LFS FTW
Банди
7

Помимо ежедневного использования (что я считаю замечательным!), Я рекомендую вам начать думать о сервисах, которые могут быть реализованы для вашей сети на компьютере с Linux. Начните проектировать его на основе сервисов Linux, исследуйте и внедрите его, как только будете готовы. Будем надеяться, что в процессе будут ошибки, и этот опыт поможет вам понять ОС на более глубоком уровне.

l0c0b0x
источник
3
Даже создание Linux с нуля имеет смысл. Попробуйте это: linuxfromscratch.org
Caterpillar
Вот это да! Определенно +1 на это!
l0c0b0x
+1 за сборку Linux с нуля. Я изучил процесс загрузки Linux, наборы инструментов и квази-встраиваемые разработки с использованием установок Linux на основе uclibc для создания дискет еще в конце 90-х. Начальная загрузка любой Linux-машины с самого ядра «с нуля», безусловно, даст вам большой опыт.
Эван Андерсон
5

Для общей философии Unix и отличного введения в командную строку, есть классическая среда программирования Unix Брайана Кернигана и Роба Пайка .

Кроме того, на веб-сайте IBM DeveloperWorks есть более 900 статей в разделе Linux. Вы можете просмотреть список статей по темам, которые вам интересны.

Наконец, как только вы будете готовы войти в суету, перейдите к источнику. Загрузите исходный код для версии ядра, которую вы используете, на kernel.org (в вашем дистрибутиве также будут установлены пакеты с исходным кодом ядра, которые вы можете установить) и посмотрите каталог Documentation. Вы найдете много справочных материалов по внутренним компонентам ядра и настройкам конфигурации.

Бен Уильямс
источник
4

Школа. Чтобы по-настоящему понять систему Linux, вам необходим широкий спектр знаний в области компьютерных наук. Компиляторы, компьютерная архитектура и операционные системы. И вам нужен гид, который может показать вам, что важно, и исправить любые недоразумения, которые у вас есть или сформировать.

Как только вы поймете, как работают современные процессоры, и как их используют компиляторы C, вы можете погрузиться в такие книги, как Minix 3:

Minix3

Это последняя версия книги, на которой Торвальдс, автор ядра Linux, (слабо) основал свою работу. Вы узнаете об основных компонентах и ​​алгоритмах операционной системы и о том, как именно их реализовать: текст поставляется с почти полной печатью исходного кода Minix для справочных и учебных целей. Посмотрите обработчик прерываний, чтобы получить полное представление о том, как работает система и где происходит управление.

И прежде чем осмеять школьное образование и информатику, важно заметить, что операционные системы, которые просят выполнить, обычно являются NP-завершенными. Поэтому понимание широкого спектра доступных алгоритмов имеет решающее значение для настройки производительности, поскольку не будет доказуемо оптимального алгоритма.

Помимо ядра, есть ряд других областей. Поскольку Linux является открытым исходным кодом, это академическая золотая жила. Такие системы, как Debian и Ubuntu, делают свой источник доступным, и он очень прост:

apt-get source package-name

Многие апстримы также размещают свой код в системе контроля версий, поэтому вы можете прочитать самую последнюю версию исходного кода программы или даже посмотреть, как она была построена много лет назад.

jldugger
источник
+1 удар за упоминание «И вам нужен гид, который сможет показать вам, что важно, и исправить любые недоразумения, которые у вас есть или сформировать». Это действительно ОС, которая лучше всего понимается устной традицией (к сожалению).
Эйвери Пейн
3

Источник .

Это, конечно, если вы имеете в виду ядро .

Если вы пытаетесь изучить систему выше ядра и API, я бы начал с изучения старой школы Unix. Может быть, попробуйте FreeBSD / OpenBSD / NetBSD / DragonflyBSD . Небольшой Миникс тоже может помочь. Затем перейдите в Slackware , Arch , Debian и Gentoo . Все они разные ( и поставляются с отличной документацией ), и в этих различиях ваше любопытство заставит вас искать, почему это так, вы получите много технических, коммерческих, политических и исторических знаний.

Другим способом было бы пойти покопаться /etc, старые руководства по Unix и, конечно, Google .

Linux с нуля - это отличный способ learningGNU / Linux.

мореплаватель
источник
3

Просто начните создавать свой собственный дистрибутив. Я сделал это для себя, и знаете что? После 4 месяцев, которые я потратил на это, я знаю о внутренностях Linux больше, чем окружающие меня парни, которые используют Linux более 10 лет.

Александр Громницкий
источник
3

Обучение в любой среде * nix - это целостный подход. Это включает в себя серию прозрений и опытов . Это не случайно. Это намеренный побочный продукт его дизайна, так как исходная среда была разработана для программистов и для них. Это также является его самым большим недостатком, поскольку основное внимание уделяется техническим аспектам, а не опыту пользователя. Это «дом с прочным каркасом, который прослужит 100 лет без обслуживания, но его сайдинг беспорядочный, а краской явно пренебрегают».

Сравните это с Windows, которая является зеркальным отражением этой философии - делайте то, что дает пользователю ощутимый опыт, но защищает его от внутренней работы вещей. Это «дом с красивой отделкой и краской, но фундамент, который был застроен несколько раз с несколькими обходными путями».

Чтобы действительно начать обучение, я бы предложил создать собственные образы ядра, которые имеют параметры, специфичные для вашего оборудования, и установить их с необходимыми параметрами. Вы должны полностью ожидать, что вдаваясь в это, что-то где-то сломается, и вы можете или не сможете вернуть вещи к «нормальному». Это нормальная часть этого процесса обучения, и вы должны подходить к этому так, как будто что-то сломается (т.е. не делайте эту установку первичной, используйте отдельный диск или виртуальную машину или что-то в этом роде ...)

Я сделал ответ на похожий вопрос , поэтому, чтобы уменьшить количество набранных слов, я сшью его здесь . Вы также захотите прочитать первые несколько параграфов на этой странице , которые помогут вам лучше понять, что вы ищете.

Эйвери Пэйн
источник
2

Начать чтение / cat'ing файлов /procи /etc- вы не будете делать какие - либо повреждения, просто читая файлы (сохранить , может быть , прищурив свой терминал / SSH-соединение , если кот файл , который производит двоичную информацию), и большая часть его является человек удобочитаемый. « sysctl -aВыход также золотой рудник. Когда вы найдете что-то интересное, Google или manдля получения дополнительной информации об этом.

Вы можете найти некоторые жемчужины о том, как ядро ​​и ОС работают таким образом.

Несколько быстрых указателей:

/ И т.д. / inittab
/etc/rcS.d
/etc/rc2.d
/ И т.д. / кронтаб
/ 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 / environment | tr '\ 0', '\ n'
Майк Паунтни
источник
2

Существует много узнать о Linux или любой операционной системе. Одним из видов обучения является то, что я называю «углубленным» обучением, которое заключается в том, чтобы выяснить, как работает ядро, какие допущения оно делает, как различные биты взаимодействуют друг с другом и как оно работает с аппаратным обеспечением. Это ядро. Подобные вещи очень полезны для выяснения, почему операционная система сломалась именно таким образом. На самом деле, я узнал это так же, как Карл Кацке . Я сломал вещи, и сделал это лучше.

Для такого рода знаний Linux довольно прост. Это все задокументировано во многих местах. То же самое не может быть достаточно сказать Windows, хотя есть еще много документ там для него.

Затем идет изучение «обхода в ОС», где пригодятся знания bash / sed / awk / regex и всего остального. Дело в том, что в наши дни операционная система намного больше, чем ее ядро. У вас есть предоставленные поставщиком капли драйверов. У вас есть, как этот конкретный дистрибутив упаковывает свои скрипты запуска. У вас есть различные механизмы исправления / обновления. У вас есть системные демоны, которые нужны всем, но не ядро.

Это гораздо более широкий спектр знаний, чем просто ядро-фу. Это зависит от дистрибьютора, поэтому в Red Hat может работать не так, как в Slackware. Где хранятся файлы, может отличаться. Как и то, что они выбрали, чтобы заменить «ви».

«Изучение Linux» - это больше изучение всей экосистемы, чем простая операционная система.

sysadmin1138
источник
1

У меня была книга под названием «Программирование Linux», которая научила меня больше об ОС, чем любая книга «Изучаем Linux». Хотелось бы, чтобы у меня был номер ISBN, но это было удивительно ... отчасти потому, что это вошло в программирование "почему", а не только "как".

В целом, большая часть моего обучения была честной, когда я ее ломал и исправлял. Это происходило медленно, и я все еще изучаю новые вещи после 12 лет.

Это определенно процесс. Ключ должен быть очень, очень любопытным. Когда вы сталкиваетесь с чем-то, что вам незнакомо, знакомьтесь с этим. Ищите знания о том, как и почему это происходит, и изучайте базовые технологии.

Мэтт Симмонс
источник
1

Я обнаружил, что дрейф через Linux, FreeBSD, OpenBSD, Solaris, а затем даже различные другие дистрибутивы Linux - хороший способ узнать много нового о Linux. О том, как все по-другому. Вы узнаете столько же о своем родном городе, посещая другие места, чем узнаете о том, где вы находитесь.

Кайл Ходжсон
источник
1

Что касается книг, мне нравятся книги О'Рейли, так что «Справочник по основам системного администрирования» и «Системное администрирование Linux» являются возможными отправными точками.

Моя копия администрирования сети TCP / IP является более старой, и я давно ею не пользовался, но я нашел ее очень полезной, чтобы получить более глубокое понимание того, что происходит.

Опека - Восстановите Монику
источник
1

Вы уже делаете первый шаг, используя Linux в качестве обычного рабочего стола.

Если вы хотите понять, как все части соединяются и настраиваются, я бы предложил запустить Gentoo . Начиная с обычной стадии 3, вы должны скомпилировать свое собственное ядро, установить все ваши службы (кроме SSH, который есть в комплекте), собрать и настроить X самостоятельно и т. Д. Когда вы делаете это, вы получаете гораздо большее понимание всех битов, которые входят в бинарную установку Linux. Также не повредит, что Gentoo имеет лучшую документацию из всех дистрибутивов, которые я нашел, или что portage - фантастически мощный и гибкий менеджер пакетов.

змееподобный
источник
1

Кто-то еще упомянул об этом, и я думаю, что это то, что мне больше всего помогло с использованием различных вкусов Linux. Если вы чувствуете, что имеете разумный подход к Linux, начните использовать open / net / freebsd.
Что касается того, почему большинство пользователей Linux, с которыми я работал, могут использовать один или два дистрибутива Linux, которые ничем не отличаются от других. Конечно, большинство из них знали эти дистрибутивы, как тыльную сторону их рук, но они все равно могли удивляться некоторым вещам. Я думаю (не для того, чтобы начать войну пламенем), что способ сборки BSD немного легче понять, «почему», как все это делается (плюс, скрываясь в списках рассылки BSD, они объясняют, «почему» до смерти). ). Это сводится к изменению вашей точки зрения, вам может даже не прийти в голову спросить, почему некоторые вещи такие, какие они есть, пока кто-то не сделает это совершенно по-другому.

DF
источник
1

Эта публикация в Stackoverflow содержит большой список ресурсов Unix / Linux, включая большинство канонических работ на эту тему.

Еще один способ узнать, что делает Linux закулисным, - это работать с Linux From Scratch ( http://www.linuxfromscratch.org/ ). По сути, это набор упражнений по ручной установке и настройке различных компонентов системы linux, и это очень хорошее введение, чтобы изучить гайки и болты.

ConcernedOfTunbridgeWells
источник