Linux 커널 만 설치할 수 있습니까?


45

Linux 커널을 단독으로 설치할 수 있는지 또는 그 풍미 중 하나를 사용해야하는지 궁금합니다. 가능하다면 어떻게 하시겠습니까? 자세한 자습서가 필요하지 않습니다. 나는 그것이 개념적으로 어떻게 수행되는지 알고 싶습니다. 나는 저수준의 물건에 좋지 않으며, OS를 컴퓨터에 넣는 방법을 알고 싶다. MBR과 관련이 있다고 생각합니다.

아, 나는 많은 답변이 최소한의 리눅스의 특정 배포판을 암시한다는 것을 알았습니다. 나는 최소한의 뼈를 설치하지 않을 것이라고 말했을 것입니다. 이 질문은 순전히 이론적 인 것입니다. 그래도 모든 답변을 진심으로 감사하며 진정으로 개인화 된 Linux를 설치하고 싶다면 즉시 답변을 참조 할 것입니다.


3
"혼자"와 "맛"은 무엇을 의미합니까? 리눅스는 OS가 아니라 커널이다. OS가없는 커널은 무엇에 좋을까? 대신 부트 로더 순서를 알아 내려고합니까?
Caleb

3
커널 / OS가 어떻게 컴퓨터에 들어가는 지 이해하려면 여기 를 시작하십시오. 그냥 확실히 그들은에 그들에게 당신을 물린 것, 거기에 "초보자"질문을하지 않도록 만든다 SO 대신.
Philomath

3
홀로, 사용자 인터페이스를 빼고 OpenOffice와 같은 프로그램을 제외한 커널 만 의미합니다. 'flavours'는 우분투, redhat, debian 및 mandriva와 같은 Linux 배포판을 의미합니다. 나는 내가 말하는 것에 대해 거의 모른다. Linux 커널에 DOS와 같은 기본 bash 기능이 있다고 생각했습니다. 커널과 운영 체제에 대한 아이디어가 뒤섞여 있다고 생각합니다.
cesar

4
그렇습니다. 여러분은 정말 엉킨 것입니다 :) Bash는 커널이 관리하는 프로세스로 실행되는 사용자 전용 프로그램입니다. 커널 자체는 다른 것을 실행할 수있는 플랫폼 외에는 아무 것도 제공하지 않습니다. Shadur의 답변에서 LFS (Linux From Scratch)가 제안되었습니다. 스크래치 시스템을 구축하여 모든 다른 조각이 무엇인지, 배포판을 배포판으로 만드는 이유와 커널이 끝나고 사용자 영역이 시작되는 위치에 대해 많이 배울 것입니다.
Caleb

2
실제로 DOS kernel에는 기본 bash기능 이 없었습니다 . 표준 사용자 인터페이스는 쉘 프로그램에 의해 제공되었습니다 COMMAND.COM. 베어 커널에 가장 유용한 것은 커널 매개 변수를 사용하여 부팅하는 것입니다 init=/bin/bash(최소 Linux가 디스크에 있다고 가정). 대답에 따르면 부트 로더와 커널 만 가지고 있으면 찾을 수 없을 때 매우 빨리 중지됩니다 init.
StarNamer

답변:


51

기술적으로 부트 로더와 커널 만 설치할 수 있지만, 커널이 부팅 되 자마자 "init"를 시작할 수 없다는 불만이 생길 수 있습니다.

BTW는 MBR에있는 부트 로더의 일부입니다. 커널은 디스크의 일반적인 영역에 위치합니다. 부트 로더는 그 위치를 알 수 있도록 구성되어 있으므로 커널을로드하고 실행할 수 있습니다.


어떻게 MBR에 넣겠습니까?
cesar

모든 부트 로더에는 MBR에 설치하기위한 도구가 제공됩니다. Boot-Repair ( help.ubuntu.com/community/Boot-Repair ) 와 같은 친숙한 도구도 있습니다 .
Shawn J. Goff

글쎄 당신은 initramfs를 만들어서 커널 이미지에 포함시킬 수있다. 그리고 나서 커널 이미지 파일에서 완전히 작동하는 시스템을 갖게 될 것이다. :-)
Patrick

@ ShawnJ.Goff 왜 우리가 initramfs를 제공한다면 커널이 init을 시작할 수 없다는 불평을합니까?
Pratik Singhal

4
@ ps06756 initramfs를 가지고 있다면, 질문 한대로 "독립"커널이 아닙니다. initramfs에 init가 있으면 커널은 불평하지 않습니다.
숀 J. 고프

