私は次のように自分のinitramfsを作成していますGentoo Wiki。ページはおなじみのtar
andの代わりにandを使うように言います。gzip
cpio
gzip
ウィキペディアcpio
2.6 カーネルの initramfs を使うとしますが、その理由は説明されません。
これは単なるコンベンションですか、それともcpio
initramfsに良いですか?それでもと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
ここから始めて、2番目のスレッド(特に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 から抽出されます。 3つを組み合わせて人が読めるテキストは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%確信できませんが、起動中にカーネルが初期のRAMディスクを解凍する必要があるため、カーネルコードにすでに実装されているcpioを使用してください。
答え3
SysVの頃に覚えているところによると、cpioは開発ファイルを処理できましたが、tarは処理できませんでした。これにより、ダンプが登場する前に、cpioが「raw」バックアップユーティリティとして選択されました。また、部分的なファイルセットとハードリンクで作業する方が簡単なので、増分バックアップも簡単です。私はGNU tarがcpio機能に追いついたと思うので、今はユーザーの利便性の問題にすぎません。 cpioとtarはデフォルトでインストールする必要があります。