750

Изучаем GNU/Linux часть 21. Ядро Linux

Продолжаем изучать GNU/Linux и готовиться к сертификации от Red Hat (RHCSA).


Для тех, кто видит мои посты впервые - я стараюсь очень лёгким языком с нуля научить вас работать с операционной системой GNU/Linux. Зачем? Потому что - Стоит ли делать курс по RHCSA?


Предыдущие темы:

Изучаем GNU/Linux часть 20. Права на файлы (RHCSA)

Изучаем GNU/Linux часть 19. Пользователи и группы (RHCSA)

Изучаем GNU/Linux часть 18. Sudo

Изучаем GNU/Linux часть 17. Su и visudo (RHCSA)

Изучаем GNU/Linux часть 16. Процессы #3: Работа с процессами (RHCSA)

Изучаем GNU/Linux часть 15. Процессы #2: Информация о процессах #2 (RHCSA)

Изучаем GNU/Linux часть 14. Процессы #1: Информация о процессах

Изучаем GNU/Linux часть 13. Bash #2: переменные (RHCSA)

Изучаем GNU/Linux часть 12. Bash #1: bash-completion, alias, type

Изучаем GNU/Linux часть 11. Стандартные потоки (RHCSA)


Ссылки на темы 1 лвла - Изучаем GNU/Linux часть 10. Текстовые редакторы nano и vi (RHCSA)


Немного поговорим про ядро и его модули, затронем тему драйверов, информации об устройствах, udev, sysfs и прочее.

P.S. Текст из видео в комментариях.


P.P.S. Мне бы пригодилась помощь в создании большого количества заданий и вопросов для обучающихся -> Задания, вопросы и ответы

GNU/Linux

1.2K пост15.6K подписчика

Правила сообщества

Все дистрибутивы хороши.

Будьте людьми.

20
Автор поста оценил этот комментарий

Мы с вами частично знакомы с некоторым функционалом ядра – оно отвечает за time sharing, управление процессами, их приоритетами и т.п, также управление памятью – та же виртуальная память, swap и всё что с этим связано, ну и из недавнего – отвечает за проверку прав на файлы - каким пользователям к каким файлам есть доступ. Это далеко не всё, что-то мы еще будем разбирать по мере изучения, но пока давайте разберём, что из себя представляет ядро и что администратору с ним делать.


Для начала – ядро это программа. В отличии от других программ, оно лежит в директории /boot и называется vmlinuz (ls /boot). Почему оно лежит здесь и что это за другие файлы – это касается вопроса загрузки операционной системы, что мы будем разбирать в другой раз. Как вы видите, тут несколько файлов с названием vmlinuz и они отличаются версиями. Когда мы обновили систему, у нас появилась новая версия ядра, но старая не удалилась – на случай если с новым ядром будут проблемы, всегда можно загрузиться со старого. Версию ядра, которую мы сейчас используем, можно увидеть с помощью команды uname -r. Давайте посмотрим, сколько же весит ядро, для этого воспользуемся утилитой du, которая показывает размеры файлов, с ключом -h – чтобы отображалось не в килобайтах, а в более удобном для чтения виде (du -h /boot/vmlinuz-*). Как видите, ядро весит почти 8 мегабайт. На самом деле, буква z в слове vmlinuz говорит о том, что ядро сжато. То есть, фактически оно весит чуть больше.


Возможно, вы знаете – ядро Linux используется везде – Андроид смартфоны, коих больше 3 миллиардов, работают на Linux; огромное количество сетевого оборудования, серверов, всяких медиабоксов, умных телевизоров, холодильников, машин, да даже бортовые компьютеры Space X – всё это работает на Linux. Это огромное количество разнообразного оборудования, которое должно поддерживать ядро. Поэтому в разработке ядра участвуют тысячи крупнейших компаний и специалистов. И всё ради 8 мегабайтного файла? Конечно нет. В этом файле только основной функционал, необходимый для работы – работа с памятью, управление процессами и т.п. Когда же ядру нужен дополнительный функционал – допустим, чтобы работать с сетевым адаптером, видеокартой или другим оборудованием – ядро обращается к специальным файлам, называемым модулями. В модулях хранится код, необходимый для работы с оборудованием или программный функционал – допустим, драйвер для видеокарты или программа для шифрования. Обычно это происходит незаметно для пользователя – вы вставили флешку, а ядро загрузило модуль для работы с юсб флешками, а также модуль для работы с файловой системой на этой флешке. На других операционных системах это может работать по другому – есть различные архитектуры ядер операционных систем. У Linux архитектура модульная – то есть какой-то функционал вынесен в модули и подгружается по необходимости. Также Linux называют монолитным – потому что всё что делает ядро происходит в рамках одной программы – а правильнее сказать – все части ядра работают в одном адресном пространстве. Помните, мы обсуждали, что это такое, когда говорили о процессах? Но так как у Linux-а огромный функционал, который бессмысленно держать одновременно в памяти – поэтому функционал вынесен в модули, засчёт чего ускоряется работа ядра.