18

나는 당신이 요구하는 것을 정확하게 이해하지 못한다고 생각하지만 Linux From Scratch 프로젝트를 살펴보고 싶을 것 입니다.


LFS는 최소 시스템을 구축하는 방법을 알아내는 것이 좋습니다. 또는 MINIX를 보고 책을 읽을 수도 있습니다. 또는 다른 소개 (작업이 적지 만 정보가 덜한)를 보려면 aptitude search '?essential'데비안 또는 우분투에서 “필수”( ) 로 표시된 패키지를보고 각각의 기능을 이해하십시오 (최소한 수준보다 약간 더 높음).
Gilles 'SO- 악 그만

12

다른 프로그램을 설치하지 않고 기존 시스템에 커널을 설치하거나 업그레이드 할 수 있는지 묻는다면?

리눅스 커널은 일반적으로라는 이진 파일입니다 vmlinuz-x.x.x-x-nameboot는 X의이 버전 번호입니다 (일반적으로 하드 드라이브의 시작 부분에 별도의 작은 파티션입니다) 디렉토리. "name"은 컴파일 타임에 설정할 수있는 커널의 선택된 이름 일 뿐이며, 커널이 어떤 유형의 기계 또는 아키텍처인지 또는 다른 이유로 식별 할 수 있습니다.

GRUB부팅시 부트 로더에 의해로드되며, 일반적으로 BIOS ROM에 의해 호출되는 MBR의 부팅 코드에 의해 호출됩니다. 일단로드되면 "열려"있거나 특별하게 보호되지 않습니다. 따라서 해당 파일을 다른 작동중인 커널로 바꿀 수 있습니다. 그러나 GRUB부팅 할 커널을 여러 개 선택할 수있는 멋진 기능이 있습니다. 따라서 추가 커널을 해당 목록에 추가하는 것이 좋지만 문제가 발생할 경우를 대비하여 알려진 원래 작동 커널을 유지하십시오.

거의 모든 배포판에서는 장치 드라이버가 별도의 파일에있는 "모듈 식"커널을 만듭니다. 따라서 대부분의 커널에는 부팅시 사용할 수있는 드라이버가 포함 된 파일 시스템이 필요합니다. 이것이 "initrd"(초기 RAM 디스크) 또는 "initramfs"입니다. GRUB커널을 메모리의 위치에로드하고 initrd를 다른 위치에로드하고 Linux로 시작하여 initrd가 어디에 있는지 알려주는 커널로 이동합니다.

드라이버는 커널에 "내장"될 수 있으므로 부트 로더가 vmlinuz이미지를 로드 할 때 자동으로로드되어 사용 가능 합니다. 다양한 시스템 (예 : 대부분의 배포판)에서 작동하는 커널은 일반적으로 사용 가능한 하드웨어가 부팅 프로세스에서 나중에 검색되고 현재 하드웨어를 나타내는 모듈 만로드되므로 커널에 내장 된 것을 최소화합니다.

initrd를 수정하고 작성하는 도구가 있습니다. 데비안에는 훌륭한 도구가 있으며 다른 배포판도 마찬가지라고 생각합니다.

따라서 kernel.org에서 최신 커널을 다운로드하여 컴파일하여 새 커널 이진 이미지를 만들려면 해당 커널에서 작동하는 드라이버로 initrd를 만들거나 업데이트해야합니다. 드라이버가 실행중인 커널 버전과 일치해야하므로 이전 initrd가 작동하지 않습니다.

initrd 파일은 initrd.img-x.x.x.x-name커널과 비슷하게 이름이 붙여 지며, 커널과 마찬가지로 부팅 후에 교체 할 수 있으며 새 커널 + initrd로 성공적으로 부팅 할 수있을 때까지 알려진 initrd를 삭제하지 않는 것이 좋습니다.

나는 그것이 어떤 맥락을 제공하기를 바랍니다.

추가 프로그램이 거의 또는 전혀 설치되지 않은 "barebones"Linux 설치를 찾고 있다면, 내가 가장 좋아하는 선택은 항상 데비안 netinst이미지를 설치 한 것 입니다. 명령 행 텍스트 콘솔을 실행 nano하고 텍스트 편집기로 사용하는 데 필요한 가장 기본적인 도구 만 있습니다.


5

단일 실행 가능 rootfs

절대 최소 시스템은 하나의 실행 /init내가에서 설명했듯이 프로그램을 하나의 응용 프로그램 리눅스 | 슈퍼 유저

최소 리눅스 라이브

