Який найкращий ресурс для глибокого розуміння Linux


10

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

Відповіді:


6

Ви знайдете кілька безкоштовних посібників на сторінці документації Linux, на сторінці посібників . Це короткий список, який я вибираю звідти, але вам слід прокрутити сторінку, щоб знайти те, що вам потрібно.

  • Вступ до Linux - Рука керівництва; Червень 2008 року
  • Linux в дорозі; Листопад 2005 року
  • Посібник для системних адміністраторів Linux; Липень 2005 року
  • Розширений посібник з написання сценарію; Березень 2009 (так, це також добре для розуміння Linux)

Ви повинні шукати конкретні HOWTO за темами, які вас цікавлять. Ще одна дата відсортована за списком HOWTO .

На сторінці початківців відгуків Linux є кілька початківців .

Нарешті, це невеличка книга, доступна в Інтернеті - Linux Kernel in Nutshell . Це у форматі PDF видання 2007 року.

Ви повинні використовувати ці посилання лише як платник, щоб розпочати пошук речей, які вам потрібні.


Дякую всім за чудові відповіді. Ядро в горішці - справжній дорогоцінний камінь. Це така книга, яку я шукав.
Стюарт Вудвард

16

Найкращий спосіб зрозуміти Linux - це погано зламати його, а потім виправити.


Тей-хі ... Мені це подобається. Я люблю ламати речі.
Еван Андерсон

1
-1 Це гарна порада, але це не ресурс.
ім’я користувача

1
чудова відповідь. Я дізнався стільки про Linux, лише від того, щоб спілкуватися з ним і намагатися виправити щось. Після того, як ви зіпсуєте це, ви шукаєте в Інтернеті способи його виправити. Оскільки "Linux" - це настільки широкий термін, що в цьому випадку, ймовірно, більше стосується всієї операційної системи та додатків, що працюють на ній, а не просто ядра Linux, насправді не існує жодного хорошого ресурсу, який ви могли б порекомендувати.
Kibbee

2
Але є деякі рекомендації для кожного виду людини, якого ми могли б перерахувати. Мій особистий фаворит починається з найскладнішого дистрибутива, а потім встановлюється автоматичний дистрибутив. Розбивати речі чудово підходить для навчання, але знати, що потрібно зламати в першу чергу для отримання конкретних знань, набагато складніше. Більшу частину часу, порушуючи речі, ми дізнаємось речі, про які ми навіть не знали, що мусимо вчитися.
voyager

1
Безпечність та зручність ремонту в більшості випадків - це, безумовно, ресурс. Досвід починати зі зламаної системи та бути здатним розібратися у всіх її частинах (на відміну від комерційної ОС) - це величезна сила, і єдиний спосіб, коли ви навчитесь досліджувати проблему та відчувати свій шлях через це - це зробити це.
Карл Кацке

10

Я не впевнений, коли ви говорите "глибший рівень", якщо ви говорите про те, щоб отримати більше в командному рядку (деякі люди ніколи не залишають графічний інтерфейс, що постачається з їх дистрибутивом, якщо ви можете це уявити), або справді смачні речі низького рівня, такі як написання драйверів ядра. Я буду вважати більше першого, ніж останнього.

Я б радив вам встановити розумні цілі для того, що ви хочете робити за допомогою Linux та додатків, що працюють на Linux (запустіть веб-сервер, обслуговуйте файли для хостів Windows, обслуговуйте DHCP, запускайте графічний робочий стіл тощо). Це моє тверде переконання, що ти вчишся лише тоді, коли «робиш». Як тільки ви маєте на увазі мету, переслідуйте її. Це означає, що читає підручні сторінки (багато і багато підручних сторінок), документацію "HOWTO", архіви списків розсилки, випадкові дописи в блогах і, звичайно, документацію, яка постачається з різними програмами, які ти встановлюєш або збираєш для запуску на своїх ящики.

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

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

Поговоріть з іншими людьми. Помилка сервера виглядає так, що це прекрасне місце для отримання гарних порад. Задайте тут питання, і не думайте, що ви будете виглядати дурним, роблячи це. Якщо ви можете отримати деякий "час обличчя" з людьми, які знайомі з Linux, перейдіть на це. (Хоча я б рекомендував вам спробувати відокремити думку від факту. У спільноті Linux існує стільки "святих воєн" за різні думки про те, як робити речі, як і в будь-якій іншій спільноті - можливо більше, враховуючи характер громади .)

Щоб отримати дійсно «глибокі» знання про спадщину Unix Linux, ви можете скористатися деякими старими адміністративними посібниками для адміністрації або довідковими посібниками. Я б заперечував над цим рано (принаймні, поки ви не зможете оцінити історичну природу "шляхів, не прийнятих" з Linux, порівняно з деякими похідними Unix операційними сисемами).

Не знаючи, який у вас загальний рівень вмінь, я викину книгу, яка моя чи не може бути корисною. Я настійно рекомендую "TCP / IP Illustrated" ( 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
bandi

7

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


3
Навіть побудова Linux з нуля робить сенс. Спробуйте це: linuxfromscratch.org
Caterpillar

Оце Так! Однозначно +1 на це!
l0c0b0x

+1 для створення Linux з scrach. Я дізнався про завантаження човнів про процес завантаження Linux, ланцюги інструментів та розроблення квазі-вбудованих програм, використовуючи побудову дискети на основі uclibc, заснованої на Linux, що встановлюється ще в кінці 90-х. Завантаження будь-якої машини Linux з ядра вгору «з нуля», безумовно, дасть вам великий досвід.
Еван Андерсон

5

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

Також веб-сайт DeveloperWorks IBM має у своєму розділі Linux понад 900 статей. Ви можете переглянути список статей для цікавих вам тем.

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


4

Школа. Щоб реально зрозуміти систему Linux, вам потрібен широкий набір систем інформатики. Компілятори, архітектура комп’ютера та операційні системи. І вам потрібен посібник, який зможе показати вам, що важливо, і виправити будь-які непорозуміння, які у вас є чи формуються.

Як тільки ви зрозумієте, як працюють сучасні процесори, і як компілятори C експлуатують їх, ви можете зануритися в книги, як Minix 3:

Minix3

Це остання версія книги, на якій Торвальдс, автор ядра Linux, (вільно) базував свою роботу. Ви дізнаєтесь про основні компоненти та алгоритми операційної системи та про те, як саме її реалізувати: текст постачається з майже повною друком вихідного коду до Minix для довідкових та навчальних цілей. Ознайомтеся з обробником переривань, щоб отримати повне розуміння того, як працює система та де протікає контроль.

І перед тим, як посміюватися над навчанням та інформатикою, важливо зауважити, що завдання, які Операційні системи просять виконувати, як правило, не завершені. Таким чином, розуміння широкого спектру доступних алгоритмів є критично важливим для настройки продуктивності, оскільки не буде оптимально вираженого алгоритму.

Окрім ядра, є ще ряд інших областей. Оскільки Linux є відкритим кодом, це академічна золота шахта. Такі системи, як Debian і Ubuntu, роблять доступне джерело, і це просто просто:

apt-get source package-name

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


+1 нарікання на згадку "І вам потрібен посібник, який зможе показати вам, що важливо, і виправити будь-які непорозуміння, які ви маєте чи формуєте". Це дійсно ОС, яка найкраще розуміється в усній традиції (на жаль).
Avery Payne

3

Джерело .

Це, звичайно, якщо ви маєте на увазі ядро .

Якщо ви намагаєтеся вивчити систему над ядром та API, я б почав вивчати стару школу Unix. Можливо, спробуйте кілька FreeBSD / OpenBSD / NetBSD / DragonflyBSD . Трохи Minix теж може допомогти. Потім перейдіть до Slackware , Arch , Debian та Gentoo . Всі вони різні ( і приходять з великою документацією ), і в цих відмінностях ваша цікавість змусить вас шукати, чому це так, ви отримаєте багато технічних, комерційних, політичних та історичних знань.

Іншим способом може стати пошук в /etcстарих посібниках Unix, і звичайно, Google .

Linux з нуля - це чудовий спосіб learningGNU / Linux.


3

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


3

Навчання в будь-якому з середовищ * nix - це цілісний підхід. Він передбачає низку епіфаній та переживань . Це не випадково. Це навмисний побічний продукт його дизайну, оскільки оригінальне середовище було розроблено навколо та для комп'ютерних програмістів. Це також є його найбільшим недоліком, оскільки увага приділяється технічним аспектам, а не досвіду користувача. Це "будинок із міцним каркасом, який прослужить 100 років без обслуговування, але його сайдинг є випадковим і фарбою явно нехтують".

Контрастуйте це з Windows, що є дзеркальним зображенням цієї філософії - робіть щось, що дає користувачеві відчутний досвід, але захищає їх від внутрішніх дій речей. Це "будинок з красивою обробкою та фарбою, але фундамент, який був побудований кілька разів із кількома робочими обходами".

Щоб по-справжньому почати вчитися, я б запропонував створити власні зображення ядра, що мають параметри, характерні для вашого обладнання, та встановити їх за потрібними параметрами. Ви повинні повністю сподіватися на те, що щось буде, десь зламається, і ви, можливо, не зможете повернути щось до "нормального". Це нормальна частина цього навчального процесу, і ви повинні підходити до цього так, ніби щось порушиться (тобто не робіть це первинною установкою, використовуйте окремий привід або віртуальну машину чи щось таке ...)

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


2

Почніть читати / котирувати файли в /procі /etc- ви не зробите ніякої шкоди, просто прочитавши файли (економте, можливо, накручуючи свій термінал / ssh-з'єднання, якщо ви переймете файл, який видає двійкову інформацію), і багато чого з нього є людиною читабельний. ' sysctl -a' Випуск також є шахта золота. Коли ви знайдете щось цікаве, google або manдля отримання додаткової інформації про нього.

Ви можете знайти справжні самоцвіти про те, як ядро ​​та ОС працюють таким чином.

Кілька швидких покажчиків:

/ тощо / inittab
/etc/rcS.d
/etc/rc2.d
/ тощо / crontab
/ proc / 1 / середовище
/ proc / файлові системи
/ proc / meminfo
/ proc / cpuinfo
sysctl -a | grep vm.swappiness
/ etc / default # на основі debian
/ etc / sysconfig # на основі redhat

Швидкий підказок - деякий вихід у / proc розділений на NUL, а отже, важко читати. Використовуйте 'tr' для перетворення NUL в нові рядки, наприклад:

Судо кішка / Proc / 1 / оточення | tr '\ 0', '\ n'

2

Можна багато дізнатися про Linux або будь-яку операційну систему. Одним із видів навчання є те, що я називаю "глибинним" навчанням, яке з'ясовує, як працює ядро, які припущення він робить, як різні біти розмовляють один з одним і як він має справу з обладнанням. Це ядро. Такі речі дуже корисні для з'ясування того, чому операційна система зламалася саме так. Насправді я дізнався це так само, як і Карл Кацке . Я зламав речі і зробив це краще.

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

Тоді відбувається навчання "освоєнню ОС", де корисні знання з bash / sed / awk / regex та всього іншого. Тому що справа в тому, що операційна система в наші дні набагато більше, ніж її ядро. У вас є постачальник постачальників крапель. Ви маєте, як саме цей дистрибутив пакує свої сценарії запуску. У вас є різні механізми виправлення / оновлення. У вас є демони системи, які потрібні всім, але це не ядро.

Це набагато ширший спектр знань, ніж просте ядро-фу. Він залежить від розповсюджувача, тому, як все працює на Red Hat, може не працювати однаково на Slackware. Там, де зберігаються файли, може змінюватися. Як може те, що вони вибрали, замінили "vi".

"Навчання Linux" - це більше про вивчення цілої екосистеми, ніж просту операційну систему.


1

У мене була книга під назвою "Програмування Linux", яка навчила мене більше про ОС, ніж будь-яка книга "Дізнайтеся Linux". Я б хотів, щоб у мене був номер ISBN, але це було дивовижно .. частково, тому що він увійшов у програмування "чому", а не лише з "як".

Загалом, більшість мого навчання пройшло чесно, розбивши його та виправивши його. Це сталося повільно, і я все ще вчу нові речі після 12 років.

Це, безумовно, процес. Ключ - бути дуже, дуже цікавим. Коли ви стикаєтесь з чимось, що вам не знайоме, ознайомтеся з цим. Шукайте знання про те, як і чому це тикає, а також вивчіть основні технології.


1

Я знайшов плавання через Linux, FreeBSD, OpenBSD, Solaris, а потім навіть різні інші дистрибутиви Linux - хороший спосіб дізнатися багато про Linux. Про те, як все було інакше. Ви дізнаєтесь стільки ж про своє рідне місто, відвідуючи інші місця, ніж дізнаєтесь, де ви знаходитесь.


1

Що стосується книг, то мені подобаються O'Reilly, тому "Основна довідка про кишенькове адміністрування системи" та "Адміністрація системи Linux" можливі вихідні точки.

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


1

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

Якщо ви хочете зрозуміти, як всі частини з'єднані між собою та налаштовані, я б запропонував запустити Gentoo . Після звичайної установки stage3 вам доведеться скласти власне ядро, встановити всі свої служби (крім SSH, який там поза коробкою), створити та налаштувати X самостійно тощо. Коли ви це робите, ви закінчуєте набагато більше розуміння всіх бітів, які входять у бінарну установку Linux. Також не завадить, що Gentoo має найкращу документацію з будь-якого знайденого нами дистрибутива, або що портаж - це фантастично потужний і гнучкий менеджер пакунків.



1

Хтось ще згадав про це, і я вважаю, що це саме те, що мені найбільше допомогло у використанні різних ароматів Linux. Якщо вам здається, що ви маєте розумну обробку в Linux, почніть використовувати open / net / freebsd.
Що стосується того, чому більшість людей з Linux, з якими я працював, можуть використовувати один або два дистрибутиви Linux, які не так відрізняються від інших. Звичайно, більшість із них знала такі дистрибутиви, як тильна сторона руки, але вони все одно могли здивуватися насторожено, певними речами. Я думаю (не запускати полум'яну війну), що спосіб збирання BSD трохи легше виявити "чому" того, як це робиться (плюс, ховаючись у списках розсилки bsd, вони пояснюють, що "чому" до смерті ). Це зводиться до зміни вашої точки зору, і вам ніколи не прийде в голову запитати, чому певні речі є такими, якими вони є, поки хтось не зробить це зовсім по-іншому.


1

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

Ще один спосіб дізнатися, що змушує Linux поставити галочку за лаштунками, - це працювати через Linux From Scratch ( http://www.linuxfromscratch.org/ ). По суті, це набір вправ з встановлення та налаштування різних компонентів системи Linux вручну і це дуже хороший вступ для вивчення гайок та болтів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.