Почему операционная система и ядро ​​обрабатываются отдельно в Linux? [закрыто]

Вероятно, есть много способов сделать это. Мое предложение было бы открыть окно терминала alt + ctrl + t и ввести следующий код

cp -a /media/samba_disk_1/data/lrn /this/is/the/new/path/lrn

Это скопирует файлы в новый раздел, но не удалит старые файлы, чтобы вы могли убедитесь, что все вышло на место перед удалением диска.

9
задан 16 October 2017 в 10:08

20 ответов

Вся система GNU / Linux построена с использованием модульного подхода. Вы можете в основном обновить (заменить вообще) один модуль, не касаясь других. Этот модуль может быть загрузчиком, ядром, оболочкой, командой, рабочей средой, графическим интерфейсом, любым ...

Конечно, это правда, если вы можете правильно управлять зависимостями.

Вы можете установить другую версию ядра с помощью команды:

sudo apt install linux-image-<version>

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

12
ответ дан 22 May 2018 в 22:47
  • 1
    Большое спасибо, но будет ли это последовательным? Скажем, Ubuntu 14.04 LTS имеет версию ядра 3.19.0, а в случае обновления ядра это уже не 14.04 LTS, не так ли? Поэтому, если я попытаюсь обновить всю систему позже или встроенный механизм обновления (Software Updater) принесет мне новую версию, будет ли она знать обновленную версию ядра? Может ли он отдельно проверять модули и приносить только необходимые изменения без изменения уже обновленных модулей? – Aleksandr Medvedev 9 May 2017 в 19:47
  • 2
    См. packages.ubuntu.com/search?keywords=linux-image для long списка версий ядра, поддерживаемых каждой версией Ubuntu. Версия Ubuntu определяется разными вещами из версии ядра, но я не знаю, какие из них ... Если вас это интересует, вы можете начать другой вопрос. – Melebius 9 May 2017 в 21:47

Вся система GNU / Linux построена с использованием модульного подхода. Вы можете в основном обновить (заменить вообще) один модуль, не касаясь других. Этот модуль может быть загрузчиком, ядром, оболочкой, командой, рабочей средой, графическим интерфейсом, любым ...

Конечно, это правда, если вы можете правильно управлять зависимостями.

Вы можете установить другую версию ядра с помощью команды:

sudo apt install linux-image-<version>

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

12
ответ дан 18 July 2018 в 13:35

Вся система GNU / Linux построена с использованием модульного подхода. Вы можете в основном обновить (заменить вообще) один модуль, не касаясь других. Этот модуль может быть загрузчиком, ядром, оболочкой, командой, рабочей средой, графическим интерфейсом, любым ...

Конечно, это правда, если вы можете правильно управлять зависимостями.

Вы можете установить другую версию ядра с помощью команды:

sudo apt install linux-image-<version>

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

12
ответ дан 24 July 2018 в 20:13

Вся система GNU / Linux построена с использованием модульного подхода. Вы можете в основном обновить (заменить вообще) один модуль, не касаясь других. Этот модуль может быть загрузчиком, ядром, оболочкой, командой, рабочей средой, графическим интерфейсом, любым ...

Конечно, это правда, если вы можете правильно управлять зависимостями.

Вы можете установить другую версию ядра с помощью команды:

sudo apt install linux-image-<version>

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

12
ответ дан 31 July 2018 в 10:58

Как вы знаете, Kernel является важной частью ОС, в дистрибутивах GNU / Linux вы можете легко обновлять ядро, не касаясь другой части ОС. Однако мы просто обновляем часть нашей операционной системы.

Операционная система состоит из двух частей, пространства ядра и пространства пользователя.

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

И об обновлении инструментов пользовательского пространства, это еще один да.

Когда вы запускаете:

sudo apt-get upgrade

Если доступно обновление для ядра, вы получите:

The following packages have been kept back:
  linux-generic linux-headers-generic linux-image-generic

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

sudo apt-get dist-upgrade

вы обновляете все, включая ядро.

Чтобы обновить только ваше ядро ​​до более новой версии, используйте что-то вроде:

$ apt-cache search "linux-image-[0-9]+.*-generic" | awk '{print $1}' | head -4
linux-image-4.4.0-21-generic
linux-image-4.10.0-14-generic
linux-image-4.10.0-19-generic
linux-image-4.10.0-20-generic

, чтобы найти список новых ядер, затем установите это как новый пакет, например:

sudo apt install linux-image-4.10.0-14-generic
5
ответ дан 22 May 2018 в 22:47
  • 1
    Это определенно не так. – mook765 9 May 2017 в 12:23
  • 2
    Исправьте меня;), поэтому я узнаю что-то новое :) – Ravexina 9 May 2017 в 12:24
  • 3
    sudo apt upgrade также обновит ядро, если будут доступны новые версии. sudo apt full-upgrade удалит пакетики, что asudo apt upgrade не сделает. – Soren A 9 May 2017 в 12:26
  • 4
    Поскольку я сейчас обновляюсь до нового ядра, это какая-то установка, и при использовании подкоманды upgrade он не будет устанавливать какой-либо новый пакет и не удаляет какие-либо пакеты, поэтому мы используем dist-upgrade. по крайней мере, apt-get работает таким образом;), поэтому я обновил свои команды, чтобы предотвратить путаницу. – Ravexina 9 May 2017 в 12:29
  • 5
    Я более опытен с командой apt, после короткого исследования выясняется, что теперь ваш ответ правильный, apt и apt-get обрабатывают разные вещи, см. hiroom2.com/2016/05/20 / ubuntu-16-04-debian-8-apt-command / & hellip; . Итак, некоторые знания для нас обоих ... – mook765 9 May 2017 в 13:19