https://github.com/ivandavidov/minimal

보다 흥미로운 대화 형 시스템의 경우 다음과 같은 (대부분 교육적인) 작은 스크립트입니다.

  • 커널 및 busybox의 소스를 다운로드합니다.
  • 그들을 컴파일
  • 그들과 함께 부팅 가능한 8Mb ISO를 생성합니다

그런 다음 ISO는 busybox를 사용하여 최소한의 쉘로 남겨 둡니다.

QEMU를 사용하면 시스템으로 쉽게 부팅 할 수 있습니다.

커널 소스 디렉토리에서 실행할 수 있도록 수정했습니다 : https://github.com/cirosantilli/runlinux

용법:

git clone https://github.com/ivandavidov/minimal
cd minimal/src
./build_minimal_linux_live.sh
# Wait.
# Install QEMU.
# minimal_linux_live.iso was generated
./qemu64.sh

새로운 최소 시스템으로 QEMU 창 안에 남아있게됩니다. 대박.

크기가 작기 때문에 소스를 읽고 진행 상황을 이해하는 것이 좋습니다.

우분투 16.04에서 테스트되었습니다.

빌드 루트

https://buildroot.org/

다음을 관리하는 대규모 Makefile 스크립트 세트 :

  • GCC 크로스 컴파일 툴체인
  • 커널 컴파일
  • 부트 로더 컴파일
  • rootfs 생성
  • GTK와 같은 복잡한 것들을 포함하여 소스 트리에 수많은 패키지 다운로드 / 빌드 레시피가 있습니다. 의존성 시스템이 있습니다.

최소 예 :

git clone git://git.buildroot.net/buildroot
cd buildroot
git checkout 2016.05
make qemu_x86_defconfig
# Can't use -jN, use `BR2_JLEVEL=2` instead.
BR2_JLEVEL=2 make
# Wait.
# cat board/qemu/x86_64/readme.txt
qemu-system-x86_64 -M pc -kernel output/images/bzImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append root=/dev/vda -net nic,model=virtio -net user
# You are now in a shell with BusyBox utilities.

X11을 처음부터 새로 만드는 방법도 있습니다. 내 Linux Buildroot 시스템에 X11을 설치하는 방법은 무엇입니까?

전문적인 물건.

알파인 리눅스

https://github.com/gliderlabs/docker-alpine

웹 사이트에서 사전 컴파일 된 바이너리를 제공하는 패키지 관리자가 포함 된 배포

또한보십시오


3

나는 Linux From Scratch 방식으로 손을 더럽게 만들어야한다는 Shadur의 제안 을 두 번째로 설명하고 싶습니다 .
또한 비슷한 것으로 Pocket Linux를 사용해보십시오 .

포켓 리눅스 가이드는 소스 코드와 두 개의 디스켓 만 사용하여 작은 콘솔 기반 GNU / Linux 시스템을 구축하는 방법을 보여줍니다. 배포판 특정 기능 및 도구 슈라우드에서 시스템 작동 방식에 대해 더 깊이 이해하고자하는 Linux 사용자를위한 것입니다.


2
올바른 제작자가 중요한 생산 작업에 대해 LFS 또는 PocketLinux를 권장하지는 않지만 물건의 작동 방식을 배우는 데는 좋지만 대부분의 배포판에 완전한 도구 및 프런트 엔드 세트가 제공되는 이유가 있습니다. 대부분의 물건.
Shadur

3

일반적인 사용자 공간 도구없이 Linux 커널을 설치할 수 있습니다. 이것은 일반적으로 라우터와 같은 임베디드 시스템에서 수행됩니다. 일반적으로 커널은 ROM 또는 플래시 메모리에서로드되며 해당 장치에 맞게 사용자 정의되었습니다 (일반적으로 모듈로로드되지 않고 커널에 컴파일 된 필수 드라이버로).

init커널이 수정되지 않은 경우가 아니라면, 적어도 하나의 사용자 공간 프로그램이 존재해야합니다. 이것을 필요로하지 않기 위해 단순히 사용자 정의하는 것보다).

Linux 기반 장치가 작동하기 위해 쉘을 사용할 필요는 없지만 개발이 훨씬 쉬워 질 수 있습니다!


2

많은 배포판에서 "핵심"설치를 제공합니다. 이것이 당신이 원하는 것입니다. ubuntu-minimal, debian net-install, archlinux를 참조하십시오 (기본값은 코어 임).

다른 답변은 배우고 싶을 때 유용하지만 그럴 수도 있습니다 = p

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.