Совершенно не важно, какую операционку ты предпочитаешь иметь на рабочем компьютере, — Linux сегодня буквально повсюду: на серверах, на железках вроде Raspberry Pi, на умных устройствах, на компьютерах в госучреждениях... Да что там, даже в Windows теперь можно запускать Linux, чтобы легче было, к примеру, тестировать серверный софт. Хакеру же ориентироваться в Linux просто необходимо.
В чем отличие Linux от Unix? Если очень‑очень упростить, то можно сказать, что Unix — это предок Linux. Более сложный и развернутый ответ требует немного углубиться в историю.
В семидесятые годы Ричард Столлман придумал клонировать коммерческий и по тем временам дорогостоящий Unix и создать свою операционку, которую он назвал GNU is not Unix или просто GNU. Столлман и компания переписали все компоненты Unix и опубликовали их под придуманной ими «вирусной» лицензией GPL.
Изначально словом Linux называли только созданное Линусом Торвальдсом ядро. Но название Linux и маскот‑пингвин быстро прижились, и ими теперь обозначают всю ОС — несмотря на возражения Столлмана и просьбы писать только GNU/Linux.
Linux в эпоху интернета стал быстро набирать популярность, и коммерческим вариантам Unix со временем просто не осталось места. Тем не менее до сих пор живы его потомки — операционные системы FreeBSD и OpenBSD, которые теперь бесплатны и многое заимствуют из современного «Линукса». Кстати, на FreeBSD основаны macOS и iOS.
Получается, что выбор дистрибутива — это в первую очередь выбор подхода и даже идеологии. Однако более приземленным ориентиром обычно служит набор основных компонентов, из которых строятся дистры. Давай обсудим главные из них.
Запуск и остановка систем Linux
Ядро, хоть и критически важно для работы системы, особо не интересно с точки зрения пользователя — взаимодействовать с ним напрямую тебе вряд ли придется, пока ты не станешь настоящим гуру.
Возможно, ты часто слышал про «сборку ядра» и можешь даже самостоятельно попробовать сделать это. Поскольку ядро Linux монолитное, в него должна входить поддержка множества вещей, которые касаются всех аспектов работы компьютера. Соответственно, перед сборкой можно и нужно задать кучу всяких настроек, но ничего особенно увлекательного в этом, поверь, нет, хотя процесс крайне познавательный.
В системе может одновременно присутствовать сколько угодно ядер, а какое именно будет использоваться, ты можешь выбрать в загрузчике. Апгрейд ядра до более новой версии — совершенно рутинное дело в Linux и обычно происходит автоматически.
Любой Linux состоит из тысяч мелких компонентов — программ, библиотек и ресурсов (например, файлов конфигурации, наборов иконок и так далее). Распространяются они в виде пакетов (package).
Пакетный менеджер — это специальная программа, которая выполняет установку, настройку, удаление, а также обновление как отдельных приложений, так и всей системы в целом или ее компонентов.