Во-первых, несколько пояснений, потому что я чувствую, что вы не понимаете, как появились системы GNU / Linux. Потерпите меня, если это для вас ничего нового:

«Ядро» - это не просто другая программа, которая работает, но она является частью ОС, обеспечивающей базовые функции: если вы хотите запустить программу ( скажем, вы вводите «ls» в командной строке) двоичный файл должен быть загружен с диска (который включает в себя некоторые операции с файловой системой, чтобы найти его и некоторую обработку файлов, чтобы его прочитать), затем создается «среда процесса»: память получает назначается, номер процесса выдается и т. д. и т. д. Все прежние действия (FS, чтение из файла, ...) обрабатываются системными библиотеками, но последние являются функциями ядра.

«Linux» на самом деле (только!) Ядро, в котором нет других частей ОС. Линус Торвальдс начал писать его, запустив ядро ​​OSM-шаблона Andrew Tanenbaums MINIX и завершив его, чтобы оно было полномасштабным и реальным работоспособным ядром. До сих пор есть Linus (и многие другие, кто внес вклад / внесли вклад), которые разрабатывают это ядро. Это ядро ​​по-прежнему очень похоже на UNIX, но не на ядро ​​UNIX.

«GNU» началось как инициатива «улучшить» многие общие команды UNIX. Я не буду обсуждать, удались они или нет, но они определенно написали много программного обеспечения и в какой-то момент имели набор служебных программ. Они даже начали разрабатывать собственное ядро ​​ОС (HURD), которое было основано в основном на UNIX, но было совершенно иным. Но по сей день HURD находится в раннем развитии и вряд ли является рабочим решением. «GNU» кстати. сокращен для «GNU (is) Not UNIX» - они пытались преодолеть некоторые (воспринимаемые или реальные) ограничения UNIX с намерением создать преемника UNIX (опять же: я не хочу входить в дискуссию, если они преуспели или [-d4]

Итак, с набором инструментов, в которых отсутствует ядро ​​и ядро, не имеющее инструментария, оно не имеет значения, если оно «лучше» или «хуже», но это определенно отличается!). было естественное развитие, чтобы объединить эти два: GNU / Linux был создан.

Тем не менее, для работы (и работоспособной) ОС вам нужно больше, чем просто ядро ​​и набор инструментов: вам нужна система управления пакетами , вам нужны процедуры установки, вам нужны шаблонные конфигурации, вам нужно ....

К этому выводу пришли несколько разных людей (или их группы) и использовали комбинацию GNU / Linux для создания GNU / Linux- по своему вкусу, добавив именно то, о чем я говорил выше: они создали диспетчер пакетов, систему упаковки, процедуры установки и многое другое. Эти разные группы (соответственно результаты их усилий) - это разные распределения. Сегодня есть три разных менеджера пакетов (подходящий для Debian и таких производных систем, как * ubuntu, rpm для RedHat и производных систем, таких как Fedora, CentOS и т. Д., Pacman для ArchLinux), но все это просто управляет пакетами программного обеспечения, которое (по существу) то же: то, что вызывается при выдаче «ls» или «df» и т. д. в системе Debian или RHEL-системе, происходит из разных пакетов, но по существу это GNU-версия «ls» - (" df "-), просто по-разному упакован.

Итак,« в принципе »вы можете обновлять ядро ​​самостоятельно, как люди, которые создали дистрибутив из разных версий всего программного обеспечения, о котором я говорил выше. [ ! d7]

Но это очень большой BUT: потому что есть не только ядро ​​и некоторое дополнительное программное обеспечение, но и многое другое, о чем нужно помнить, например, средства настройки системы (systemd, которые используются некоторыми дистрибутивами и некоторые нет), инструменты сетевого управления, такие как NetworkManager, которые, в свою очередь, зависят от некоторых версий библиотеки GNOME и т. д. и т. д. «Распределение» - довольно сложная вещь, и есть вероятность, что если вы попытаетесь обновить ядро, вы в конечном итоге обновите много других вещей из-за многих взаимозависимостей.

Тем не менее, в принципе ", как и выше: вы также можете создать свой собственный дистрибутив, загрузив все источники, скомпилировав их, найди рабочий набор комбинаций версий, разместите какую-нибудь систему упаковки (или используйте одну из существующих) - и так далее , пока у вас нет распространяемой, устанавливаемой и настраиваемой системы. Это то, что создатели дистрибутивов, такие как Ubuntu, и это не чудо - просто много сложной работы, поэтому на самом деле большинство пользователей уклоняются от этого и используют что-то, что могут, готовые к использованию.

I надеюсь, что это ответит на ваш вопрос.

3
ответ дан 22 May 2018 в 22:47
  • 1
    GNU не начинала как инициатива «лучше делать». многие общие команды UNIX. GNU была операционной системой с самого начала, для свободного программного обеспечения в ответ на UNIX, являющийся ограничительной собственностью. Вы можете узнать больше с своего сайта . Они решили перенести все свое программное обеспечение на Linux, потому что к моменту создания Linux у GNU все еще не было рабочего ядра. – Ian Emnace 9 May 2017 в 19:15

Самый простой ответ не имеет ничего общего с Ubuntu; это связано с тем, как построен GNU / Linux. Если вы попытаетесь рассмотреть его как разработчика системы, вы увидите два мира, каждый из которых отделен острой границей (ABI).

