Доброго времени суток всем откликнувшимся!
Я сейчас учусь на 3 курсе в вузе, нам преподают Линукс, конечно, но там какая-то непонятная шляпа. Но несмотря на это, тема меня заинтересовала и я хочу изучить её подробнее и глубже, но не могу выбрать чтиво, по которому буду углублять познания о творении Торвальдса.
Сначала начал читать "API Linux. Исчерпывающее руководство", но там описана версия ядра 2.6.х, что не очень удовлетворяет текущим реалиям.
В связи с вышеперечисленным хочу вас попросить посоветовать дельную книжку по линуксу, которая хотябы мало-мальски актуальна (ну либо переиздание).
Учась на 3 курсе я, разумеется, обладаю некоторыми знаниями в c, cpp, питоне и ассемблере, поэтому совсем пнем назвать меня нельзя, хоть и сессия без троек не была закрыта ни разу)
Ядро 2.6 - нормально.
Суть в том, что начиная с этой версии в ядре произошли серьезные изменения, из-за которых многое потеряло совместимость с версией 2.4.
После 2.6 таких кардинальных изменений не было, все развитие происходило плавно и совместимость с 2.6 никуда не делась. Так что, практически все, что написано для 2.6 вполне актуально и сейчас. Конечно появились какие-то новые фишки, но старый API - это база, он жив и вполне актуален.
"Исчерпывающее руководство" - хорошая книжка, автор пишет маны для линукса.
Кроме того, после 2.6.39 изменился принцип нумерации версий. Сейчас мажорные версии меняются гораздо чаще. Версия 2 была актуальной 15 лет. Из них ветка 2.6 была актуальной почти 8 лет. А сейчас посмотрите, на сколько чаще меняются мажорные версии. https://en.wikipedia.org/wiki/Linux_kernel_version...
Применительно к вопросу, не понятно, с какой целью вам надо изучать линукс. Если вы хотите под эту ОС программировать - это одно, "Исчерпывающее руководство" подойдет. Если надо как пользователю знать ОС или как администратору - нужны другие книги.
paran0id, ранее мажорные версии ядра менялись только тогда, когда делались серьёзные фундмаментальные изменения в основах. Например, главная особенность ядра версии 2.x - поддержка виртуальной памяти. Соответственно, по старой системе нумерации ядро до сих пор продолжает ветку 2.6. Но так как нумеровать ядра в стиле 2.6.100500 неудобно, то приняли решение регулярно начинать новую мажорную версию.
В общем, для образовательных целей описание ядра 2.6 сойдёт. Только не надо думать, что там прям всё так, как описано в книжках и не меняется. На деле там по мелочи всё время что-то меняют, и даже выпущенная полгода назад книжка может быть не вполне актуальна в каких-то деталях.
Но в целом мне не кажется, что читать описание API ядра это прям лучший способ осваивать Linux. Это как при изучении иностранного языка зубрить буквы, но не заниматься словами, грамматикой, практикой чтения и письма. Нужно изучать разные вещи в комплексе. В том числе приближенные к практике. Например, по сетям разбираться как работают iptables, iproute2 (policy routing, ограничение скорости), net namespaces (очень актуально в свете популярности контейнеризации, где namespaces это основная технология) итд. В частности, по iproute2 есть классическое руководство - LARTC (Linux Advanced Routing and Traffic Control HOWTO), которое полезно почитать в люблом случае для улучшения понимания работы сети.
я посоветую поставить линуху внутрь виртуалбокса и поковырятся в ней.
удобно что все вопросы можно тут же погуглить, сломанная система тебя никак не тормозит.
поставить драйвера виртио виртуалбокса, потом скомпилить их из пакета исходников, поковырять возможности виртуалбокса, их таки много и не все представлены на гуе .
потом поставить системы по интересу: nas, httpd, синхронизаторы, комплект почтового сервера.... скомпилировать и запустить пару своих прог.
я ковырялся в комплияции ядра и попытался сделать свое личное минимальное ядро, гуглил каждую опцию, потом несколько раз компилил, удаляя лишние или восстанавливая отвалившиеся. весьма захватывающий процесс, дает много познаний в управлении линухой.
в общем надо на мой взгляд, с линухой надо пое****ся - тогда в черепушке зависнет прикладной опыт.
потом ставишь на комп второй системой и разбираешься во всех тонкостях и настройках нативной установки....
а потом смотришь в каком из мульёна применений тебе интересен линукс и грызешь гранит в ту сторону.
res2001, Спасибо за развернутый ответ и развеивание моих заблуждений.
С конечной целью я сам не определился, но мне интересен Линукс как таковой, его возможности и области применения этих возможностей. Я так подумал и решил, что для начала стоит приобрести какие-то базовые знания и понимание сути, а потом уже выбирать конкретное направление развития.
Про сервера тоже немного читал слышал, тема интересная, может подскажете пару книг, запомню на будущее?
shurshur, спасибо, что помогли понять нумерацию версий.
Вы провели аналогию с изучением языка. Я не совсем с вами согласен. В любом языке необходимо сначала изучить буквы, которые в нем используются, а уже после этого переходить дальше. Так же в книге Керриска есть упражнения и задания, на которые я не возлагаю сильных надежд, но, в любом случае, они должны помочь с усвоением и пониманием материала.
Так же спасибо за пару советов по сетям
Стоит начать с изучения с точки зрения пользователя ОС.
В процессе будут возникать вопросы по настройке разных частей под свои хотелки, будете копать в этих направлениях.
Делайте акцент на инструментах командной строки, т.к. в GUI далеко не все можно сделать.
Научитесь писать и понимать bash скрипты.
Найдите книжку по администрированию. Но в книгах такого рода, обычно пытаются охватить большое количество тем, из-за чего они бывают достаточно поверхностные. Но для первоначального вкатывания в тему - пойдет. Для углубления знаний или поиска ответов на не стандартные вопросы придется искать дополнительные источники информации.
В линукс есть встроенная справочная система - man, там много всего полезного можно найти и как пользователю/администратору и как программисту.
CityCat4, да вопрос был вам. Спасибо за ответ. Вы читали новое 5 издание(добавили systemd и docker)? Хотя в интернете вроде говорят что 4 издание лучше.
Кристофер Негус — главный специалист по разработке и написанию технической документации в компании Red Hat, Inc. До прихода в компанию Red Hat Крис написал десятки книг по Linux и UNIX. То есть этот человек определенно умеет писать книги на сложные технические темы, и раз он занимает такую должность в компании Red Hat, Inc., то он определенно должен разбираться в том, о чем пишет.