Я был пользователем Linux много лет. В последнее время пользуюсь ежедневно. Ищу предложения для СМИ; коммерческие книги, бесплатная информация, онлайн-видео и т. д., которые помогут мне понять ОС на гораздо более глубоком уровне. Ваши предложения, пожалуйста.
Лучший способ понять Linux - это серьезно его сломать, а затем исправить.
Только многолетний опыт работы с отдельными компонентами даст вам глубокое понимание. При этом подавляющее большинство книг Oreilly Press действительно хорошо написаны и совершенны, если вы не болван и у вас более 24 часов. :)
Есть проект под названием Linux с нуля, в котором показано, как создать дистрибутив Linux из ничего. Вы можете сделать это один раз поучительно. Это займет много времени, так как вам нужно скомпилировать все из исходников, а в конце вы все выбросите.
я нахожу LWN.netСтраница ядра бесценна для того, чтобы быть в курсе того, как все работает в ядре на высоком уровне.
Я не уверен, когда вы говорите «более глубокий уровень», если вы говорите о том, чтобы получить больше в командной строке (некоторые люди никогда не покидают графический интерфейс, который поставляется с их дистрибутивом, если вы можете себе это представить), или с действительно мелкие мелочи, вроде написания драйверов ядра. Я предполагаю больше о первом, чем о втором.
Я бы посоветовал вам установить разумные цели для вещей, которые вы хотели бы делать с помощью Linux и приложений, работающих в Linux (запускать веб-сервер, предоставлять файлы хостам Windows, обслуживать DHCP, запускать графический рабочий стол и т. Д.). Я твердо убежден, что вы учитесь только тогда, когда «делаете». Когда у вас есть цель, приступайте к ней. Это означает чтение страниц руководства (много-много страниц руководства), документации "HOWTO", архивов списков рассылки, случайных сообщений в блогах и, конечно же, документации, которая поставляется с различными программами, которые вы устанавливаете или компилируете для запуска на вашем компьютере. коробки.
Я в течение нескольких лет преподавал курсы сертификации ИТ в классе, и я считаю, что могу сказать с некоторой степенью уверенности, что студенты, которые, как я видел, добились наибольшего прогресса, были теми, кто делал сумасшедшие проекты по своему собственному дизайну и учился на местах их штанов.
Как я сказал ранее, страницы руководства, документация "HOWTO" (http://tldp.org/docs.html и во многих, многих других местах в сети) и архивы списков рассылки - ваши друзья. Я бы держался подальше от любых книг, в которых говорится о внутреннем устройстве ядра, по крайней мере, на данном этапе. Для начала вам не нужны такие глубокие знания.
Говорите с другими людьми. Server Fault выглядит так, будто это отличное место, чтобы получить хороший совет. Задайте здесь вопросы и не думайте, что вы будете выглядеть глупо, делая это. Если вы можете встретиться с людьми, знакомыми с Linux, дерзайте. (Хотя я бы рекомендовал вам попытаться отделить мнение от фактов. В сообществе Linux существует столько же «священных войн» из-за различных мнений о том, как что-то делать, как и в любом другом сообществе - возможно, больше, учитывая характер сообщества .)
Чтобы получить действительно «глубокие» знания о наследии Unix Linux, вы можете обратиться к некоторым более старым специальным руководствам по администрированию Unix или справочным руководствам. Я бы с самого начала воздержался от этого (по крайней мере, до тех пор, пока вы не сможете оценить историческую природу «неиспользованных путей» Linux по сравнению с некоторыми операционными системами, производными от Unix).
Не зная, каков ваш общий уровень мастерства, я брошу благодарность книге, которая мне или не может быть полезной. Я настоятельно рекомендую "TCP / IP Illustrated" (http://www.amazon.com/Illustrated-Volumes-Addison-Wesley-Professional-Computing/dp/0201776316). Это вообще не зависит от Linux, но вы будете делать так много вещей, связанных с TCP / IP, что знать, что он «холодный», не составит труда.
Короче говоря, я говорю, что нет волшебной книги или книг, нет суперсекретных видео, из которых «мастера» учились, но нет абсолютно никаких ограничений тому, что вы можете узнать, если будете придерживаться этого и не боитесь пачкать руки.
Помимо повседневного использования (что я считаю отличным!), Я рекомендую вам подумать об услугах, которые можно было бы реализовать для вашей сети на Linux-компьютере. Начните разрабатывать его на основе сервисов Linux, исследуйте и внедряйте, когда будете готовы. Надеемся, что в этом процессе будут ошибки, и этот опыт поможет вам глубже понять ОС.
Вы найдете несколько бесплатных руководств в Linux Documentation Project, страница руководств. Это небольшой список, который я выбрал оттуда, но вы должны прокрутить страницу, чтобы найти то, что вам нужно.
Вам следует искать конкретные HOWTO по интересующим вас темам. Другой отсортированный по дате список HOWTO.
Есть несколько стартеров в Страница обзоров Linux для начинающих.
Наконец, это небольшая книга, доступная в Интернете - Ядро Linux в двух словах. Это издание 2007 года в формате PDF.
Вы должны использовать эти ссылки только в качестве подсказки, чтобы начать собственный поиск вещей, которые вам нужны.
Для общей философии Unix и отличного введения в командную строку есть классика Брайана Кернигана и Роба Пайка. Среда программирования Unix.
Кроме того, IBM DeveloperWorks В разделе Linux на сайте более 900 статей. Вы можете просмотреть список статей, чтобы найти интересующие вас темы.
Наконец, когда вы будете готовы разобраться в деталях, перейдите к источнику. Загрузите исходный код для используемой версии ядра по адресу kernel.org (в вашем дистрибутиве также есть пакеты с исходным кодом ядра, которые вы можете установить) и проверьте каталог документации. Вы найдете множество справочных материалов по внутреннему устройству ядра и настройкам конфигурации.
Школа. Чтобы по-настоящему понять систему Linux, вам понадобится широкий спектр знаний в области компьютерных наук. Компиляторы, компьютерная архитектура и операционные системы. И вам нужен гид, который может показать вам, что важно, и исправить любые недоразумения, которые у вас есть или сформированные.
Как только вы поймете, как работают современные процессоры и как их используют компиляторы C, вы можете погрузиться в книги вроде Миникс 3:
Это последняя версия книги, на которой Торвальдс, автор ядра Linux, (в общих чертах) основал свою работу. Вы узнаете об основных компонентах и алгоритмах операционной системы и о том, как именно их реализовать: текст поставляется с почти полной распечаткой исходного кода в Minix для справочных и учебных целей. Ознакомьтесь с обработчиком прерывания, чтобы получить полное представление о том, как работает система и где проходит управление.
И прежде чем вы будете насмехаться над школьным обучением и информатикой, важно отметить, что задачи, которые операционные системы должны выполнять, обычно являются NP-завершенными. Поэтому понимание широкого спектра доступных алгоритмов критически важно для настройки производительности, поскольку не существует доказуемо оптимального алгоритма.
Помимо ядра, есть еще ряд других областей. Поскольку Linux является открытым исходным кодом, это академическая золотая жила. Такие системы, как Debian и Ubuntu, делают свой исходный код доступным, и это очень просто:
apt-get source package-name
Многие апстримы также размещают свой код в системе контроля версий, поэтому вы можете прочитать самую последнюю версию исходного кода программы или даже увидеть, как она была создана много лет назад.
Обучение в любой из сред * nix - это целостный подходить. Он включает в себя серию прозрений и переживаний.. Это не случайно. Это преднамеренный побочный продукт его дизайна, поскольку исходная среда была разработана для компьютерных программистов. Это также его самый большой недостаток, поскольку основное внимание уделяется техническим аспектам, а не пользовательскому опыту. Это «дом с прочным каркасом, который прослужит без эксплуатации 100 лет, но его сайдинг не обшит случайно, а краской явно пренебрегли».
Сравните это с Windows, которая является зеркальным отражением этой философии - делайте что-то, что дает пользователю осязаемый опыт, но защищает его от внутренней работы вещей. Это «дом с красивой отделкой и краской, но фундамент, который несколько раз перестраивался с множеством обходных путей».
Чтобы действительно начать обучение, я бы предложил создавать собственные образы ядра с параметрами, специфичными для вашего оборудования, и устанавливать их с нужными вам параметрами. Вы должны полностью ожидать, что что-то где-то сломается, и вы можете или не сможете вернуться к «нормальному» состоянию. Это нормальная часть процесса обучения, и вы должны подходить к этому так, как будто что-то сломается (т.е. не делайте это основной установкой, не используйте отдельный диск или виртуальную машину или что-то в этом роде ...)
Я ответил на аналогичный вопрос, поэтому, чтобы не набирать текст, я сшлю его Вот. Вы также захотите прочитать первые несколько абзацев на этой странице, что даст вам лучшее Чувствовать за то, что вас ждет.
В источник.
Это, конечно, если вы имеете в виду ядро.
Если вы пытаетесь изучить систему над ядром и API, я бы начал с изучения старой школы Unix
. Может попробовать FreeBSD/OpenBSD/NetBSD/СтрекозаBSD. Немного Minix тоже может помочь. Затем перейдите к Slackware, Арка, Debian и Gentoo. Все они разные (и приходить с участием здорово документация), и в этих различиях ваше любопытство заставит вас искать, почему это так, вы получите много технических, коммерческих, политических и исторических знаний.
Другой способ - копаться в /etc
, старые руководства по Unix и, конечно же, Google.
Linux с нуля отличный способ learning
GNU / Linux.
Просто начните создавать свой собственный дистрибутив. Я сделал это для себя и знаете что? Спустя 4 месяца я потратил на то, что знаю о внутреннем устройстве Linux больше, чем ребята из моего окружения, которые используют Linux более 10 лет.
Есть еще много чего узнать о Linux или любой другой операционной системе. Один из видов обучения - это то, что я называют «углубленным» обучением, то есть выяснением того, как работает ядро, какие предположения оно делает, как различные биты взаимодействуют друг с другом и как оно работает с оборудованием. Это ядро. Подобные вещи очень полезны для выяснения, почему операционная система сломалась именно таким образом. На самом деле я узнал это так же Карл Кацке сделал. Я сломал вещи и сделал их лучше.
Для такого рода знаний Linux довольно прост. Все это задокументировано во многих местах. Того же не может быть вполне сказал для Windows, хотя для него все еще есть много документации.
Затем идет обучение «переходу в ОС», где пригодятся знания о bash / sed / awk / regex и всем остальном. Дело в том, что в наши дни операционная система - это гораздо больше, чем ее ядро. У вас есть большие двоичные объекты драйверов, предоставленные поставщиком. Вы знаете, как этот конкретный дистрибутив упаковывает свои сценарии запуска. У вас есть различные механизмы исправления / обновления. У вас есть системные демоны, которые нужны всем, но не ядро.
Это гораздо более широкий спектр знаний, чем простое ядро-фу. Это зависит от распространителя, поэтому то, как все работает в Red Hat, может не работать в Slackware. Где хранятся файлы, может быть разным. Как и то, что они выбрали для замены vi.
«Изучение Linux» больше касается изучения всей экосистемы, чем простой операционной системы.
Начать чтение / просмотр файлов в /proc
и /etc
- вы не нанесете никакого вреда, просто прочитав файлы (за исключением того, что вы можете испортить ваш терминал / ssh-соединение, если вы обнаружите файл, который производит двоичную информацию), и большая часть его удобочитаема. 'sysctl -a
«добыча - также золотая жила. Когда найдете что-то интересное, погуглите или man
для получения дополнительной информации об этом.
Вы можете найти настоящие жемчужины того, как ядро и ОС работают таким образом.
Несколько быстрых указателей:
/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 # debian-based /etc/sysconfig # redhat-based
Подсказка - некоторые выходные данные в / proc разделены NUL, поэтому их трудно читать. Используйте 'tr' для преобразования NUL в символы новой строки, например:
sudo cat /proc/1/environ | tr '\0', '\n'
Я настоятельно рекомендую это как "обязательное чтение":
Среда программирования Unix - Брайан В. Керниган / Роб Пайк
ISBN 0-13-937681-X
http://www.amazon.com/Unix-Programming-Environment-Prentice-Hall-Software/dp/013937681X
Вы уже делаете первый шаг, используя Linux в качестве обычного рабочего стола.
Если вы хотите понять, как все части соединяются и настраиваются, я бы предложил запустить Gentoo. При обычной установке stage3 вам нужно скомпилировать собственное ядро, установить все свои службы (кроме SSH, который есть из коробки), собрать и настроить X самостоятельно и т. Д. Когда вы это сделаете, вы получите гораздо большее понимание всех битов, которые входят в двоичную установку Linux. Также не повредит, что Gentoo имеет лучшую документацию из всех найденных мною дистрибутивов или что portage - фантастически мощный и гибкий менеджер пакетов.
Когда дело доходит до книг, мне нравятся книги О'Рейли, поэтому "Основное руководство по системному администрированию" и "Системное администрирование Linux" - возможные отправные точки.
Моя копия Сетевое администрирование TCP / IP является более старым, и я не использовал его некоторое время, но я нашел его очень полезным, чтобы получить более глубокое понимание того, что происходит.
Я нашел, что изучение Linux, FreeBSD, OpenBSD, Solaris, а затем даже различных других дистрибутивов Linux является хорошим способом узнать много нового о Linux. О том, как все было по-другому. Вы узнаете о своем родном городе не меньше, чем о том, где находитесь, посещая другие места.
У меня была книга под названием «Программирование Linux», которая научила меня больше, чем любая книга «Learn Linux». Хотел бы я иметь номер ISBN, но это было потрясающе… отчасти потому, что он вошел в программирование «почему», а не только «как».
В целом, я честно учился, ломая и исправляя. Это происходило медленно, и спустя 12 лет я все еще учусь новому.
Это определенно процесс. Главное - быть очень, очень любопытным. Когда вы сталкиваетесь с чем-то, с чем вы не знакомы, ознакомьтесь с этим. Узнайте, как и почему это работает, а также изучите лежащие в основе технологии.
Кто-то еще упомянул об этом, и я думаю, что это то, что мне больше всего помогло с использованием различных разновидностей Linux. Если вы чувствуете, что разбираетесь в Linux достаточно хорошо, начните использовать open / net / freebsd.
Что касается того, почему, большинство людей, работающих с Linux, с которыми я работал, могут использовать один или два дистрибутива Linux, которые не сильно отличаются от другого. Конечно, большинство из них знали эти дистрибутивы как свои пять пальцев, но они все же могли удивляться некоторым вещам. Я думаю (не чтобы начать пламенную войну), что способ сборки BSD немного легче обнаружить «почему» того, как все делается (плюс, скрываясь в списках рассылки bsd, они до смерти объясняют это «почему» ). Это сводится к изменению вашей точки зрения, и вам может никогда не прийти в голову спросить, почему определенные вещи такие, какие они есть, пока кто-то не сделает это совершенно по-другому.
Эта публикация на Stackoverflow имеет большой список ресурсов Unix / Linux, включая большинство канонических работ по этой теме.
Еще один способ узнать, что заставляет Linux работать за кулисами, - это работать через Linux From Scratch (http://www.linuxfromscratch.org/). По сути, это набор упражнений по ручной установке и настройке различных компонентов системы Linux и очень хорошее введение для изучения основных моментов.