Мир ядра, в котором работают разработчики низкого уровня, представляет собой систему самостоятельно. В нем есть все, что вы обычно найдете в обычном приложении. Единственное различие заключается в том, что пользователь не является фактическим человеком, который использует машину, но мир пространства пользователя. Ядро «приложение» является средним человеком, сервером, использующим машину, - призраком в оболочке.

Теперь пользовательское пространство - это нормальный мир, который играет повседневный пользователь и разработчик на. Он имеет жесткие API, правила, файлы и, самое главное, абстрактное, детское изображение машины, на которой он работает. Так как пользователь видит эту часть, и это составляет 99% от размера дистрибутива, ее легко назвать неверной. Правильная номенклатура - называть ее дистрибутивом программного обеспечения, созданным каким-то сущностью (Canonical, Fedora и т. Д.), Используя ядро ​​(Linux, HURD, BSD и т. Д.) И созданное с использованием набора инструментов (обычно предоставляемых GNU ).

Чтобы ответить на ваш вопрос, в GNU / Linux (как и в Windows и OSX, поверьте мне), вы можете изменить ядро, а не только версию, но всю архитектуру (Linux Kernel, vs HURD Kernel), и, пока ABI не тронут, никогда не делайте ни одного изменения в пользовательском мире ... В тот же день, когда реальному человеку пришлось строить ядро ​​из источников, вы могли бы пройти несколько изменений например, для того, чтобы заставить испорченный веб-камеру USB работать ... Теперь, с модульным ядром, вам просто нужно установить модуль, и вы получите совершенно новый мир ядра, с ABI (иногда) с новыми функциями ...

Опять же, для пользовательского пространства. Когда вы устанавливаете новое приложение, например, из репозитория Ubuntu, в 99% случаев, ваша самая большая проблема связана с совместимостью других компонентов пользовательского пространства, а не с реальным ядром. Бывают случаи, когда версия ядра диктует (через ABI) диапазон вещей, которые могут быть установлены в пользовательском пространстве, но цель (для разработчиков, по крайней мере) состоит в том, чтобы это уйти ...

Еще одна вещь, которую нужно обдумать, вы можете (и это довольно легко) создать собственный, специальный, единственный в своем роде дистрибутив GNU / Linux. Получите ядро, несколько простых скриптов, несколько приложений, и вы настроены. Это просто так (ознакомьтесь с дистрибутивами OpenWRT GNU / Linux, для сетевого оборудования, весь дистрибутив соответствует 16 Мб или около того).

3
ответ дан 22 May 2018 в 22:47
  • 1
    «острая граница (ABI)». Я думаю, вы имеете в виду API. ABI является, по причине отсутствия лучшего термина, кодом для аппаратного интерфейса. API, с другой стороны, представляет собой код для кода. – Sam 9 May 2017 в 18:47

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

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

1
ответ дан 22 May 2018 в 22:47

Во-первых, несколько пояснений, потому что я чувствую, что вы не понимаете, как появились системы GNU / Linux. Потерпите меня, если это для вас ничего нового:

«Ядро» - это не просто другая программа, которая работает, но она является частью ОС, обеспечивающей базовые функции: если вы хотите запустить программу ( скажем, вы вводите «ls» в командной строке), двоичный файл должен быть загружен с диска (который включает в себя некоторые операции с файловой системой, чтобы найти его и некоторую обработку файлов, чтобы его прочитать), затем создается «среда процесса»: память получает назначается, номер процесса выдается и т. д. и т. д. Все прежние действия (FS, чтение из файла, ...) обрабатываются системными библиотеками, но последние являются функциями ядра.

«Linux» на самом деле (только!) Ядро, в котором нет других частей ОС. Линус Торвальдс начал писать его, запустив ядро ​​OSM-шаблона Andrew Tanenbaums MINIX и завершив его, чтобы оно было полномасштабным и реальным работоспособным ядром. До сих пор есть Linus (и многие другие, кто внес вклад / внесли вклад), которые разрабатывают это ядро. Это ядро ​​по-прежнему очень похоже на UNIX, но не на ядро ​​UNIX.

«GNU» началось как инициатива «улучшить» многие общие команды UNIX. Я не буду обсуждать, удались они или нет, но они определенно написали много программного обеспечения и в какой-то момент имели набор служебных программ. Они даже начали разрабатывать собственное ядро ​​ОС (HURD), которое было основано в основном на UNIX, но было совершенно иным. Но по сей день HURD находится в раннем развитии и вряд ли является рабочим решением. «GNU» кстати. сокращен для «GNU (is) Not UNIX» - они пытались преодолеть некоторые (воспринимаемые или реальные) ограничения UNIX с намерением создать преемника UNIX (опять же: я не хочу входить в дискуссию, если они преуспели или [-d4]

Итак, с набором инструментов, в которых отсутствует ядро ​​и ядро, не имеющее инструментария, оно не имеет значения, если оно «лучше» или «хуже», но это определенно отличается!). было естественное развитие, чтобы объединить эти два: GNU / Linux был создан.

Тем не менее, для работы (и работоспособной) ОС вам нужно больше, чем просто ядро ​​и набор инструментов: вам нужна система управления пакетами , вам нужны процедуры установки, вам нужны шаблонные конфигурации, вам нужно ....

