우분투를 포함한 모든 Linux 운영 체제와 관련하여 사람들은 커널 과 운영 체제 라는 용어를 구별하는 경향이 있습니다 . 이것은 Windows 및 OS X 제품군에 적합하지만 Linux 커뮤니티에서 왜 널리 퍼져 있습니까? OS 자체를 업데이트하지 않고 OS 커널을 업데이트하는 방법이 있습니까? 혹은 그 반대로도? 그렇다면 어떻게 유용 할 수 있습니까?
우분투를 포함한 모든 Linux 운영 체제와 관련하여 사람들은 커널 과 운영 체제 라는 용어를 구별하는 경향이 있습니다 . 이것은 Windows 및 OS X 제품군에 적합하지만 Linux 커뮤니티에서 왜 널리 퍼져 있습니까? OS 자체를 업데이트하지 않고 OS 커널을 업데이트하는 방법이 있습니까? 혹은 그 반대로도? 그렇다면 어떻게 유용 할 수 있습니까?
답변:
전체 GNU / Linux 시스템은 모듈 식 접근 방식을 사용하여 구축됩니다. 대부분 다른 모듈을 건드리지 않고 단일 모듈을 업그레이드 ( 일반적으로 교체) 할 수 있습니다 . 문제의 모듈은 부트 로더, 커널, 쉘, 명령, 데스크탑 환경, GUI 응용 프로그램 등 무엇이든 될 수 있습니다.
물론 종속성을 올바르게 관리 할 수있는 한 사실입니다. 우분투 주변의 배포판에서 APT 는 의존성을 자동으로 해결하는 데 사용됩니다.
다음 명령을 사용하여 다른 커널 버전을 설치할 수 있습니다.
sudo apt install linux-image-<version>
APT가 허용하는 한, 선택한 커널 버전을 재부트하고 사용할 수 있어야하며, 일반, 낮은 지연 시간 등이 필요합니다. 또는 Real-Time Linux 와 같은 커널 버전을 직접 빌드 하여 현재 시스템과 함께 사용하십시오 .
/etc/issue
제공 하는 파일에 기록되어 base-files
있습니다. 이미 작성했듯이 커널 버전과 관련이 없습니다.
커널이 OS의 중요한 부분임을 알고 있듯이 GNU / Linux 배포판에서는 OS의 다른 부분을 건드리지 않고도 커널을 쉽게 업데이트 할 수 있습니다. 그러나 우리는 단순히 OS의 일부를 업데이트하고 있습니다.
운영 체제는 커널 공간과 사용자 공간의 두 부분으로 구성됩니다.
따라서 새 버전 만 현재 사용자 공간과 호환되는 경우 사용자 공간을 건드리지 않고 커널 공간을 업데이트 할 수 있습니다.
그리고 사용자 공간 도구 업데이트에 대해서는 또 다른 예입니다.
실행할 때 :
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
sudo apt upgrade
새 버전을 사용할 수있는 경우 커널도 업그레이드합니다. sudo apt full-upgrade
packeges 엉덩이를 제거 asudo apt upgrade
합니다.
upgrade
하위 명령 을 사용하는 동안 새 패키지를 설치하지 않고 패키지를 제거하지 않으므로 우리가 사용하는 이유 dist-upgrade
입니다. 적어도 apt-get
이런 식으로 작동합니다;) 그래서 혼란을 피하기 위해 명령을 업데이트했습니다.
apt
-command에 더 많은 경험을 가지고 있으며 , 짧은 연구 후에 당신의 대답이 정확 apt
하고 apt-get
다르게 처리하는 것으로 보입니다. hiroom2.com/2016/05/20/ubuntu-16-04-debian-8-apt - 명령 / ... . 그래서 우리 둘 다를위한 약간의 지식은 ...
우선, 몇 가지 설명이 있습니다. GNU / Linux 시스템이 어떻게 생겼는지 이해하지 못하기 때문입니다. 이것이 당신에게 새로운 것이 아니라면 나와 함께하십시오.
"Kernel"은 실행되는 다른 프로그램이 아니라 기본 기능을 제공하는 OS의 일부입니다. 프로그램을 시작하려면 (예 : 명령 줄에 "ls"를 입력) 바이너리를로드해야합니다. 디스크에서 (파일 시스템 조작을 찾고 파일 처리를위한 일부 파일 처리가 포함 된) 디스크에서 "프로세스 환경"이 작성됩니다. 메모리가 지정되고 프로세스 번호가 발행되는 등. (FS, 파일 읽기 ...)는 시스템 라이브러리에 의해 처리되지만 후자는 커널 함수입니다. 어떤 의미에서 커널은 "OS"이고 다른 모든 것들은 그 주위에 장식 일뿐입니다.
"Linux"는 실제로 OS의 다른 부분이없는 커널입니다. Linus Torvalds는 Andrew Tanenbaums MINIX 템플릿 OS 커널을 가져 와서 완성되고 실제 작업 가능한 커널이되도록 완성하여 작성하기 시작했습니다. 오늘날까지이 커널을 개발하는 Linus (및 기여한 많은 사람들)가 있습니다. 이 커널은 여전히 UNIX와 매우 유사하지만 UNIX 커널은 아닙니다.
"GNU"는 많은 일반적인 UNIX 명령을 "더 좋게"만들기위한 이니셔티브로 시작되었습니다. 나는 그들이 성공했는지 아닌지는 논의하지 않을 것이지만, 분명히 많은 소프트웨어를 작성했으며 한 시점에 유틸리티 프로그램 모음이있었습니다. 그들은 심지어 UNIX를 기반으로했지만 분명히 다른 자체 OS 커널 (HURD)을 개발하기 시작했습니다. 그러나 현재까지 HURD는 초기 개발 단계에서 거의 작동하지 않습니다. "GNU"btw. "GNU (is) Not UNIX"의 줄임말-UNIX의 후속 버전을 만들려는 의도로 UNIX의 일부 (인식되거나 실제적인) 제한을 극복하려고 시도했습니다. 아닙니다-나는 그것이 "더 나은"것인지 "더 나쁜 것"인지 상관하지 않지만 확실히 다릅니다!).
따라서 커널이없는 도구 세트와 도구 세트가없는 커널로이 두 가지를 하나로 묶는 것이 자연스럽게 발전했습니다. GNU / Linux가 만들어졌습니다.
그래도 작동하고 작동 가능한 운영 체제를 갖추려면 커널과 도구 세트 이상이 필요합니다. 패키지 관리 시스템, 설치 절차, 템플릿 구성, 템플릿 구성이 필요합니다.
여러 사람들 (또는 그 그룹)이이 결론에 도달했고 GNU / Linux 조합을 사용하여 위에서 언급 한 내용을 정확하게 추가하여 원하는대로 GNU / Linux 시스템을 만들었습니다. 이들은 패키지 관리자, 패키징 시스템을 만들었습니다. 설치 절차 등 이러한 서로 다른 그룹 (각각 노력의 결과)은 서로 다른 분포입니다. 현재 세 가지 패키지 관리자가 있습니다 (데비안 및 * uuntu와 같은 파생 시스템, RedHat의 rpm 및 Fedora, CentOS 등의 파생 시스템, ArchLinux의 pacman과 같은 파생 시스템에 적합). 동일 : "ls"또는 "df"등을 발행 할 때 호출되는 것
따라서 "원칙적으로"위에서 언급 한 모든 소프트웨어의 다양한 버전에서 배포판을 만든 사람들처럼 커널 만 업데이트 할 수 있습니다.
그러나 이것은 매우 큰 문제입니다. 커널과 일부 추가 소프트웨어뿐만 아니라 시스템 구성 도구 (일부 배포판에서 사용하고 일부 배포판에서는 사용하지 않는 시스템 구성) 네트워크와 같이 명심해야 할 다른 많은 것들이 있기 때문에 그놈 라이브러리 등의 일부 버전에 따라 달라지는 NetworkManager와 같은 관리 도구- "배포"는 다소 복잡한 작업이며 커널을 업데이트하려고하면 많은 업데이트가 발생합니다. 많은 상호 의존성 때문에 다른 것들.
여전히 위와 같이 "원칙적으로": 모든 소스를 다운로드하여 컴파일하고, 버전 조합의 작업 세트를 찾거나, 일부 패키징 시스템을 설치하거나 (또는 기존의 것 중 하나를 사용하여) 고유 한 배포판을 만들 수도 있습니다 )-배포 가능하고 설치 가능하며 구성 가능한 시스템이 될 때까지. 이것은 우분투와 같은 배포판 제작자가하는 일이며 기적이 아닙니다. 복잡한 작업이 많기 때문에 실제로 대부분의 사용자는 그것을 피하고 사용할 준비가되어있는 것을 사용합니다.
이것이 귀하의 질문에 답변되기를 바랍니다.
가장 간단한 대답은 우분투와 아무 관련이 없습니다. GNU / Linux의 빌드 방식과 관련이 있습니다. 시스템 개발자로 보려고하면 두 개의 세계가 뚜렷한 경계 (ABI)로 구분되어 있습니다.
저수준 개발자가 작업하는 커널 세계는 자체 시스템입니다. 일반적으로 일반 응용 프로그램에서 찾을 수있는 모든 것이 있습니다. 유일한 차이점은 사용자가 기계를 사용하는 실제 사람이 아니라 사용자 공간 세계라는 것입니다. 커널 "응용 프로그램"은 기계를 사용하는 서버 인 중개인입니다 (쉘의 유령).
이제 사용자 공간은 일상적인 사용자와 개발자가 즐기는 일반적인 세상입니다. 그것은 엄격한 API, 규칙, 파일 및 가장 중요한 것은 실행중인 컴퓨터의 추상적이며 유치한 이미지를 가지고 있습니다. 사용자는이 부분 만보고 있으며 이는 배포 크기의 99 %에 해당하므로 운영 체제 이름을 잘못 지정하기 쉽습니다. 올바른 명칭은 커널 (Linux, HURD, BSD 등)을 사용하여 일부 엔티티 (Canonical, Fedora 등)에서 작성하고 일련의 도구 (보통 GNU에서 제공)를 사용하여 빌드 한 소프트웨어 배포판입니다. ).
GNU / Linux (Windows 및 OSX와 마찬가지로)에서 질문에 답하기 위해 버전뿐만 아니라 전체 아키텍처 (Linux Kernel, HURD Kernel)뿐만 아니라 커널을 변경할 수 있습니다. ABI는 건드리지 않고, 사용자 세계에서 절대로 하나의 변화를 만들지 않습니다 ... 그 날, 진짜 사람이 소스에서 커널을 만들어야했을 때, 다음과 같은 몇 가지 변화를 겪어 엉뚱한 USB 웹캠을 얻을 수있었습니다. 작동합니다 ... 이제 모듈 식 커널을 사용하면 모듈을 설치하기 만하면 새로운 기능으로 확장 된 ABI (때로는)로 새로운 커널 세계를 얻게됩니다 ...
다시, 사용자 공간과 동일합니다. 99 %의 시간 인 Ubuntu 리포지토리에서 새 응용 프로그램을 설치할 때 가장 큰 관심사는 실제 커널이 아닌 다른 사용자 공간 구성 요소의 호환성입니다. 커널 버전이 ABI를 통해 사용자 공간에 설치할 수있는 범위를 지시하는 경우가 있지만 목표는 (적어도 개발자에게는) 이것을 멀리하는 것입니다 ...
숙고해야 할 또 다른 사항은 고유하고 특별한 독창적 인 GNU / Linux 배포판을 만들 수 있다는 것입니다. 커널, 간단한 스크립트, 여러 앱을 얻으면 설정이 완료됩니다. 네트워크 장비에 대해서는 OpenWRT GNU / Linux 배포판을 보시고 전체 배포판이 16Mb 정도에 해당하는지 확인하십시오.