Что нужно изучать, чтобы лучше понимать Linux?
================================================

 Здравствуй, QA!   

Хочу в совершенстве знать линукс - знать, как работает ядро системы, как работает файловая система, как в данной архитектуре запускаются приложения, что такое зависимости, пакеты, репозитории и как они работают. Прошел курс на Stepik от института биоинформатики СПБГУ, очень понравилось, но там всего очень мало - просто работа с терминалом Ubuntu и всякими полезными фишками терминала.   

Понимаю - вопрос, возможно, будет раздражать опытных гуру, которые отправят меня в google и на линукс-форумы, но хочется всё же узнать: если есть какая-то ультимативно полная знаний о Линуксе книжка, которая может заменить несколько тонн поисковых запросов - порекомендуйте.   

Если такой нет, расскажите, как Вам, опытному линукс-юзеру - собирателю Arch из чистого ядра - удалось достичь таких высот, что Вы читали и где получали драгоценные знания.   

*И дистрибутив посоветуйте напоследок для новичка. Убунту - это лучшее для новичка или есть что-то более способствующее пониманию работы Линукса?* 

 Про файловую систему - изучить права доступа в POSIX, понять как работают iNode, почитать про File System Hierarchy Standard  

  

Знать как именно работает ядро - ну нет смысла на начальном уровне именно досконально изучать. Нужно примерно понимать что входит в ядро, можно почитать про process scheduler и про сигналы.  

  

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

Как запорешь несколько виртуалок, получишь опыта больше, чем пролистав книжку. 

 По устройству - читайте Немет. Книга, правда, несколько устарела, но архитектура Linux меняется очень медленно и всё равно осталась в тех временах.  

По командной строке читайте Шоттс, отрабатывая на практике.  

  

По дистрибутиву - ставьте Убунту в виртуалке, на реальное железо не ставьте.  

  

Самый же лучший бустер - опыт работы, теория даст ну от силы 15-20% знаний. Ещё можете поставить Линукс на ПК в синглбуте, тогда глюки и корявость системы на десктопе прямо-таки с головой погрузят вас в увлекательный мир геморроя. Месяц-два и будете уже прожжёным линуксоидом. 

 Пользуйтесь как основной системой, решайте практические задачи.  

Чтобы лучше понять устройство - ставьте Linux from scratch, Arch, если много времени и упорства - Gentoo.  

Успехов :) 

 Краткое пособие для начинающих:  

1. Начните  

  

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

Ну и сам дистрибутив менять в процессе на более "сложный". Убунту - это, конечно, удобно, но польза от нее только для чайников.  

Хотя можно прям сразу начать со сборки своего ядра в генту, но это крэйзи-вей какой-то 

 О, а набежали то, набежали))  

Генту, Скрейтч... Зачем? Спугнуть будущего пользователя Линукс?  

Я понимаю желание изучать, но для начала сойдёт обычное использование Линукс. Та же классическая Убунта подойдет. И да - желательно на реальном, но не на основном железе. Не нужно только думать, что Убунту для хомячков. В организациях и серверных решениях этот дистрибутив популярен, пригодится в будущем. Можешь так же к гному привыкать, так как его пилят ред хат, как впрочем и само ядро. Да и волокиты меньше с Убунту. Я для Линукс использую сейчас ноут б.у., взятый с известного сайта объявлений. Можно за те же 12 тыщ найти с конфигом CPU i3, 12Gb RAM, 120 SSD, ~650 GTX GPU. И изучай. Как только освоишься, сразу переходи на Арч. Лично я убил кучу нервных клеток, примерно 3 дня на кучу попыток поставить себе Арч и в итоге достиг своего. В процессе установки, используя Арч вики, поймёшь - из чего примерно состоит дистрибутив, насладишься скоростью работы pacman (не сразу, придет время и поймёшь) и познакомишься с командами. Но это только начало пути. В процессе использования Арча тоже нужно подчерпывать знания из той же Арч вики, а такая возможность представится, поверь. Не забудь про репозиторий herecura в Арче, чтобы не обламываться. Возможно это будут и другие форумы или тот же ютуб. Когда освоишься в Арче и поймёшь, что ты теряешь кучу времени на действия, которые автоматизированы в той же Убунту (это как правило sudo systemctl enable/start сервис) или же замучаешься пользоваться напильником, или захочется ощущать, что твоя система - это что-то единое целое а не мозаика, то возвращайся на Убунту. Вот и весь секрет. Только практика.   

P.S. пользуюсь Линуксом с 2009-2010 

 учи си и копайся в системных либах, переписывай их. напиши свой прокси сервер, шелл, примитивную файловую систему и тд. 

 Могу порекомендовать следующее:  

1. Учить язык C
2. Изучить следующие книги:

  

* [Ядро Linux: описание процесса разработки](http://www.williamspublishing.com/Books/978-5-8459-1779-9.html)
* [UNIX. Профессиональное программирование, 3-е издание](http://www.symbol.ru/ru/catalog/books/unix.html)
* [Linux API. Исчерпывающее руководство](https://www.piter.com/collection/all/product/linux-api-ischerpyvayuschee-rukovodstvo)
* [Внутреннее устройство Linux](https://www.piter.com/collection/all/product/vnutrennee-ustroystvo-linux-2)
* [Unix и Linux: руководство системного администратора](http://www.williamspublishing.com/Books/978-5-907144-10-1.html)