К этому выводу пришли несколько разных людей (или их группы) и использовали комбинацию GNU / Linux для создания GNU / Linux- по своему вкусу, добавив именно то, о чем я говорил выше: они создали диспетчер пакетов, систему упаковки, процедуры установки и многое другое. Эти разные группы (соответственно результаты их усилий) - это разные распределения. Сегодня есть три разных менеджера пакетов (подходящий для Debian и таких производных систем, как * ubuntu, rpm для RedHat и производных систем, таких как Fedora, CentOS и т. Д., Pacman для ArchLinux), но все это просто управляет пакетами программного обеспечения, которое (по существу) то же: то, что вызывается при выдаче «ls» или «df» и т. д. в системе Debian или RHEL-системе, происходит из разных пакетов, но по существу это GNU-версия «ls» - (" df "-), просто по-разному упакован.

Итак,« в принципе »вы можете обновлять ядро ​​самостоятельно, как люди, которые создали дистрибутив из разных версий всего программного обеспечения, о котором я говорил выше. [ ! d7]

Но это очень большой BUT: потому что есть не только ядро ​​и некоторое дополнительное программное обеспечение, но и многое другое, о чем нужно помнить, например, средства настройки системы (systemd, которые используются некоторыми дистрибутивами и некоторые нет), инструменты сетевого управления, такие как NetworkManager, которые, в свою очередь, зависят от некоторых версий библиотеки GNOME и т. д. и т. д. «Распределение» - довольно сложная вещь, и есть вероятность, что если вы попытаетесь обновить ядро, вы в конечном итоге обновите много других вещей из-за многих взаимозависимостей.

Тем не менее, в принципе ", как и выше: вы также можете создать свой собственный дистрибутив, загрузив все источники, скомпилировав их, найди рабочий набор комбинаций версий, разместите какую-нибудь систему упаковки (или используйте одну из существующих) - и так далее , пока у вас нет распространяемой, устанавливаемой и настраиваемой системы. Это то, что создатели дистрибутивов, такие как Ubuntu, и это не чудо - просто много сложной работы, поэтому на самом деле большинство пользователей уклоняются от этого и используют что-то, что могут, готовые к использованию.

I надеюсь, что это ответит на ваш вопрос.

3
ответ дан 18 July 2018 в 13:35

Самый простой ответ не имеет ничего общего с Ubuntu; это связано с тем, как построен GNU / Linux. Если вы попытаетесь рассмотреть его как разработчика системы, вы увидите два мира, каждый из которых отделен острой границей (ABI).

Мир ядра, в котором работают разработчики низкого уровня, представляет собой систему самостоятельно. В нем есть все, что вы обычно найдете в обычном приложении. Единственное различие заключается в том, что пользователь не является фактическим человеком, который использует машину, но мир пространства пользователя. Ядро «приложение» является средним человеком, сервером, использующим машину, - призраком в оболочке.

Теперь пользовательское пространство - это нормальный мир, который играет повседневный пользователь и разработчик на. Он имеет жесткие API, правила, файлы и, самое главное, абстрактное, детское изображение машины, на которой он работает. Так как пользователь видит эту часть, и это составляет 99% от размера дистрибутива, ее легко назвать неверной. Правильная номенклатура - называть ее дистрибутивом программного обеспечения, созданным каким-то сущностью (Canonical, Fedora и т. Д.), Используя ядро ​​(Linux, HURD, BSD и т. Д.) И созданное с использованием набора инструментов (обычно предоставляемых GNU ).

Чтобы ответить на ваш вопрос, в GNU / Linux (как и в Windows и OSX, поверьте мне), вы можете изменить ядро, а не только версию, но всю архитектуру (Linux Kernel, vs HURD Kernel), и, пока ABI не тронут, никогда не делайте ни одного изменения в пользовательском мире ... В тот же день, когда реальному человеку пришлось строить ядро ​​из источников, вы могли бы пройти несколько изменений например, для того, чтобы заставить испорченный веб-камеру USB работать ... Теперь, с модульным ядром, вам просто нужно установить модуль, и вы получите совершенно новый мир ядра, с ABI (иногда) с новыми функциями ...

Опять же, для пользовательского пространства. Когда вы устанавливаете новое приложение, например, из репозитория Ubuntu, в 99% случаев, ваша самая большая проблема связана с совместимостью других компонентов пользовательского пространства, а не с реальным ядром. Бывают случаи, когда версия ядра диктует (через ABI) диапазон вещей, которые могут быть установлены в пользовательском пространстве, но цель (для разработчиков, по крайней мере) состоит в том, чтобы это уйти ...

Еще одна вещь, которую нужно обдумать, вы можете (и это довольно легко) создать собственный, специальный, единственный в своем роде дистрибутив GNU / Linux. Получите ядро, несколько простых скриптов, несколько приложений, и вы настроены. Это просто так (ознакомьтесь с дистрибутивами OpenWRT GNU / Linux, для сетевого оборудования, весь дистрибутив соответствует 16 Мб или около того).

3
ответ дан 18 July 2018 в 13:35

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

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

1
ответ дан 18 July 2018 в 13:35

Как вы знаете, Kernel является важной частью ОС, в дистрибутивах GNU / Linux вы можете легко обновлять ядро, не касаясь другой части ОС. Однако мы просто обновляем часть нашей операционной системы.

Операционная система состоит из двух частей, пространства ядра и пространства пользователя.

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

И об обновлении инструментов пользовательского пространства, это еще один да.

Когда вы запускаете:

sudo apt-get upgrade

Если доступно обновление для ядра, вы получите:

