65번째 줄: 65번째 줄:
  vconfig, vi, vlock, volname, watch, watchdog, wc, wget, which, who,
  vconfig, vi, vlock, volname, watch, watchdog, wc, wget, which, who,
  whoami, xargs, yes, zcat, zcip
  whoami, xargs, yes, zcat, zcip
=== 리눅스 커널의 컴파일 ===
리눅스의 커널은 소스 코드가 공개되어 있기 때문에 직접 컴파일하여 자신만의 리눅스 커널을 만들 수 있다. 커널이 운영체제의 핵심 동작을 제어하는 심장부인 만큼 자작이 대단히 어렵기 때문에 [[타이젠]] 같은 절대 다수의 오픈 소스 운영체제가 결국 변종 리눅스 운영체제인 것도 이와 관련이 있다.
리눅스 커널 컴파일은 보통 GCC, GNU make, libstdc, bison, flex 정도의 개발 프로그램/라이브러리 패키지를 모든 변종 리눅스들이 요구한다. [[우분투 (운영체제)|우분투]]나 [[데비안 (운영체제)|데비안]]에서는 GCC와 GNU make 같은 핵심 프로그램을 apt를 통해 build-essentials이라는 패키지로 제공한다.
그 외에 화면 입출력용 ncurses 라이브러리(libncurses)나 암호화 알고리즘 지원을 위한 OpenSSL(libssl-dev) 같은 라이브러리를 요구하니 인터넷에서 검색하다 보면 무엇이 필요한지 대충 감이 올 것이다.
사전에 필요한 컴파일 도구들이 준비되었고 리눅스 소스 코드를 받았다면 작업 디렉토리를 소스 코드가 있는 최상위 폴더로 하고 make menuconfig를 터미널에 입력한다. 그럼 다음 목록이 TUI 형태로 뜬다.
* General Setup: 아래에 별도 항목으로 분리되지 않은 기능들은 다 여기 들어있다. 배터리 및 전원 관리 기능 같은 것이 여기 들어 있다.
* Code maturity level options: 실험적인 기능(베타 버전인 기능들)을 추가한다. 커널 컴파일이 실패했는데 이유를 알 수 없을 경우 가장 먼저 끄게 되는 옵션이다.
* Loadable Module Support: 모듈 기능 지원 옵션. 리눅스용 디바이스 드라이버 제작에 필수적인 옵션이므로 보통 반드시 켠다.
* Processopr type and features: 어떤 [[CPU]]를 써서 돌릴 것인지 결정하는 옵션
* Multi-device support: RAID나 LVM 같이 여러 저장 장치를 묶는 기능에 관한 옵션이다. 서버용 리눅스에서는 대단히 중요하다.
* Character devices: [[그래픽 카드]] 같은 보조 연산 장치나 마우스/키보드/조이스틱 등의 입력 장치는 여기서 지원 여부를 결정한다.
* Block Devices: 대부분의 보조 기억 장치([[HDD]], 플로피 디스크, CD/DVD, [[SSD]], [[램 디스크]])의 지원 여부를 결정하는 옵션.
* Plug and Play Support: [[USB]] 메모리 같은 것을 꽂았을 때 바로 인식(Mount)할 수 있는 기능을 제공하는 옵션. Plug&Play는 21세기에는 대중화되었지만 20세기에 만들어진 장치에서는 지원하지 않는 경우가 절대 다수다. 박물관으로 가야 할 컴퓨터가 이걸 끄는 경우가 많다.
* Parallel port support: 2010년 이전에 만들어진 프린터들은 병렬 포트라는 것으로 PC에 연결하는 경우가 있다. 당연히 요즘에는 병렬 포트가 PC에서 없어지는 추세기 때문에 특수한 목적으로만 켜게 된다(예: 조선컴용 리눅스, 공장 설비 제어 컴퓨터용 리눅스 등)
* Memory Technology Devices: [[플래시 메모리]]나 흔하지 않은 비휘발성 메모리를 사용하는 장치들(SSD나 SD 카드, 특수한 RAM 등)을 이 옵션을 건드리는 경우가 있다. 주로 [[임베디드 시스템]]용 리눅스가 이걸 활성화하는 경우가 많다.
* Networking Options: [[인터넷]]을 하려면 이 옵션을 켜고 컴파일을 해야 한다. [[IP]] 프로토콜 지원 관련 옵션이 여기 있다.
* File Systems: [[EXT (파일 시스템)|ext]] 같은 파일 시스템 지원 여부다. ext2랑 ext3, FAT32랑 exFAT 같은 파일 시스템은 기본으로 켜고 컴파일을 하게 될 것이다. 여기에 [[마이크로소프트 윈도우]]가 깔린 컴퓨터를 위해 NTFS 지원을 추가하는 정도면 PC에서 쓰기 무난하다.
* ATA/IDE/MFM/RLL Support 및 IDE, ATA and ATAPI Block devices: 구닥다리 하드디스크를 쓰는 PC에서 활성화하면 된다.
* SCSI Support: SCSI가 거의 서버에서만 쓰기 때문에 PC에서는 꺼도 문제가 생길 일이 적다
* USB, Bluetooth는 별도로 지원 여부를 결정하는 옵션이 있다.
* 커널 디버깅 옵션은 커널 자체를 변경할 때 잠깐 켜는 것이 좋다.
* 그 외에 비디오 옵션이나 터미널 같은 콘솔 화면 관련 옵션, 사운드 카드 관련 옵션이 있다. 그 외 옵션은 2020년대 이후에는 활성화를 안 해도 PC에서는 무난한 희귀한 장치(예: 모뎀, IEEE1394 등)들의 지원 여부라 신경 꺼도 된다.
그 다음 make modules -> make modules_install -> make install 순으로 입력하면 makefile 파일에 명시된 대로 커널 설치가 이루어진다. 데비안/우분투 등에서는 make kpkg로 dpkg 툴을 이용해 커널 이미지를 만드는 추가 기능을 제공한다. 만일 부트로더를 포함한다면 LILO나 GRUB을 포함하게 될 것인데, 현대에는 GRUB을 보통 쓴다.


=== 지원 CPU ===
=== 지원 CPU ===