initramfs에 cpio를 사용하는 이유는 무엇입니까?

initramfs에 cpio를 사용하는 이유는 무엇입니까?

나는 다음과 같이 내 자신의 initramfs를 만들고 있습니다젠투 위키. 페이지에는 익숙한 tarand 대신 and를 사용하라고 나와 있습니다.gzipcpiogzip위키피디아cpio2.6 커널의 initramfs를 사용한다고 하는데 , 그 이유는 설명되지 않습니다.

이것은 단지 컨벤션입니까, 아니면 cpioinitramfs에 더 좋습니까? 여전히 tar및 를 사용할 수 있나요 gzip?

답변1

인용하다 Documentation/filesystems/ramfs-rootfs-initramfs.txt:

왜 tar 대신 cpio를 사용합니까?

이 결정은 2001년 12월에 내려졌다. 토론은 여기에서 시작되었습니다.

http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1538.html

여기에서 시작하여 두 번째 스레드(특히 cpio를 사용하는 tar에서)를 생성했습니다.

http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1587.html

빠르고 더러운 요약 버전(위 스레드를 읽는 것을 대체하지 않음)은 다음과 같습니다.

1) cpio가 표준입니다. AT&T 시절부터 수십 년이 지났고 Linux(Red Hat의 장치 드라이버 디스크인 RPM)에서 널리 사용되었습니다. 다음은 1996년 Linux Journal 기사입니다:

http://www.linuxjournal.com/article/1213

기존 cpio 명령줄 도구에는 _truly_hideous_ 명령줄 인수가 필요하기 때문에 tar만큼 인기가 없습니다. 그러나 이는 아카이브 형식에 영향을 미치지 않으며 다음과 같은 대체 도구가 있습니다.

http://freecode.com/projects/afio

2) 커널이 선택한 cpio 아카이브 형식은 다양한 tar 아카이브 형식(실제로 수십 개)보다 더 간단하고 깔끔합니다(따라서 생성 및 구문 분석이 더 쉽습니다). 전체 initramfs 아카이브 형식은 buffer-format.txt에 설명되어 있으며 usr/gen_init_cpio.c에서 생성되고 init/initramfs.c에서 추출됩니다. 세 가지를 합쳐서 사람이 읽을 수 있는 텍스트는 26k 미만입니다.

3) GNU 프로젝트 표준 tar의 관련성은 Windows 표준 zip의 관련성과 대략 동일합니다. Linux는 이들 중 어느 것에도 속하지 않으며 자체적으로 기술적인 결정을 내릴 수 있습니다.

4) 커널 내부 포맷이므로
완전히 새로운 포맷일 가능성이 높습니다. 커널은 이 형식을 생성하고 추출하는 자체 도구를 제공합니다. 기존 표준을 사용하는 것이 바람직하지만 필수는 아닙니다.

5) Al Viro는 다음과 같이 결정했습니다(인용문: "tar는 매우 보기 흉하며 커널 측에서는 지원되지 않습니다").

http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1540.html

그의 추론은 다음과 같습니다.

http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1550.html http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1638.html

가장 중요한 것은 initramfs 코드가 설계되고 구현되었다는 것입니다.

답변2

100% 확신할 수는 없지만 부팅 중에 커널이 초기 램디스크의 압축을 풀어야 하기 때문에 커널 코드에 이미 구현되어 있는 cpio를 사용합니다.

답변3

SysV 시절에 기억나는 바에 따르면 cpio는 개발 파일을 처리할 수 있었지만 tar는 처리할 수 없었습니다. 이로 인해 덤프가 등장하기 전에는 cpio가 "원시" 백업 유틸리티로 선택되었습니다. 또한 부분 파일 세트 및 하드 링크로 작업하기가 더 쉽기 때문에 증분 백업도 더 쉽습니다. 나는 GNU tar가 cpio 기능을 따라잡았다고 생각하므로 이제는 단지 사용자 편의성의 문제일 뿐입니다. cpio와 tar는 기본적으로 설치되어야 합니다.

관련 정보