The following packages have been kept back: linux-generic linux-headers-generic linux-image-generic

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

sudo apt-get dist-upgrade

вы обновляете все, включая ядро.

Чтобы обновить только ваше ядро ​​до более новой версии, используйте что-то вроде:

$ apt-cache search "linux-image-[0-9]+.*-generic" | awk '{print $1}' | head -4 linux-image-4.4.0-21-generic linux-image-4.10.0-14-generic linux-image-4.10.0-19-generic linux-image-4.10.0-20-generic

, чтобы найти список новых ядер, затем установите это как новый пакет, например:

sudo apt install linux-image-4.10.0-14-generic
5
ответ дан 18 July 2018 в 13:35

Во-первых, несколько пояснений, потому что я чувствую, что вы не понимаете, как появились системы GNU / Linux. Потерпите меня, если это для вас ничего нового:

«Ядро» - это не просто другая программа, которая работает, но она является частью ОС, обеспечивающей базовые функции: если вы хотите запустить программу ( скажем, вы вводите «ls» в командной строке) двоичный файл должен быть загружен с диска (который включает в себя некоторые операции с файловой системой, чтобы найти его и некоторую обработку файлов, чтобы его прочитать), затем создается «среда процесса»: память получает назначается, номер процесса выдается и т. д. и т. д. Все прежние действия (FS, чтение из файла, ...) обрабатываются системными библиотеками, но последние являются функциями ядра.

«Linux» на самом деле (только!) Ядро, в котором нет других частей ОС. Линус Торвальдс начал писать его, запустив ядро ​​OSM-шаблона Andrew Tanenbaums MINIX и завершив его, чтобы оно было полномасштабным и реальным работоспособным ядром. До сих пор есть Linus (и многие другие, кто внес вклад / внесли вклад), которые разрабатывают это ядро. Это ядро ​​по-прежнему очень похоже на UNIX, но не на ядро ​​UNIX.

«GNU» началось как инициатива «улучшить» многие общие команды UNIX. Я не буду обсуждать, удались они или нет, но они определенно написали много программного обеспечения и в какой-то момент имели набор служебных программ. Они даже начали разрабатывать собственное ядро ​​ОС (HURD), которое было основано в основном на UNIX, но было совершенно иным. Но по сей день HURD находится в раннем развитии и вряд ли является рабочим решением. «GNU» кстати. сокращен для «GNU (is) Not UNIX» - они пытались преодолеть некоторые (воспринимаемые или реальные) ограничения UNIX с намерением создать преемника UNIX (опять же: я не хочу входить в дискуссию, если они преуспели или [- d3]

Итак, с набором инструментов, в которых отсутствует ядро ​​и ядро, не имеющее инструментария, оно не имеет значения, если оно «лучше» или «хуже», но это определенно отличается!). было естественное развитие, чтобы объединить эти два: GNU / Linux был создан.

Тем не менее, для работы (и работоспособной) ОС вам нужно больше, чем просто ядро ​​и набор инструментов: вам нужна система управления пакетами , вам нужны процедуры установки, вам нужны шаблонные конфигурации, вам нужно ....

К этому выводу пришли несколько разных людей (или их группы) и использовали комбинацию GNU / Linux для создания GNU / Linux- по своему вкусу, добавив именно то, о чем я говорил выше: они создали диспетчер пакетов, систему упаковки, процедуры установки и многое другое. Эти разные группы (соответственно результаты их усилий) - это разные распределения. Сегодня есть три разных менеджера пакетов (подходящий для Debian и таких производных систем, как * ubuntu, rpm для RedHat и производных систем, таких как Fedora, CentOS и т. Д., Pacman для ArchLinux), но все это просто управляет пакетами программного обеспечения, которое (по существу) то же: то, что вызывается при выдаче «ls» или «df» и т. д. в системе Debian или RHEL-системе, происходит из разных пакетов, но по существу это GNU-версия «ls» - (" df "-), просто по-разному упакован.

Итак,« в принципе »вы можете обновлять ядро ​​самостоятельно, как люди, которые создали дистрибутив из разных версий всего программного обеспечения, о котором я говорил выше. [ ! d7]

Но это очень большой BUT: потому что есть не только ядро ​​и некоторое дополнительное программное обеспечение, но и многое другое, о чем нужно помнить, например, средства настройки системы (systemd, которые используются некоторыми дистрибутивами и некоторые нет), инструменты сетевого управления, такие как NetworkManager, которые, в свою очередь, зависят от некоторых версий библиотеки GNOME и т. д. и т. д. «Распределение» - довольно сложная вещь, и есть вероятность, что если вы попытаетесь обновить ядро, вы в конечном итоге обновите много других вещей из-за многих взаимозависимостей.

Тем не менее, в принципе ", как и выше: вы также можете создать свой собственный дистрибутив, загрузив все источники, скомпилировав их, найди рабочий набор комбинаций версий, разместите какую-нибудь систему упаковки (или используйте одну из существующих) - и так далее , пока у вас нет распространяемой, устанавливаемой и настраиваемой системы. Это то, что создатели дистрибутивов, такие как Ubuntu, и это не чудо - просто много сложной работы, поэтому на самом деле большинство пользователей уклоняются от этого и используют что-то, что могут, готовые к использованию.

I надеюсь, что это ответит на ваш вопрос.