Так вот, модули ядра хранятся в директории /lib/modules/ (ls /lib/modules) , где есть директории для каждой версии установленного ядра. Зайдём в директорию текущего ядра (cd /lib/modules/$(uname -r); ls ) и посмотрим файл modules.alias (nano modules.alias). Тут перечислено – для каких устройств какие модули грузить в ядро.


В отличии от Windows, где вы ставите систему, а потом доустанавливаются драйвера, в Linux большинство драйверов уже предустановлены в виде модулей, благодаря тому, что производители оборудования сотрудничают с разработчиками ядра и предоставляют открытый исходный код драйверов на оборудование. Но, естественно, далеко не все производители предоставляют исходный код своих драйверов, из-за чего что-то может не работать из коробки – зачастую это касается драйверов на wi-fi. Иногда, допустим, в случае с драйверами на видеокарты Nvidia, находятся энтузиасты, которые с помощью реверс инжиниринга создают свободные драйвера – т.е. берут драйвер с закрытым исходным кодом, изучают его с помощью специальных программ и методик и стараются воссоздать этот драйвер. Для видеокарт nvidia таким образом создан драйвер nouveau. Зачастую это работает – естественно без каких-либо гарантий, потому что драйвер написан не самим производителем. При этом сам производитель – тот же Nvidia, также предоставляет свой драйвер в виде модуля, но уже с закрытым исходным кодом, т.е. проприетарный, поэтому он не бывает включён в ядро по умолчанию, из-за чего нужно самому доустанавить этот модуль. К примеру, после установки Centos на Virtualbox, мы с вами установили гостевые дополнения Virtualbox вручную именно потому, что они не под лицензией GPL, хотя сам Virtualbox имеет открытый исходный код с лицензией GPL. Всё это к тому, что если вы поставили Linux и у вас что-то не работает, допустим, wifi, то, скорее всего, производитель wifi адаптера не открыл исходный код своих драйверов и вам придётся искать нужный драйвер на сайте производителя, либо погуглить. Однако, некоторые юзер-френдли дистрибутивы, допустим Ubuntu, делают это за вас – после того, как вы установите Ubuntu, система найдёт нужные проприетарные драйвера и предложит вам их установить, что удобно для новичков.


