Когда дело доходит до любой операционной системы Linux, включая Ubuntu, люди склонны различать термины ядро и операционная система . Это верно для Windows и семейства OS X, но почему это так широко распространено среди Linux-сообщества? Есть ли способ обновить ядро ОС, не обновляя саму ОС? Или наоборот? Если так, как это может быть полезно?
9
Ответы:
Вся система GNU / Linux построена с использованием модульного подхода. В основном вы можете обновить ( заменить в целом) один модуль, не касаясь других. Рассматриваемый модуль может быть загрузчиком, ядром, оболочкой, командой, средой рабочего стола, приложением с графическим интерфейсом, чем угодно ...
Конечно, это верно, если вы способны правильно управлять зависимостями. В наборе дистрибутивов вокруг Ubuntu APT используется для автоматического разрешения зависимостей.
Вы можете установить другую версию ядра, используя команду:
Пока APT позволяет это делать, вы должны иметь возможность перезагрузить и использовать выбранную версию ядра, будь то универсальная, низкая загрузка и т. Д. Или вы сами создаете версию ядра, например, Real-Time Linux , и используете ее с вашей текущей системой. ,
источник
/etc/issue
который предоставляетсяbase-files
пакетом. Как я уже писал, это не связано с версией ядра.Как вы знаете, ядро является важной частью ОС, в дистрибутивах GNU / Linux вы можете легко обновить ядро, не затрагивая другую часть ОС. Однако мы просто обновляем часть нашей ОС.
Операционная система состоит из двух частей, пространства ядра и пространства пользователя.
Так что да, вы можете обновить пространство ядра, не затрагивая пространство пользователя, если только новая версия совместима с вашим текущим пространством пользователя.
А по поводу обновления инструментов пользовательского пространства, это еще одно да.
Когда вы бежите:
Если для ядра было доступно обновление, вы получите:
так что вы обновляете только свое пространство пользователя и когда вы запускаете что-то вроде
Вы обновляете все, включая ядро.
Чтобы обновить только ваше ядро до более новой версии, используйте что-то вроде:
чтобы найти список более новых ядер, затем установите его как новый пакет, например:
источник
sudo apt upgrade
обновит ядро, если появятся новые версии.sudo apt full-upgrade
удалит задницу хорошо, чтоasudo apt upgrade
не сделаю.upgrade
подкоманды он не устанавливает никаких новых пакетов, а также не удаляет какие-либо пакеты, поэтому мы используем егоdist-upgrade
. по крайней мере, такapt-get
работает;) поэтому я обновил свои команды, чтобы избежать путаницы.apt
-командой, после небольшого исследования выясняется, что ваш ответ теперь правильный,apt
иapt-get
что-то не так, см. Hiroom2.com/2016/05/20/ubuntu-16-04-debian-8-apt -command / ... . Итак, некоторые знания для нас обоих ...Сначала несколько пояснений, потому что я чувствую, что вы не понимаете, как появились системы GNU / Linux. Потерпи меня, если для тебя в этом нет ничего нового:
«Ядро» - это не просто еще одна программа, которая запускается, а часть операционной системы, предоставляющая базовые функции: если вы хотите запустить программу (скажем, вы набираете «ls» в командной строке), бинарный файл должен быть загружен с диска (который включает в себя некоторые операции с файловой системой для его обнаружения и некоторую обработку файла для его чтения), затем создается «среда процесса»: выделяется память, выдается номер процесса и т. д. и т. д. Все предыдущие действия (FS, чтение из файла, ...) обрабатываются системными библиотеками, но последние являются функциями ядра. В каком-то смысле ядро «это ОС», а все остальное - просто украшение вокруг него.
«Linux» на самом деле (только!) Ядро без других частей ОС. Линус Торвальдс начал писать его, взяв ядро операционной системы шаблона MINIX Эндрю Таненбаумса и завершив его, чтобы оно было полноценным и реально работоспособным ядром. По сей день есть Линус (и многие другие, которые внесли / внесли свой вклад), которые развивают это ядро. Это ядро все еще очень похоже на UNIX, но НЕ ядро UNIX.
«GNU» начал как инициативу, чтобы «улучшить» многие общие команды UNIX. Я не буду обсуждать, преуспели они или нет, но они определенно написали много программного обеспечения и в какой-то момент имели набор служебных программ. Они даже начали разрабатывать собственное ядро ОС (HURD), которое было основано главным образом на UNIX, но определенно отличалось. Но по сей день HURD находится на ранней стадии разработки и вряд ли является рабочим решением. "GNU" между прочим сокращение от «GNU (is) Not UNIX» - они пытались преодолеть некоторые (предполагаемые или реальные) ограничения UNIX с целью создания преемника UNIX (опять же: я не хочу вступать в дискуссию, если они преуспели или нет - мне все равно, "лучше" или "хуже", но это определенно другое!).
Итак, с набором инструментов, в которых отсутствует ядро, и в ядре, в котором отсутствует набор инструментов, было естественным решением объединить эти два компонента: был создан GNU / Linux.
Тем не менее, чтобы иметь работающую (и работоспособную) ОС, вам нужно больше, чем просто ядро и набор инструментов: вам нужна система управления пакетами, вам нужны процедуры установки, вам нужны конфигурации шаблонов, вам нужно ....
Несколько разных людей (или их группы) пришли к такому выводу и использовали комбинацию GNU / Linux для создания системы GNU / Linux по своему вкусу, добавив в точности то, о чем я говорил выше: они создали менеджер пакетов, систему упаковки , процедуры установки и что еще. Эти разные группы (соответственно, результаты их усилий) являются тем, чем являются различные распределения. Сегодня существует три разных менеджера пакетов (подходящих для Debian и производных систем, таких как * ubuntu, rpm для RedHat и производных систем, таких как Fedora, CentOS и другие, pacman для ArchLinux), но все они просто управляют пакетами программного обеспечения, которое (по сути) то же самое: что вызывается, когда вы вводите "ls" или "df" и т. д.,
Таким образом, «в принципе» вы можете обновить ядро в одиночку, как это делали люди, создавшие дистрибутив из разных версий всего программного обеспечения, о котором я говорил выше.
Но, и это действительно большое НО: потому что есть не только ядро и некоторое дополнительное программное обеспечение, но и много других вещей, о которых нужно помнить, таких как инструменты конфигурации системы (systemd, который используют некоторые дистрибутивы, а некоторые нет), сеть инструменты управления, такие как NetworkManager, который, в свою очередь, зависит от некоторых версий библиотеки GNOME и т. д. и т. д. - «дистрибутив» - это довольно сложная вещь, и есть вероятность, что если вы попытаетесь обновить ядро, вы в итоге обновите много другие вещи из-за многих взаимозависимостей.
Тем не менее, а также «в принципе», как указано выше: вы также можете создать свой собственный дистрибутив, загрузив все исходные коды, скомпилировав их, найти рабочий набор комбинаций версий, установить некоторую систему упаковки (или использовать одну из существующих). ) - и так далее, пока у вас не будет распространяемой, устанавливаемой и настраиваемой системы. Это то, что делают создатели таких дистрибутивов, как Ubuntu, и это не чудо - просто много сложной работы, поэтому в действительности большинство пользователей избегают этого и используют то, что они могут, готовые к использованию.
Надеюсь, это ответит на ваш вопрос.
источник
Самый простой ответ не имеет ничего общего с Ubuntu; это связано со способом построения GNU / Linux. Если вы попытаетесь взглянуть на него как на разработчика системы, вы увидите два мира, каждый из которых разделен четкой границей (ABI).
Мир ядра, где работают низкоуровневые разработчики, - это система сама по себе. В нем есть все, что вы обычно найдете в обычном приложении. Разница лишь в том, что пользователь - это не тот человек, который пользуется машиной, а мир пользователя. Ядро «приложение» - это посредник, сервер, который использует машину - призрак в оболочке.
Теперь пространство пользователя - это нормальный мир, в который играют обычные пользователи и разработчики. Он имеет жесткие API, правила, файлы и, самое главное, абстрактный детский образ машины, на которой он работает. Поскольку пользователь видит только эту часть, а это составляет 99% от размера дистрибутива, легко назвать ее «Операционная система». Правильная номенклатура - называть это дистрибутивом программного обеспечения, созданным какой-либо сущностью (Canonical, Fedora и т. Д.), С использованием ядра (Linux, HURD, BSD и т. Д.) И построенным с использованием набора инструментов (обычно предоставляемых GNU). ).
Чтобы ответить на ваш вопрос, в GNU / Linux (точно так же, как в Windows и OSX, поверьте мне), вы можете изменить ядро, не только версию, но и всю архитектуру (ядро Linux, против ядра HURD) и до тех пор, пока ABI не затрагивается, никогда не вносите ни одного изменения в пользовательский мир ... В те времена, когда настоящему человеку приходилось собирать ядро из исходных текстов, вы могли бы выполнить несколько таких изменений, чтобы получить паршивую веб-камеру USB. чтобы работать ... Теперь, с модульным ядром, вам просто нужно установить модуль, и вы получите совершенно новый мир ядра, с ABI (иногда) расширенными новыми функциями ...
Опять же, то же самое для пользовательского пространства. Когда вы устанавливаете новое приложение, скажем, из репозитория Ubuntu, в 99% случаев вашей главной заботой является совместимость других компонентов пользовательского пространства, а не реального ядра. Есть случаи, когда версия ядра диктует (через ABI) диапазон вещей, которые можно установить в пользовательском пространстве, но цель (по крайней мере, для разработчиков) состоит в том, чтобы сделать это ...
Еще одна вещь для размышления: вы можете (и это довольно легко) создать свой собственный, уникальный в своем роде дистрибутив GNU / Linux. Получить ядро, несколько простых скриптов, несколько приложений, и все готово. Это так просто (взгляните на дистрибутивы OpenWRT GNU / Linux, для сетевого оборудования весь дистрибутив умещается примерно в 16 Мб или около того).
источник
Я думаю, что они хранятся отдельно, потому что ядро является важной частью. Ядро с регрессией или просто неудачное обновление может нанести довольно большой ущерб. Возможно, вы захотите обновить его реже; или только после некоторого ожидания, чтобы никто не сообщил о проблемах.
Также некоторые продвинутые или профессиональные пользователи перекомпилируют ядро, чтобы изменить его поведение в соответствии с их потребностями. В таком случае вы, очевидно, не захотите, чтобы он автоматически заменялся заводской версией при каждом обновлении.
источник