3
ответ дан 24 July 2018 в 20:13
  • 1
    GNU не начинала как инициатива «лучше делать». многие общие команды UNIX. GNU была операционной системой с самого начала, для свободного программного обеспечения в ответ на UNIX, являющийся ограничительной собственностью. Вы можете узнать больше с своего сайта . Они решили перенести все свое программное обеспечение на Linux, потому что к моменту создания Linux у GNU все еще не было рабочего ядра. – Ian Emnace 9 May 2017 в 19:15

Самый простой ответ не имеет ничего общего с Ubuntu; это связано с тем, как построен GNU / Linux. Если вы попытаетесь рассмотреть его как разработчика системы, вы увидите два мира, каждый из которых отделен острой границей (ABI).

Мир ядра, в котором работают разработчики низкого уровня, представляет собой систему самостоятельно. В нем есть все, что вы обычно найдете в обычном приложении. Единственное различие заключается в том, что пользователь не является фактическим человеком, который использует машину, но мир пространства пользователя. Ядро «приложение» является средним человеком, сервером, использующим машину, - призраком в оболочке.

Теперь пользовательское пространство - это нормальный мир, который играет повседневный пользователь и разработчик на. Он имеет жесткие API, правила, файлы и, самое главное, абстрактное, детское изображение машины, на которой он работает. Так как пользователь видит эту часть, и это составляет 99% от размера дистрибутива, ее легко назвать неверной. Правильная номенклатура - называть ее дистрибутивом программного обеспечения, созданным каким-то сущностью (Canonical, Fedora и т. Д.), Используя ядро ​​(Linux, HURD, BSD и т. Д.) И созданное с использованием набора инструментов (обычно предоставляемых GNU ).

Чтобы ответить на ваш вопрос, в GNU / Linux (как и в Windows и OSX, поверьте мне), вы можете изменить ядро, а не только версию, но всю архитектуру (Linux Kernel, vs HURD Kernel), и, пока ABI не тронут, никогда не делайте ни одного изменения в пользовательском мире ... В тот же день, когда реальному человеку пришлось строить ядро ​​из источников, вы могли бы пройти несколько изменений например, для того, чтобы заставить испорченный веб-камеру USB работать ... Теперь, с модульным ядром, вам просто нужно установить модуль, и вы получите совершенно новый мир ядра, с ABI (иногда) с новыми функциями ...

Опять же, для пользовательского пространства. Когда вы устанавливаете новое приложение, например, из репозитория Ubuntu, в 99% случаев, ваша самая большая проблема связана с совместимостью других компонентов пользовательского пространства, а не с реальным ядром. Бывают случаи, когда версия ядра диктует (через ABI) диапазон вещей, которые могут быть установлены в пользовательском пространстве, но цель (для разработчиков, по крайней мере) состоит в том, чтобы это уйти ...

Еще одна вещь, которую нужно обдумать, вы можете (и это довольно легко) создать собственный, специальный, единственный в своем роде дистрибутив GNU / Linux. Получите ядро, несколько простых скриптов, несколько приложений, и вы настроены. Это просто так (ознакомьтесь с дистрибутивами OpenWRT GNU / Linux, для сетевого оборудования, весь дистрибутив соответствует 16 Мб или около того).

3
ответ дан 24 July 2018 в 20:13
  • 1
    «острая граница (ABI)». Я думаю, вы имеете в виду API. ABI является, по причине отсутствия лучшего термина, кодом для аппаратного интерфейса. API, с другой стороны, представляет собой код для кода. – Sam 9 May 2017 в 18:47

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

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

1
ответ дан 24 July 2018 в 20:13

Как вы знаете, Kernel является важной частью ОС, в дистрибутивах GNU / Linux вы можете легко обновлять ядро, не касаясь другой части ОС. Однако мы просто обновляем часть нашей операционной системы.

Операционная система состоит из двух частей, пространства ядра и пространства пользователя.

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

И об обновлении инструментов пользовательского пространства, это еще один да.

Когда вы запускаете:

sudo apt-get upgrade

Если доступно обновление для ядра, вы получите:

The following packages have been kept back: linux-generic linux-headers-generic linux-image-generic

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

sudo apt-get dist-upgrade

вы обновляете все, включая ядро.

Чтобы обновить только ваше ядро ​​до более новой версии, используйте что-то вроде:

$ apt-cache search "linux-image-[0-9]+.*-generic" | awk '{print $1}' | head -4 linux-image-4.4.0-21-generic linux-image-4.10.0-14-generic linux-image-4.10.0-19-generic linux-image-4.10.0-20-generic

, чтобы найти список новых ядер, затем установите это как новый пакет, например:

sudo apt install linux-image-4.10.0-14-generic
5
ответ дан 24 July 2018 в 20:13
  • 1
    Это определенно не так. – mook765 9 May 2017 в 12:23
  • 2
    Исправьте меня;), поэтому я узнаю что-то новое :) – Ravexina 9 May 2017 в 12:24
  • 3
    sudo apt upgrade также обновит ядро, если будут доступны новые версии. sudo apt full-upgrade удалит пакетики, что asudo apt upgrade не сделает. – Soren A 9 May 2017 в 12:26
  • 4
    Поскольку я сейчас обновляюсь до нового ядра, это какая-то установка, и при использовании подкоманды upgrade он не будет устанавливать какой-либо новый пакет и не удаляет какие-либо пакеты, поэтому мы используем dist-upgrade. по крайней мере, apt-get работает таким образом;), поэтому я обновил свои команды, чтобы предотвратить путаницу. – Ravexina 9 May 2017 в 12:29
  • 5
    Я более опытен с командой apt, после короткого исследования выясняется, что теперь ваш ответ правильный, apt и apt-get обрабатывают разные вещи, см. [D0] hiroom2.com/2016/05/20 / ubuntu-16-04-debian-8-apt-command / & hellip; . Итак, некоторые знания для нас обоих ... – mook765 9 May 2017 в 13:19