Возвращаясь к нашему файлу, во втором столбике у нас перечислены идентификаторы оборудования – так называемые hardware id. Возьмём для примера radeon (ctrl+w – radeon – enter) – это видеокарты от AMD. Чтобы было удобнее, откроем сайт devicehunt.com – где мы можем увидеть информацию о вендорах и оборудовании. Так вот, если ядро видит, что к pci шине подключено устройство, у которого vendor id – 1002, а device id – 99A4 – то ядро знает, что для этого устройства нужен модуль с названием radeon. Тут могут быть еще версии какого-то оборудования, классы и подклассы – но нам это сейчас не особо важно. Если вам интересно, что означают все эти обозначения, ссылка в описании (http://people.skolelinux.org/pere/blog/Modalias_strings___a_...) . Сам этот файл не статичный, он генерируется от информации из самих модулей. Чтобы увидеть информацию о каком-нибудь модуле, можно использовать команду modinfo – допустим, modinfo radeon (modinfo radeon | less). Тут мы видим расположение и имя файла, причём у всех модулей расширение .ko, ну и .xz в конце означает, что модуль в сжатом виде. Также лицензия, автор, описание. И чуть ниже у нас alias-ы – собственно на основе этого и генерируется файл, который мы смотрели. Ну и чуть ниже – параметры – функционал оборудования на уровне драйвера. Допустим – audio – будет ли у нас видеокарта работать со звуком через тот же hdmi.


Так вот, недавно мы узнали о виртуальной файловой системе procfs (ls /proc), через которую ядро нам показывает информацию о процессах. А для структурированной информации об устройствах и драйверах есть виртуальная файловая система sysfs, доступная в директории /sys (ls /sys; ls /sys/bus/pci/device/00*). И хотя тут куча файлов, через которые можно увидеть очень много информации, сидеть и копаться в этих файлах не всегда удобно и есть утилиты, которые показывают эту же информацию, в более компактном и простом виде. Например, lscpu – показывает информацию о процессоре, lspci – показывает информацию об устройствах, подключенных на pci шину, lsusb – устройства, подключенные к usb. Для более подробной информации вы можете использовать lshw, а из графических утилит, есть, например, hardinfo. Чтобы видеть, что происходит в ядре при запуске системы или сейчас, например, вы вставили флешку и хотите понять, видит ли её система или нет, вы можете использовать утилиту dmesg (sudo dmesg -wH). Запустили команду, вставили флешку или любое другое устройство и тут, если всё нормально, вы увидите, как ядро распознаёт устройство. Но, как видите, у меня тут VboxClient постоянно сыпет ошибки, вроде как это какой-то баг с гостевыми дополнениями виртуалбокса. Как видите, dmesg показал мне проблему, я могу погуглить её и решить.

Ядро, при виде какого-нибудь оборудования или при необходимости работы с каким-нибудь программным функционалом загружает модуль автоматически. И хотя работать с этим вам придётся не так часто, вы должны иметь представление, как это работает и как это менять. Например, может быть требование, чтобы система игнорировала флешки, хотя по умолчанию вы вставили флешку и она работает.

показать ответы
10
Автор поста оценил этот комментарий
Иллюстрация к комментарию
показать ответы
0
Автор поста оценил этот комментарий
То есть поставив Линукс в чистом виде на систему, я не смогу ничего сделать, не смогу выполнить ни одной системной команды?
раскрыть ветку (1)
5
Автор поста оценил этот комментарий
Само по себе ядро ничего не даст. Его даже не получится отдельно установить, это просто одна программа. Типа нельзя ж вместо виндовса установить блокнот. И пусть даже ядро грузит устройства и т.п., но пользователи работают с прикладным по. Да и просто ядро само по себе не запустится, его должен запустить загрузчик, который тоже не является частью ядра. А потом ядро должно загрузить систему инициализации, которая грузит все что нужно пользователям. В общем то все, с чем работают пользователи - это GNU и прочий софт, который не является частью ядра. Ядро отвечает только за работу с устройствами, процессами, памятью, файловыми система и т.п.
показать ответы
20
Автор поста оценил этот комментарий

Мы с вами частично знакомы с некоторым функционалом ядра – оно отвечает за time sharing, управление процессами, их приоритетами и т.п, также управление памятью – та же виртуальная память, swap и всё что с этим связано, ну и из недавнего – отвечает за проверку прав на файлы - каким пользователям к каким файлам есть доступ. Это далеко не всё, что-то мы еще будем разбирать по мере изучения, но пока давайте разберём, что из себя представляет ядро и что администратору с ним делать.


Для начала – ядро это программа. В отличии от других программ, оно лежит в директории /boot и называется vmlinuz (ls /boot). Почему оно лежит здесь и что это за другие файлы – это касается вопроса загрузки операционной системы, что мы будем разбирать в другой раз. Как вы видите, тут несколько файлов с названием vmlinuz и они отличаются версиями. Когда мы обновили систему, у нас появилась новая версия ядра, но старая не удалилась – на случай если с новым ядром будут проблемы, всегда можно загрузиться со старого. Версию ядра, которую мы сейчас используем, можно увидеть с помощью команды uname -r. Давайте посмотрим, сколько же весит ядро, для этого воспользуемся утилитой du, которая показывает размеры файлов, с ключом -h – чтобы отображалось не в килобайтах, а в более удобном для чтения виде (du -h /boot/vmlinuz-*). Как видите, ядро весит почти 8 мегабайт. На самом деле, буква z в слове vmlinuz говорит о том, что ядро сжато. То есть, фактически оно весит чуть больше.


Возможно, вы знаете – ядро Linux используется везде – Андроид смартфоны, коих больше 3 миллиардов, работают на Linux; огромное количество сетевого оборудования, серверов, всяких медиабоксов, умных телевизоров, холодильников, машин, да даже бортовые компьютеры Space X – всё это работает на Linux. Это огромное количество разнообразного оборудования, которое должно поддерживать ядро. Поэтому в разработке ядра участвуют тысячи крупнейших компаний и специалистов. И всё ради 8 мегабайтного файла? Конечно нет. В этом файле только основной функционал, необходимый для работы – работа с памятью, управление процессами и т.п. Когда же ядру нужен дополнительный функционал – допустим, чтобы работать с сетевым адаптером, видеокартой или другим оборудованием – ядро обращается к специальным файлам, называемым модулями. В модулях хранится код, необходимый для работы с оборудованием или программный функционал – допустим, драйвер для видеокарты или программа для шифрования. Обычно это происходит незаметно для пользователя – вы вставили флешку, а ядро загрузило модуль для работы с юсб флешками, а также модуль для работы с файловой системой на этой флешке. На других операционных системах это может работать по другому – есть различные архитектуры ядер операционных систем. У Linux архитектура модульная – то есть какой-то функционал вынесен в модули и подгружается по необходимости. Также Linux называют монолитным – потому что всё что делает ядро происходит в рамках одной программы – а правильнее сказать – все части ядра работают в одном адресном пространстве. Помните, мы обсуждали, что это такое, когда говорили о процессах? Но так как у Linux-а огромный функционал, который бессмысленно держать одновременно в памяти – поэтому функционал вынесен в модули, засчёт чего ускоряется работа ядра.


Так вот, модули ядра хранятся в директории /lib/modules/ (ls /lib/modules) , где есть директории для каждой версии установленного ядра. Зайдём в директорию текущего ядра (cd /lib/modules/$(uname -r); ls ) и посмотрим файл modules.alias (nano modules.alias). Тут перечислено – для каких устройств какие модули грузить в ядро.


В отличии от Windows, где вы ставите систему, а потом доустанавливаются драйвера, в Linux большинство драйверов уже предустановлены в виде модулей, благодаря тому, что производители оборудования сотрудничают с разработчиками ядра и предоставляют открытый исходный код драйверов на оборудование. Но, естественно, далеко не все производители предоставляют исходный код своих драйверов, из-за чего что-то может не работать из коробки – зачастую это касается драйверов на wi-fi. Иногда, допустим, в случае с драйверами на видеокарты Nvidia, находятся энтузиасты, которые с помощью реверс инжиниринга создают свободные драйвера – т.е. берут драйвер с закрытым исходным кодом, изучают его с помощью специальных программ и методик и стараются воссоздать этот драйвер. Для видеокарт nvidia таким образом создан драйвер nouveau. Зачастую это работает – естественно без каких-либо гарантий, потому что драйвер написан не самим производителем. При этом сам производитель – тот же Nvidia, также предоставляет свой драйвер в виде модуля, но уже с закрытым исходным кодом, т.е. проприетарный, поэтому он не бывает включён в ядро по умолчанию, из-за чего нужно самому доустанавить этот модуль. К примеру, после установки Centos на Virtualbox, мы с вами установили гостевые дополнения Virtualbox вручную именно потому, что они не под лицензией GPL, хотя сам Virtualbox имеет открытый исходный код с лицензией GPL. Всё это к тому, что если вы поставили Linux и у вас что-то не работает, допустим, wifi, то, скорее всего, производитель wifi адаптера не открыл исходный код своих драйверов и вам придётся искать нужный драйвер на сайте производителя, либо погуглить. Однако, некоторые юзер-френдли дистрибутивы, допустим Ubuntu, делают это за вас – после того, как вы установите Ubuntu, система найдёт нужные проприетарные драйвера и предложит вам их установить, что удобно для новичков.


Возвращаясь к нашему файлу, во втором столбике у нас перечислены идентификаторы оборудования – так называемые hardware id. Возьмём для примера radeon (ctrl+w – radeon – enter) – это видеокарты от AMD. Чтобы было удобнее, откроем сайт devicehunt.com – где мы можем увидеть информацию о вендорах и оборудовании. Так вот, если ядро видит, что к pci шине подключено устройство, у которого vendor id – 1002, а device id – 99A4 – то ядро знает, что для этого устройства нужен модуль с названием radeon. Тут могут быть еще версии какого-то оборудования, классы и подклассы – но нам это сейчас не особо важно. Если вам интересно, что означают все эти обозначения, ссылка в описании (http://people.skolelinux.org/pere/blog/Modalias_strings___a_...) . Сам этот файл не статичный, он генерируется от информации из самих модулей. Чтобы увидеть информацию о каком-нибудь модуле, можно использовать команду modinfo – допустим, modinfo radeon (modinfo radeon | less). Тут мы видим расположение и имя файла, причём у всех модулей расширение .ko, ну и .xz в конце означает, что модуль в сжатом виде. Также лицензия, автор, описание. И чуть ниже у нас alias-ы – собственно на основе этого и генерируется файл, который мы смотрели. Ну и чуть ниже – параметры – функционал оборудования на уровне драйвера. Допустим – audio – будет ли у нас видеокарта работать со звуком через тот же hdmi.


Так вот, недавно мы узнали о виртуальной файловой системе procfs (ls /proc), через которую ядро нам показывает информацию о процессах. А для структурированной информации об устройствах и драйверах есть виртуальная файловая система sysfs, доступная в директории /sys (ls /sys; ls /sys/bus/pci/device/00*). И хотя тут куча файлов, через которые можно увидеть очень много информации, сидеть и копаться в этих файлах не всегда удобно и есть утилиты, которые показывают эту же информацию, в более компактном и простом виде. Например, lscpu – показывает информацию о процессоре, lspci – показывает информацию об устройствах, подключенных на pci шину, lsusb – устройства, подключенные к usb. Для более подробной информации вы можете использовать lshw, а из графических утилит, есть, например, hardinfo. Чтобы видеть, что происходит в ядре при запуске системы или сейчас, например, вы вставили флешку и хотите понять, видит ли её система или нет, вы можете использовать утилиту dmesg (sudo dmesg -wH). Запустили команду, вставили флешку или любое другое устройство и тут, если всё нормально, вы увидите, как ядро распознаёт устройство. Но, как видите, у меня тут VboxClient постоянно сыпет ошибки, вроде как это какой-то баг с гостевыми дополнениями виртуалбокса. Как видите, dmesg показал мне проблему, я могу погуглить её и решить.

Ядро, при виде какого-нибудь оборудования или при необходимости работы с каким-нибудь программным функционалом загружает модуль автоматически. И хотя работать с этим вам придётся не так часто, вы должны иметь представление, как это работает и как это менять. Например, может быть требование, чтобы система игнорировала флешки, хотя по умолчанию вы вставили флешку и она работает.

раскрыть ветку (1)
8
Автор поста оценил этот комментарий

И так, для управления модулями в ядре используется утилита modprobe. Допустим, если хотим загрузить модуль radeon, пишем sudo modprobe radeon. Увидеть можем с помощью утилиты lsmod, которая показывает загруженные модули (lsmod | grep radeon). Одни модули могут работать с другими и сами могут использоваться какими-то процессами. Например, чтобы выгрузить модуль из ядра, можно использовать тот же modprobe с ключом -r (sudo modprobe -r radeon). Этот модуль не использовался, поэтому мне получилось с легкостью его выгрузить. Но есть модуль, допустим, vboxguest, который используется и убрать его с помощью modprobe не получится (sudo modprobe -r vboxguest). Предварительно нужно избавиться от процессов, которые используют этот модуль. Например, чтобы выгрузить драйвер видеокарты, вам нужно будет предварительно завершить все приложения, использующие графический интерфейс.

Так вот, возвращаясь к теме про автоматическую загрузку модулей. В системе есть программа, называемая udev – именно она отвечает за управление устройствами. И когда ядро видит новое устройство, оно создаёт событие, которое отслеживает udev. У udev есть большое количество правил (ls /usr/lib/udev/rules.d/), которые оно применяет при виде того или иного события. Например, udev видит в событии, что в usb подключено устройство, которое говорит что оно является накопителем – и у udev есть правило, которое говорит, что если видишь такое устройство – создай для него специальный файл в директории /dev с таким-то названием – допустим sdb. Этот файл ядро связывает с драйвером, работающим с оборудованием. Таким образом ваша флешка становится файлом, благодаря чему мы через этот файл можем взаимодействовать с устройством. Точно также можно в udev прописать, чтобы при виде usb устройства для него передавался специальный параметр, который бы запрещал устройству что либо делать. Углубляться в udev мы пока не будем, для начала хватит понимания, зачем он вообще нужен.


Некоторые модули можно скомпилировать в ядро – тогда отпадает необходимость загружать модули из файлов, но это увеличивает размер ядра. Такие модули называются встроенными и их список можно увидеть в файле modules.builtin (cat /lib/modules/$(uname -r)/moduiles.builtin ). А те модули, которые загружаются при необходимости – и которые можно, теоретически, выгрузить, называются загружаемыми. Встроенные же модули выгрузить из ядра не получится. Иногда может понадобится, чтобы загружаемые модули загружались всегда при включении компьютера. Для этого нужно создать файл в директории /etc/modules-load.d/ c .conf в конце имени, допустим, radeon.conf (nano /etc/modules-load.d/radeon.conf), где вписываем название модуля, которые мы хотели бы загружать в ядро при включении. И теперь после перезагрузки этот модуль загрузится.

Если же нам нужно, чтобы какой-то определённый модуль не загружался при включении, или загружался с определёнными параметрами – теми параметрами, которые мы видели с modinfo (modinfo radeon), то для этого нужно создать файл в директории /etc/modprobe.d тоже заканчивающийся на .conf (nano /etc/modprobe.d/kvm.conf). Тут у нас есть закомментированные примеры. Чуть подробнее об этом можно почитать на арчвики (https://wiki.archlinux.org/index.php/Kernel_module_(Русский))


Надеюсь у вас сложилось представление, что же есть ядро. Это далеко не весь функционал ядра, я его и не смогу полностью рассмотреть, но теперь вы немного знаете про само ядро, про его модули, про драйвера и устройства, в том числе udev, который позволит вам более гибко настраивать работу системы с устройствами и директорию dev, где у нас специальные файлы, с помощью которых мы сможем работать с различным оборудованием. Если у вас есть какие-то вопросы, пишите в комментариях, я постараюсь на них ответить.

6
Автор поста оценил этот комментарий
СТОП СЕРЬЁЗНО? ЭТО В ГОРЯЧЕМ? Чувак ну я тебя поздравляю, ты один из немногих, кого плюсят за посты про технологии(софтвер в том числе), скоро выпущу "месяц с chrome os" - скорее всего будет +3 или -5 рейтинг 1000%
раскрыть ветку (1)
5
Автор поста оценил этот комментарий
Ну все мои первые посты тоже минусили. Если пост оформить красиво и выложить в нужное сообщество, то есть шанс, что попадет в горячее.
Конечно, есть на пикабу такой рандом, что один и тот же пост могут утопить в плюсах и минусах.
показать ответы
8
Автор поста оценил этот комментарий

Я зашел сказать что не понимаю за что любят vim/vi т.к если человек гуглит как выйти из редактора, значит интерфейс в нем ультра-хуевый, при том что он консольный. Сам пользуюсь nano, но вообще редактирование конфигов через консоль то еще извращение.

раскрыть ветку (1)
6
Автор поста оценил этот комментарий
Не соглашусь с вами. Да, для меня почти всегда достаточно функционала nano, но все дело в мышечной памяти. Представьте себе игрушечный синтезатор, который играет мелодию по нажатию на одну кнопку и какой-нибудь рояль. Если дать неопытному поиграть на обоих инструментах, то у него лучше получится на синтезаторе. А вот стоит человеку стать профи, натренироваться работать - то к игрушке больше не притронутся.
А насчет редактирования конфигов через нано совсем странно, если речь не про оркестрацию тысячи серверов, то гораздо легче по ssh подрубиться, подправить конфиг и перезапустить сервис, чем использовать какой-нибудь ide/winscp, чтобы редачить файлы и отдельно ssh чтобы управлять сервером. Я даже и без конфигов, на десктопе, зачастую для всякого текста предпочитаю nano.
показать ответы
Автор поста оценил этот комментарий

Когда начнёшь заварачивать трафик с openvpn в obfs4proxy и направлять ноду в Тор, тогда плюсанут, но для этого ещё еьизусен стек TCP/ip

раскрыть ветку (1)
3
Автор поста оценил этот комментарий
После азов я скорее всего продолжу делать курс, уже про нормальное администрирование, включая всякие сервисы типа веб серверов, днс и прочее. И как бы с одной стороны если я начну объяснять TCP/IP , то я даже без понятия, сколько это займет. Если же я не буду объяснять, а предложу посмотреть другие курсы, то, предполагаю, что будут пробелы. Даже у опытных админов я часто вижу большие пробелы в сетях, многие даже понятие гейтвей понимают не до конца. Так что про сети вообще хз, делать ли небольшой курс по сетям для админов, для перехода от азов до нормального администрирования? Хотя с небольшим курсом у людей потом будут пробелы, которые сильно сказываются на понимании принципов работы. Не знаю как быть, крч.
показать ответы
1
Автор поста оценил этот комментарий

Не везде есть нано по дефолту, и не везде его можно быстро установить, проще потратить полчаса чтобы выучить несколько команд вим и пользоваться только им.

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

эээх, измельчал народ. Раньше были войны vi против emacs, сейчас nano против vim, что дальше - блокнот против gedit?
шучу, всё норм, каждый пользуется тем, чем ему удобно

показать ответы
0
Автор поста оценил этот комментарий

Ядро чего?

раскрыть ветку (1)
2
Автор поста оценил этот комментарий
ядро операционной системы
показать ответы
0
Автор поста оценил этот комментарий

В общем, /etc/initrd.mk у меня нет...

Нашел статью по добавлению сата в старый инитрд: https://www.opennet.ru/base/sys/sata_install.txt.html

Но у меня проблема, не могу изменить в файлах смонтированного в папку initrd. Пишет read-only

монтируем рамдиск в каталог 1

# mount -o loop initrd-2.4.22-1.2154.nptl.asp.img 1


как дать права на редактирование смонтированного образа? все делаю через рут, все равно не дает(

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

а какие права на сам файл? mount -o loop,rw initrd-2.4.22-1.2154.nptl.asp.img 1 что говорит?

показать ответы
0
Автор поста оценил этот комментарий
Это экран, на котором все валится.
Иллюстрация к комментарию
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Странно, судя по модулям, которые он загружает, там есть ide, и я не вижу загрузки модуля scsi. Возможно в initrd нет этого модуля, из-за чего не получается использовать устройство.

Вы пробовали оставить параметр root как hda1 ? Возможно диск опознаётся ядром как hda (хотя не факт).

Еще вариант добавить модуль scsi_mod и пересгенерировать initrd. Вот гайд как это сделать https://nixtux.ru/208 , только он добавляет MODULES_PRELOAD+=crc32c, а вам нужно MODULES_PRELOAD+=scsi_mod
ядро старое, модуль вроде должен быть, но на всякий случай проверьте, чтобы при генерации не было ошибок на модуль

показать ответы
0
Автор поста оценил этот комментарий

disk=/dev/hda (меняю на sda)

bios=0x80

compact # faster, but won't work on all systems.

boot=/dev/hda (тут тоже меняю на sda)

#install=/boot/boot.b

#install=/boot/boot-bmp.b

#message=/boot/splash/message

prompt

delay=10

timeout=10

#default=HDD

default=Flash

vga=normal

# 640x480 (64k)

#vga=0x0311

image=/boot/vmlinuz-2.6.12-std26-up-alt10

initrd=/boot/initrd-2.6.12-std26-up-alt10.img

label=l-start

root=/dev/hda1 (меняю на sda1)

read-only

optional

append="panic=5 splash=silent rootflags=data=journal"

#image=/boot/vmlinuz-2.6.12-std26-up-alt10

# initrd=/boot/initrd-2.6.12-std26-up-alt10.img

# label=Flash

# root=/dev/hdc1

# read-only

# optional

# append="panic=5 splash=silent rootflags=data=journal"


Пробовал указывать диск sdb, но все то же самое(


После изменений обязательно lilo.


Делал еще через chroot с liveCD

mount /dev/sda1 /mnt

mount -t proc proc /mnt/proc

mount -t sysfs sys /mnt/sys

mount -o bind /dev /mnt/dev

чрутимся в примонтированный раздел

chroot /mnt /bin/bash

инсталим lilo

/sbin/lilo

размонтируемся

umount /mnt/proc

umount /mnt/sys

umount /mnt/dev

umount /mnt/

reboot

Но, снова при загрузке пишет VFS: Cannot open root device «801» (раньше было 301)
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

и sda1 точно корень?

mount /dev/sda1 /mnt

ls /mnt

0
Автор поста оценил этот комментарий

disk=/dev/hda (меняю на sda)

bios=0x80

compact # faster, but won't work on all systems.

boot=/dev/hda (тут тоже меняю на sda)

#install=/boot/boot.b

#install=/boot/boot-bmp.b

#message=/boot/splash/message

prompt

delay=10

timeout=10

#default=HDD

default=Flash

vga=normal

# 640x480 (64k)

#vga=0x0311

image=/boot/vmlinuz-2.6.12-std26-up-alt10

initrd=/boot/initrd-2.6.12-std26-up-alt10.img

label=l-start

root=/dev/hda1 (меняю на sda1)

read-only

optional

append="panic=5 splash=silent rootflags=data=journal"

#image=/boot/vmlinuz-2.6.12-std26-up-alt10

# initrd=/boot/initrd-2.6.12-std26-up-alt10.img

# label=Flash

# root=/dev/hdc1

# read-only

# optional

# append="panic=5 splash=silent rootflags=data=journal"


Пробовал указывать диск sdb, но все то же самое(


После изменений обязательно lilo.


Делал еще через chroot с liveCD

mount /dev/sda1 /mnt

mount -t proc proc /mnt/proc

mount -t sysfs sys /mnt/sys

mount -o bind /dev /mnt/dev

чрутимся в примонтированный раздел

chroot /mnt /bin/bash

инсталим lilo

/sbin/lilo

размонтируемся

umount /mnt/proc

umount /mnt/sys

umount /mnt/dev

umount /mnt/

reboot

Но, снова при загрузке пишет VFS: Cannot open root device «801» (раньше было 301)
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

а покажите ls /boot

показать ответы
0
Автор поста оценил этот комментарий

Думаю, неплохо бы людям узнать, как сделать бекап работающей системы и восстановление из него, перенос системы на другой диск / машину.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Эту тему я тоже затрону, но пока еще много тем перед бэкапами
0
Автор поста оценил этот комментарий
Ох, дружище, прости конечно, но выкинь ты из головы эту мантру про «высоконагруженную среду».
Посмотреть как оно себя ведёт в случае «повыдергивать диски» можно за пару тысяч рублей, раскатив в облаке пяток виртуалок, но правда в том, что скорее всего реально хайлоада в твоей работе не будет примерно никогда и дожидаться этого смысла большого нет. Хочется - разверни да потыкай.
А вообще - начинай с малого.
P.S. У меня есть кластер ceph на 10 машин. Нормально он переживает, никакой магии особой там нет. Но стоит помнить, что на доскональное изучение ceph нужно положить или жизнь, или хуй.
P.P.S. На практике работал с системами хранения на сотни машин, реальным хайлоадом, облаками, кубиком и хрен его знает ещё с чем, а начинал когда то вообще bsd админом.
Так вот, в подавляющем большинстве случаев реального хайлоада нет нигде. Есть вопросы оптимизации и умеренно-нагружённые системы. И практическая польза от работы с реальным хайлоадом будет только в другом хайлоаде. И то, если со стеком повезёт и он будет хотя бы схож.
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Ну, обычно всё умеренно нагруженно, да. Но скажем в городе с датацентром блэкаут, трафик прыгает на ДР, пик трафика и, допустим, ложаться  какие-то диски. То есть стрессовая ситуация. Просто любопытно.


Ну, у нас да, но хотелось  бы посмотреть на инфраструктуру компании уровня хотя бы яндекса, а то и гугла. Хотя, наверняка в инете можно  найти  информацию.

показать ответы
0
Автор поста оценил этот комментарий
Держу цеф и проксмокс на 3 серверах + 2 аппликейшен ноды отлично верятся уже года 3. Огромный плюс это живая миграция вм. А насчет основ оси и тспайпи есть книжка циско icnd1-2 и клевый курс сети для самых маленьких
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Ну не в обиду, под реальным продом я подразумевал хотя бы серваков 20-30, какую-нибудь высоконагруженную среду. Уверен на ~10 серверах всё это будет хорошо, а вот  как себя ведут кластерные фс при больших объёмах данных и больших нагрузках? вот прям  повыдёргивать  диски, сервера и увидеть, что всё в порядке, посмотреть перестройку нагрузок и т.п.

Да, знаю, про сети вообще теории, возможно, больше, чем про ОС, но типа сказать "идите читайте такие то книжки, потом сможете понять".. ну не знаю. Возможно и сам какие-то основы для админов покажу, а для подробностей предложу почитать какие-нибудь курсы.

показать ответы
Автор поста оценил этот комментарий

Я конечно сейчас могу быть нубом и лжецом, но само ядро, если есть эфи бут, вполне грузится. Просто кидаешь в эфи, ставишь нужные конфиги и без всякого гроба, сюсьтемдэ и лило работает.

https://wiki.gentoo.org/wiki/EFI_stub_kernel

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Тут опять же есть загрузчик ядра, просто это не через grub, а через сам efi.

показать ответы
1
Автор поста оценил этот комментарий
Если для бытовых нужд интересуешься, то через полгода напишешь пост с матюками, все так делают. *Зевнул.
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Ну, я начинал с бытовых "нужд", просто было любопытно, новая ОС, другой графический интерфейс, куча настроек, интересно же! Где-то года 2 игрался со всякими DE. Потом уже познакомился с IT и узнал, что GNU/Linux это прям must have. Правда не то, с чем я игрался, но какой-то навык приобрёл. Чему только не научишься, если будешь 3 дня решить проблемку "как же сделать, чтобы панелька была не такая, а сякая".

Эт я к тому, что кому-то красноглазить в удовольствие

0
Автор поста оценил этот комментарий

Автор, моё тебе увожение и огромное спасибо. Ты делаешь действительно полезный цикл материала, который ещё и подан талантливо. Жалко, что на пикабу нельзя донатить рейтинг, я бы тебе половину своего отсыпал)

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Спасибо, я правда надеюсь, что мой материал кому-то полезен)

показать ответы
0
Автор поста оценил этот комментарий
Попробую.
А можно собрать initrd не из примонтированного образа, а из папки?
Я копировал содержимое инита в папку, тут с правами все норм.
Теперь бы из этой папки сделать img и сжать ганзипом.
Какими средствами можно собрать img?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Там по ссылке последние команды, зависимо от xz/gz

find . 2>/dev/null | cpio -o -c -R root:root | xz -9 --format=lzma > /boot/new.img
0
Автор поста оценил этот комментарий
Иллюстрация к комментарию
Иллюстрация к комментарию
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Как насчет распаковать и заново собрать?

https://access.redhat.com/solutions/24029
показать ответы
0
Автор поста оценил этот комментарий
Это уже в понедельник( я обязательно напишу))
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
хорошо)
показать ответы
0
Автор поста оценил этот комментарий

Доброго дня. Извиняюсь за офтоп. Помогите, пожалуйста, разобраться с загрузчиком LILO.
Вкратце: есть образ системы альт-линукс. Система стояла на флеш-накопителе CF (PATA), теперь нужно перенести на интерфейс Sata. Все делаю по мануалу LILO и форумам, но на выходе у меня получается:
VFS: Cannot open root device "301" or unknown-block(3,1)

Please append a correct "root"=boot option

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(3,1)


раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Добрый день,

Можете показать lilo.conf ? Выполнили команду lilo после редактирования файла?

показать ответы
0
Автор поста оценил этот комментарий
Уважаемый, не могли бы вы оказать консультацию, может даже платную?

Дело в следующем : посыпался смарт на одном из жёстких дисков в сетевом хранилище dns325

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

Что делать, куда копать, непонятно совсем. Был бы благодарен за информацию.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Здравствуйте
Видна ли таблица разделов? fdisk -l показывает разделы на этом диске? Если да, видны ли на них файловые системы? Можно ли эти файловые системы примонтировать? Если видны, но не получается примонтировать, попытайтесь проверить на наличие проблем с файловой системой (e2fsck).
Также, посмотрите утилиту testdisk. Поможет вам восстановить файлы, если с файловой системой всё плохо

показать ответы
0
Автор поста оценил этот комментарий
Найти можно. Пишут ребята. Я видел изнутри.
Основана идея хайлоада в том, чтобы на конечном оборудовании его небыло. Это вопрос масштабирования, а не превозмогания.
А так ничего особенного, просто если неправильно рассчитано и есть пиковая нагрузка на каком то компоненте системы, то это просто закономерно приведёт к пиздецу, а дальше уже вопрос что именно этот пиздец зацепит. Сложные системы и разваливаются сложно и разнообразно, просто посмотреть туда ничего не даст, надо именно полноценно эксплуатацией заниматься. Но, знания все равно будут специфичны системе, кроме самых общих, которые наберутся по ходу изучения различных компонентов вроде особенностей сетевого стека, поведения при oom и т.д. Если интересно - читай разборы про факапы больших систем, оттуда можно подчеркнуть полезное.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Факапы - самый сок, люблю эту тему
0
Автор поста оценил этот комментарий

просто сложно ломать клише: "линукс это консоль и сложно, и этим занимаются только красноглазые гики"
а по факту от установки до приятного пользования все в разы проще чем окна Х

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

просто люди не знают про https://www.reddit.com/r/unixporn

Автор поста оценил этот комментарий

Как хочешь, тред твой) я щас занимаюсь другим мне щас ceph storage интересен

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
интересная тема, хотелось бы пощупать на реальном проде, но тут пока это не популярно
показать ответы