Tại sao cpio chứ không phải tar?
Quyết định này được đưa ra vào tháng 12 năm 2001. Cuộc thảo luận bắt đầu tại đây:
http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1538.html
Và sinh ra một chủ đề thứ hai (cụ thể là trên tar vs cpio), bắt đầu từ đây:
http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1587.html
Phiên bản tóm tắt nhanh và bẩn (không thay thế cho việc đọc các chủ đề trên) là:
1) cpio là một tiêu chuẩn. Nó đã tồn tại hàng thập kỷ (từ thời AT & T) và đã được sử dụng rộng rãi trên Linux (bên trong RPM, đĩa trình điều khiển thiết bị của Red Hat). Đây là một bài viết trên Tạp chí Linux về nó từ năm 1996:
http://www.linuxjournal.com/article/1213
Nó không phổ biến như tar vì các công cụ dòng lệnh cpio truyền thống yêu cầu các đối số dòng lệnh _truly_ leatherous_. Nhưng điều đó không nói gì về định dạng lưu trữ và có các công cụ thay thế, chẳng hạn như:
http://freecode.com/projects/afio
2) Định dạng lưu trữ cpio được chọn bởi kernel đơn giản và gọn gàng hơn (và do đó dễ tạo và phân tích cú pháp hơn) so với bất kỳ (hàng chục) định dạng lưu trữ tar khác nhau. Định dạng lưu trữ initramfs hoàn chỉnh được giải thích trong bộ đệm-format.txt, được tạo trong usr / gen_init_cpio.c và được trích xuất trong init / initramfs.c. Cả ba cùng nhau đạt tổng cộng dưới 26k văn bản có thể đọc được.
3) Tiêu chuẩn hóa dự án GNU trên tar gần như liên quan đến tiêu chuẩn hóa Windows trên zip. Linux không phải là một phần của một trong hai, và được tự do đưa ra các quyết định kỹ thuật của riêng mình.
4) Vì đây là định dạng bên trong kernel, nó có thể dễ dàng trở thành
một thứ hoàn toàn mới. Kernel cung cấp các công cụ riêng để tạo và trích xuất định dạng này. Sử dụng một tiêu chuẩn hiện có là tốt hơn, nhưng không cần thiết.
5) Al Viro đã đưa ra quyết định (trích dẫn: "tar xấu xí như địa ngục và sẽ không được hỗ trợ về phía hạt nhân"):
http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1540.html
giải thích lý do của mình:
http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1550.html
http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1638.html
và, quan trọng nhất, đã thiết kế và triển khai mã initramfs.