Во-первых, несколько пояснений, потому что я чувствую, что вы не понимаете, как появились системы GNU / Linux. Потерпите меня, если это для вас ничего нового:

«Ядро» - это не просто другая программа, которая работает, но она является частью ОС, обеспечивающей базовые функции: если вы хотите запустить программу ( скажем, вы вводите «ls» в командной строке), двоичный файл должен быть загружен с диска (который включает в себя некоторые операции с файловой системой, чтобы найти его и некоторую обработку файлов, чтобы его прочитать), затем создается «среда процесса»: память получает назначается, номер процесса выдается и т. д. и т. д. Все прежние действия (FS, чтение из файла, ...) обрабатываются системными библиотеками, но последние являются функциями ядра.

«Linux» на самом деле (только!) Ядро, в котором нет других частей ОС. Линус Торвальдс начал писать его, запустив ядро ​​OSM-шаблона Andrew Tanenbaums MINIX и завершив его, чтобы оно было полномасштабным и реальным работоспособным ядром. До сих пор есть Linus (и многие другие, кто внес вклад / внесли вклад), которые разрабатывают это ядро. Это ядро ​​по-прежнему очень похоже на UNIX, но не на ядро ​​UNIX.

«GNU» началось как инициатива «улучшить» многие общие команды UNIX. Я не буду обсуждать, удались они или нет, но они определенно написали много программного обеспечения и в какой-то момент имели набор служебных программ. Они даже начали разрабатывать собственное ядро ​​ОС (HURD), которое было основано в основном на UNIX, но было совершенно иным. Но по сей день HURD находится в раннем развитии и вряд ли является рабочим решением. «GNU» кстати. сокращен для «GNU (is) Not UNIX» - они пытались преодолеть некоторые (воспринимаемые или реальные) ограничения UNIX с намерением создать преемника UNIX (опять же: я не хочу входить в дискуссию, если они преуспели или [-d4]

Итак, с набором инструментов, в которых отсутствует ядро ​​и ядро, не имеющее инструментария, оно не имеет значения, если оно «лучше» или «хуже», но это определенно отличается!). было естественное развитие, чтобы объединить эти два: GNU / Linux был создан.

Тем не менее, для работы (и работоспособной) ОС вам нужно больше, чем просто ядро ​​и набор инструментов: вам нужна система управления пакетами , вам нужны процедуры установки, вам нужны шаблонные конфигурации, вам нужно ....

К этому выводу пришли несколько разных людей (или их группы) и использовали комбинацию GNU / Linux для создания GNU / Linux- по своему вкусу, добавив именно то, о чем я говорил выше: они создали диспетчер пакетов, систему упаковки, процедуры установки и многое другое. Эти разные группы (соответственно результаты их усилий) - это разные распределения. Сегодня есть три разных менеджера пакетов (подходящий для Debian и таких производных систем, как * ubuntu, rpm для RedHat и производных систем, таких как Fedora, CentOS и т. Д., Pacman для ArchLinux), но все это просто управляет пакетами программного обеспечения, которое (по существу) то же: то, что вызывается при выдаче «ls» или «df» и т. д. в системе Debian или RHEL-системе, происходит из разных пакетов, но по существу это GNU-версия «ls» - (" df "-), просто по-разному упакован.

Итак,« в принципе »вы можете обновлять ядро ​​самостоятельно, как люди, которые создали дистрибутив из разных версий всего программного обеспечения, о котором я говорил выше. [ ! d7]

Но это очень большой BUT: потому что есть не только ядро ​​и некоторое дополнительное программное обеспечение, но и многое другое, о чем нужно помнить, например, средства настройки системы (systemd, которые используются некоторыми дистрибутивами и некоторые нет), инструменты сетевого управления, такие как NetworkManager, которые, в свою очередь, зависят от некоторых версий библиотеки GNOME и т. д. и т. д. «Распределение» - довольно сложная вещь, и есть вероятность, что если вы попытаетесь обновить ядро, вы в конечном итоге обновите много других вещей из-за многих взаимозависимостей.

Тем не менее, в принципе ", как и выше: вы также можете создать свой собственный дистрибутив, загрузив все источники, скомпилировав их, найди рабочий набор комбинаций версий, разместите какую-нибудь систему упаковки (или используйте одну из существующих) - и так далее , пока у вас нет распространяемой, устанавливаемой и настраиваемой системы. Это то, что создатели дистрибутивов, такие как Ubuntu, и это не чудо - просто много сложной работы, поэтому на самом деле большинство пользователей уклоняются от этого и используют что-то, что могут, готовые к использованию.

I надеюсь, что это ответит на ваш вопрос.

3
ответ дан 31 July 2018 в 10:58
  • 1
    GNU не начинала как инициатива «лучше делать». многие общие команды UNIX. GNU была операционной системой с самого начала, для свободного программного обеспечения в ответ на UNIX, являющийся ограничительной собственностью. Вы можете узнать больше с своего сайта . Они решили перенести все свое программное обеспечение на Linux, потому что к моменту создания Linux у GNU все еще не было рабочего ядра. – Ian Emnace 9 May 2017 в 19:15

Самый простой ответ не имеет ничего общего с Ubuntu; это связано с тем, как построен GNU / Linux. Если вы попытаетесь рассмотреть его как разработчика системы, вы увидите два мира, каждый из которых отделен острой границей (ABI).

Мир ядра, в котором работают разработчики низкого уровня, представляет собой систему самостоятельно. В нем есть все, что вы обычно найдете в обычном приложении. Единственное различие заключается в том, что пользователь не является фактическим человеком, который использует машину, но мир пространства пользователя. Ядро «приложение» является средним человеком, сервером, использующим машину, - призраком в оболочке.

Теперь пользовательское пространство - это нормальный мир, который играет повседневный пользователь и разработчик на. Он имеет жесткие API, правила, файлы и, самое главное, абстрактное, детское изображение машины, на которой он работает. Так как пользователь видит эту часть, и это составляет 99% от размера дистрибутива, ее легко назвать неверной. Правильная номенклатура - называть ее дистрибутивом программного обеспечения, созданным каким-то сущностью (Canonical, Fedora и т. Д.), Используя ядро ​​(Linux, HURD, BSD и т. Д.) И созданное с использованием набора инструментов (обычно предоставляемых GNU ).

Чтобы ответить на ваш вопрос, в GNU / Linux (как и в Windows и OSX, поверьте мне), вы можете изменить ядро, а не только версию, но всю архитектуру (Linux Kernel, vs HURD Kernel), и, пока ABI не тронут, никогда не делайте ни одного изменения в пользовательском мире ... В тот же день, когда реальному человеку пришлось строить ядро ​​из источников, вы могли бы пройти несколько изменений например, для того, чтобы заставить испорченный веб-камеру USB работать ... Теперь, с модульным ядром, вам просто нужно установить модуль, и вы получите совершенно новый мир ядра, с ABI (иногда) с новыми функциями ...

Опять же, для пользовательского пространства. Когда вы устанавливаете новое приложение, например, из репозитория Ubuntu, в 99% случаев, ваша самая большая проблема связана с совместимостью других компонентов пользовательского пространства, а не с реальным ядром. Бывают случаи, когда версия ядра диктует (через ABI) диапазон вещей, которые могут быть установлены в пользовательском пространстве, но цель (для разработчиков, по крайней мере) состоит в том, чтобы это уйти ...

Еще одна вещь, которую нужно обдумать, вы можете (и это довольно легко) создать собственный, специальный, единственный в своем роде дистрибутив GNU / Linux. Получите ядро, несколько простых скриптов, несколько приложений, и вы настроены. Это просто так (ознакомьтесь с дистрибутивами OpenWRT GNU / Linux, для сетевого оборудования, весь дистрибутив соответствует 16 Мб или около того).

3
ответ дан 31 July 2018 в 10:58
  • 1
    «острая граница (ABI)». Я думаю, вы имеете в виду API. ABI является, по причине отсутствия лучшего термина, кодом для аппаратного интерфейса. API, с другой стороны, представляет собой код для кода. – Sam 9 May 2017 в 18:47

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

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

1
ответ дан 31 July 2018 в 10:58

Как вы знаете, Kernel является важной частью ОС, в дистрибутивах GNU / Linux вы можете легко обновлять ядро, не касаясь другой части ОС. Однако мы просто обновляем часть нашей операционной системы.

Операционная система состоит из двух частей, пространства ядра и пространства пользователя.

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

И об обновлении инструментов пользовательского пространства, это еще один да.

Когда вы запускаете:

sudo apt-get upgrade

Если доступно обновление для ядра, вы получите:

The following packages have been kept back: linux-generic linux-headers-generic linux-image-generic

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

sudo apt-get dist-upgrade

вы обновляете все, включая ядро.

Чтобы обновить только ваше ядро ​​до более новой версии, используйте что-то вроде:

$ apt-cache search "linux-image-[0-9]+.*-generic" | awk '{print $1}' | head -4 linux-image-4.4.0-21-generic linux-image-4.10.0-14-generic linux-image-4.10.0-19-generic linux-image-4.10.0-20-generic

, чтобы найти список новых ядер, затем установите это как новый пакет, например:

sudo apt install linux-image-4.10.0-14-generic
5
ответ дан 31 July 2018 в 10:58
  • 1
    Это определенно не так. – mook765 9 May 2017 в 12:23
  • 2
    Исправьте меня;), поэтому я узнаю что-то новое :) – Ravexina 9 May 2017 в 12:24
  • 3
    sudo apt upgrade также обновит ядро, если будут доступны новые версии. sudo apt full-upgrade удалит пакетики, что asudo apt upgrade не сделает. – Soren A 9 May 2017 в 12:26
  • 4
    Поскольку я сейчас обновляюсь до нового ядра, это какая-то установка, и при использовании подкоманды upgrade он не будет устанавливать какой-либо новый пакет и не удаляет какие-либо пакеты, поэтому мы используем dist-upgrade. по крайней мере, apt-get работает таким образом;), поэтому я обновил свои команды, чтобы предотвратить путаницу. – Ravexina 9 May 2017 в 12:29
  • 5
    Я более опытен с командой apt, после короткого исследования выясняется, что теперь ваш ответ правильный, apt и apt-get обрабатывают разные вещи, см. [D0] hiroom2.com/2016/05/20 / ubuntu-16-04-debian-8-apt-command / & hellip; . Итак, некоторые знания для нас обоих ... – mook765 9 May 2017 в 13:19

Другие вопросы по тегам:

Похожие вопросы: