В чому переваги Linux та як почати працювати з цією ОС. Поради початківцям
Усі статті, обговорення, новини для початківців — в одному місці. Підписуйтеся на телеграм-канал!
Привіт! Мене звати Руслан Біловол і я лідер команди Linux Kernel розробників у GlobalLogic та OpenSource ентузіаст. За час своєї кар’єри встиг попрацювати з Texas Instruments, Marvell, Cisco в розробці вбудованих систем на базі Linux, також автор драйверів USB Audio Class 3 в ядрі Linux. А дехто може пам’ятати мене як доповідача на різних Linux/OpenSource конференціях, вебінарах, тренінгах, та популяризатора Linux в українському ком’юніті.
Linux Kernel — це ядро операційної системи, яке IT-спеціалісти використовують для побудови дистрибутивів Linux. Воно об’єднує тисячі інженерів у всьому світі і є ядром не лише для комп’ютерів, жорстких дисків і моніторів, а й для багатьох Linux-ком’юніті — звісно, у переносному сенсі.
У цьому тексті я розповім, як розвиватись у Linux-напрямі, а також дам практичні поради, як стати Linux Kernel інженером. Вони стануть у пригоді спеціалістам, які почали вивчати чи тільки мають намір вивчити цю операційну систему, користувачам-початківцям Linux, світчерам, які прагнуть почати кар’єру Linux Kernel інженера та студентам, які хочуть дізнатися більше про Linux.
Запрошую у світ Linux — можливо, саме хтось з вас через деякий час зможе встановити Linux навіть на звичайний годинник!
Альтернативна операційна система
Тож, для початку трохи історії і теорії. Linux (або GNU/Linux) — це операційна система, ядро якої було створено студентом Лінусом Торвальдсом у процесі модифікації безплатної ОС Minix, яка того часу стояла на його комп’ютері. Лінусу не сподобалися ліцензійні обмеження Minix, які не дозволяли йому модифікувати та використовувати її на свій розсуд, а тому він створив нову альтернативну операційну систему, яку з часом почав використовувати як основну.
Я поруч з Лінусом Торвальдсом на конференції
Linux Kernel, або ядро Лінукс управляє ресурсами системи (часовими інтервалами CPU, що видається процесам, розподілом пам’яті, доступом до жорсткого диска та мережі), дає можливість процесам обмінюватись інформацією. На відміну від Microsoft Windows та MacOS вихідні коди Linux доступні кожному для вільної модифікації та налаштування під будь-які задачі.
Сьогодні Linux вбудована в настільні комп’ютери, смартфони, планшетні ПК, маршрутизатори комп’ютерних мереж (роутери), пристрої автоматики, системи керування телевізорами та ігрові консолі. Станом на жовтень 2022 року, згідно з опитуванням DOU, 17% українських розробників користуються Linux. Загалом ця операційна система входить у трійку найпопулярніших у світі.
Linux відрізняється від інших операційних систем своєю відкритістю, гнучкими налаштуваннями та стабільною роботою. Ми, як інженери, часто маємо справу з найновішими процесорами, мікросхемами, які з’являться на ринку лише через декілька років, і швидко запустити їх розробникам допомагає саме Linux — можливість вільно додавати підтримку нового апаратного забезпечення до операційної системи та потужне ком’юніті дозволяє працювати з передовими технологіями та швидко створювати нові розробки.
До речі, ОС Android базується саме на ядрі Linux, тому всі, хто використовують Android-пристрої, певним чином мають відношення й до Linux.
Все частіше Linux використовують і на суперкомп’ютерах (клас найпотужніших комп’ютерних систем на сьогодні). Цікаво, що станом на 2019 рік усі 500 найпотужніших комп’ютерів світу використовували Linux як свою операційну систему.
Встановити Linux може будь-хто на (майже) будь-що
Операційною системою Linux активно користуються професійні програмісти, програмісти-аматори, користувачі, яким подобається можливість налаштовувати операційну систему під себе, конфігурувати та підганяти її; а також ентузіасти, що встановлюють її на самі неочікувані пристрої — холодильники, паяльники, автомобілі чи смартфони.
Також Linux з різних причин користуються ті, кому не подобається Windows чи MacOs. Windows — власницька ліцензована система. Це означає, що в правах використання юзери обмежені тим, що їм дозволяє компанія-виробник цієї ОС. На противагу цьому Linux має повністю відкрите ядро ОС та код програм. Таким чином, його можна використовувати у будь-яких цілях абсолютно безплатно та налаштовувати й переробляти під свої потреби.
Гнучкі налаштування та стабільність — переваги Linux для фахівця
Відкритість і доступність — головна ідеологія Linux. Цю операційну систему можна легко встановити ноутбук або ПК, вона безплатна, має багато дистрибутивів — варіантів Linux на будь-який смак, які готові для кінцевої установки на машину. Вони бувають і комерційними (наприклад, RHEL), однак платити потрібно лише за оновлення і технічну підтримку.
Крім того, маючи хороші скіли в програмуванні, можна самостійно змінювати код програм. Linux та більшість софту його екосистеми мають відкриті ліцензії, а тому вихідні коди програми можна переглянути на публічних серверах чи завантажити. Децентралізована мережа фахівців з усього світу переглядає і рецензує код перед додаванням в Linux на предмет помилок та оперативно їх виправляє. Це «самоочищує» ОС від багів.
Також серед переваг Linux — безпека та децентралізація. Ця ОС добре зарекомендувала себе як достатньо захищена від зламів, а значить, від вірусів, майнерів і рекламних модулів. Її відкриті програми належать одночасно всім і нікому конкретно.
Різні дистрибутиви, які створюють користувачі, часто суттєво відрізняються один від одного. Наприклад, одні дистрибутиви фокусуються на корпоративній екосистемі та підтримці (наприклад, RHEL, Ubuntu, Calculate), інші — на універсальності та потужності (наприклад, Debian, Arch). Також є вузькоспеціалізовані варіанти дистрибутивів Linux (як для офісних працівників чи звукових студій) або ті, які підходять для кастомізації систем та прикладного софту, наприклад Gentoo, Yocto, BuildRoot.
В ОС немає обмежень на кількість процесорів, ядер, обсяг оперативної пам’яті, а тому Linux може працювати як на мінімалістичних вбудованих системах типу наручних годинників, так і на суперкомп’ютерах. Настільний Linux простіший у використанні, ніж, наприклад, Windows. Все, що потрібно робити — це встановити/ видалити програму та оновити систему через менеджер пакетів, причому ОС майже не накопичує помилок, хоча кількість встановлених/ видалених пакетів може обчислюватися тисячами.
Однією з переваг Linux є також її власне ком’юніті. Це дуже важливо для IT-спеціалістів, адже так ми можемо самостійно працювати з операційною системою, як архітектори та програмісти, самоорганізовуватись, додавати нові можливості та фічі, корисні як для комьюніті, так і для бізнесу. Оскільки Linux поширений саме серед розробників, інженери постійно покращують софт і очищають його від різноманітних «багів». Коли ми працюємо над Linux, ми можемо ніколи не бачити інших інженерів, тому що вони розкидані по всьому світу. Усе, що маємо, — це e-mail, і різні Linux-ресурси. І коли ми зустрічаємося на конференціях, завжди цікаво поговорити на спільні теми.
Слабкі місця Linux
Linux сильно відрізняється від Windows, з яким всі звикли працювати, а тому в користувачів часто виникає проблема в освоєнні цієї операційної системи. Звичайно, якщо користуватись ОС на рівні «лайкати котиків» на Facebook чи Instagram або позависати на YouTube, то різниця невелика. Але Linux має потужний інструмент у вигляді інтерфейсу командного рядка зі своєю ідеологією. Звикати до нової концепції ОС завжди складно, однак реально. У розробників, наприклад, не виникає особливих проблем з адаптацією до ОС, а з часом ефективніша робота з вбудованими інструментами Linux захоплює, і відмовитись від них вже не вийде :)
Ще одне слабке місце Linux — відсутність деяких версій популярних програм та інколи хороших драйверів для периферії. Наприклад, для цієї ОС немає Microsoft Office та Photoshop. Також відсутні інші специфічні для деяких професій програми. Однак для багатьох з них є аналоги. Якби всі необхідні програми були адаптовані під Linux, то він точно мав би набагато більше користувачів, ніж зараз. З точки зору ж розробника, всі необхідні інструменти були адаптовані під Linux і доступні для легкої установки та використання.
Також не всі виробники периферійних пристроїв випускають хороші драйвери під Linux, таке трапляється з відеокартами чи WiFi-адаптерами, а їх налаштування може зайняти деякий час, і, як бонус, дає можливість поглиблено розібратись з нутрощами Linux.
Інколи підтримки якогось пристрою може не бути взагалі в Linux, і тоді працює правило — написати драйвер самому, чи заплатити іншому Linux Kernel інженеру, щоб він його написав, або просто чекати, доки хтось в Linux ком’юніті його не створить.
Linux чи MacOS: яку операційну систему обрати
Це провокаційне питання, адже програмування під Linux і під MacOS часто використовується для вирішення різного типу задач. Але для порівняння: операційна система Linux схожа на MacOS, проте має іншу історію. MacOS встановлюється на обмеженому наборі пристроїв і постачається разом із комп’ютерами компанії Apple. Linux, навпаки, встановлюється на все, навіть на ті пристрої, на яких вже стоїть MacOS.
З використанням ОС Linux ми в компанії, наприклад, розробляли рішення для трансляції контенту кабельних операторів, cloud-платформу для обробки медіа, низку медичних проєктів. Так, на Linux, зокрема, створювалася cистема відеомоніторингу для карет швидкої допомоги. Прототип дозволяє лікарю моніторити показники пацієнта в реальному часі та підготуватися у лікарні до прийому пацієнта ще до прибуття карети швидкої.
MacOS — це операційна система сімейства Unix. Простіше кажучи, вона як Linux (яка теж Unix-подібна ОС), проте із закритим вихідним кодом. Тому, якщо ви раніше програмували в MacOS чи користувались командним рядком, у Linux ви побачите схожий функціонал та використання стандартів POSIX.
То чим займаються Linux Kernel інженери
Linux Kernel інженер — це людина, яка розробляє рішення на основі Linux. Основне в цій професії — базові знання і розуміння специфіки розробки для ядра ОС. Linux — це та операційна система, з якої найчастіше починають виробники нових процесорів, інженери часто починають працювати із залізом, яке з’явиться на ринку лише через декілька років. В таких напрямках потрібне розуміння цифрової електроніки, внутрішньої будови процесора, кешу, пам’яті, а задача інженера — запустити Linux на новому процесорі чи системі-на-чипі, тож паяльник чи осцилограф часто зустрічаються на їхньому робочому столі.
Також Linux Kernel інженери додають нові фічі-родзинки до операційної системи. Наприклад, створюють драйвери для того, щоб користувач міг під’єднуватися до WiFi-точок нового покоління. Або створюють драйвери для нових файлових систем.
Дуже багато роботи з мережевим стеком — більшість пристроїв з Linux підключаються до Internet, а з розвитком Internet of Things їх значно побільшало. В системах, критичних до споживання енергії, наприклад, смартфонах та автомобільних бортових комп’ютерах, Linux Kernel фахівці займаються оптимізацією роботи Linux та ‘заліза’ для мінімізації витрат енергії. Ну а задачі Linux Kernel інженерів, що працюють з Android, дуже широкі — і робота з аудіо та мультимедіа, і з USB та зарядкою, і з тачскрінами та дисплеями, і з різноманітними датчиками та бездротовими рішеннями як NFC, BlueTooth та WiFi.
Сетап, на якому були написані драйвери для USB Audio Class 3 для Linux
Розробники Linux та Linux Kernel часто багато працюють із «залізом» (процесори, мікросхеми, і т. д). І бувають випадки, коли розробники «заліза» допускають помилки, а програмістам доводиться розгадувати нетривіальні загадки та дійсно бути хакерами, та зрозуміти, яким чином змусити його працювати.
З нашою командою траплялись цікаві історії, коли необхідно було запустити процесор, в якому неправильно працювали кеші, не працювала частина периферії або реальна робота з його регістрами абсолютно не відповідала тому, що написано в документації. Часто розв’язання таких проблем призводить до вивчення і глибшого розуміння того, як працюють сучасні обчислювальні системи, наскільки вони складні та виявлення цікавих інженерних підходів.
До речі, майже у всіх описаних випадках непрацююче «залізо» ми запустили, а для того, що не запускається, у нас є колега з паяльником, який знає, як за допомогою напаювання в правильному місці кількох проводів в пристрої ефективно розв’язати софтверні проблеми.
Хочу стати Linux Kernel інженером: як і звідки починати
Щоб стати Linux Kernel інженером, необхідно для початку вміти програмувати на С, бути користувачем Linux, щоб розуміти його ідеологію (особливо командного рядка), а також добре знати англійську мову для спілкування з ком’юніті.
Почати кар’єру з Linux можна навіть після університету. Є компанії, які беруть випускників технічних напрямків стажерами і навчають теоретичних основ архітектури й програмування ядра Linux, дають практичні навички. Беручи до уваги, що Linux зараз можна знайти майже в будь-чому навколо, технології з якими можна працювати є на будь-який смак.
Також професії можна навчитися самостійно. Сьогодні можна легко придбати одноплатний комп’ютер, який коштує буквально $30-40, встановити на нього Linux і почати робити, наприклад, домашню автоматизацію або інші цікаві речі, пов’язані з інтернетом чи управлінням. Так, у вас з‘являться навички, яких буде достатньо, щоб стартувати, а згодом — йти глибше в професію. Один із прикладів самостійного навчання — Кон Колівас, австралійський анестезіолог, що у вільний час займався розробкою для ядра Linux, і зробив вагомий внесок в його розвиток.
На старті початківців також лякає складність у використанні Linux. Однак це скоріше питання навичок. Місяць-два — і користувач швидко адаптується до нової операційної системи. Крім того, в інтернеті є дуже багато корисних матеріалів для Linux-поціновувачів, відеооглядів, курсів, та доповідей з конференцій. Також не треба забувати й про Linux-ком’юніті. Там готові відповісти на будь-яке ваше ввічливо поставлене питання :)
З корисних ресурсів:
- книги Роберта Лава як для початку роботи з Linux, так і для розуміння його внутрішньої будови (Linux in a Nutshell, Linux Kernel Development 3rd edition, Linux System Programming);
- книга The Linux Programming Interface;
- вебінари від bootlin.com;
- YouTube-канал The Linux Foundation;
- онлайн-журнал Linux Weekly News;
- локальні події, присвячені вивченню Linux.
Linux — перспективна та доступна операційна система, яка об’єднує навколо себе тисячі розробників у всьому світі та розвивається стрімкими темпами.
Операційна система продовжує розвиватися, додавати нові фічі та протистояти комерційним закритим продуктам.
Тож, підсумовуючи: щоб почати з Linux, перш за все, потрібно його встановити і щоденно користуватись. Друге, що дуже бажано зробити, — вивчити англійську мову для спілкування в ком’юніті, третє — купити невеликий одноплатний комп’ютер для експериментів. І четверте — кайфувати від того, чим займаєшся, адже найбільший успіх чекає на тих, хто отримує задоволення від професії!
510 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів