バックアップ/システムリカバリ甚のラむブUSBの䜜成

システムのバックアップを䜜成するたびに、空いおいるUSBフラッシュドラむブを探し、その䞊にArchLinuxのむンストヌルむメヌゞをダりンロヌドしおロヌドしたした。 この方法には非垞に䞍快な瞬間がありたした- サむズが512 MiB以䞊の空きUSBフラッシュドラむブを探す必芁がありたしたが、垞に64 MBのSDカヌドが手元にあり、バックアップず埩元の目的には十分でした。 しかし、SDカヌドには1぀の問題がありたした。たれなディストリビュヌションキットがEee PC 900から起動する可胜性がありたした。

準備する


必芁なもの


メディアのサむズは重芁ではありたせん-私が芋぀けるこずができる最小のメモリカヌドは64メガバむトのサむズであり、これはバックアップ/リカバリのための完党なシステムを䜜成するのに十分以䞊です。
カヌネルに関しおは、必芁なモゞュヌルがコンパむルされ、initrdサポヌトが無効になっおいるカヌネルを䜿甚しおいたす。 ディスクを操䜜するために远加のモゞュヌルを必芁ずしないカヌネルが既にある堎合は、それを䜿甚できたす。 そのようなカヌネルがない堎合は、 kernel.orgからカヌネル゜ヌスコヌドをダりンロヌドし、手動でビルドしたす。 この蚘事では、カヌネルの構築方法に぀いおは説明したせん。
フラッシュドラむブが/ dev / sdcであるこずに同意したしょう。

ビゞヌボックス


私はBusyBoxを䜿甚したこずをすぐに蚀いたいず思いたす-BusyBoxは、わずかに切り捚おられた機胜ではありたすが、他のナヌティリティの非垞に倧きなセットを眮き換えるナヌティリティです。 その焊点は、実行方法に応じお、これがどのように動䜜するかです。 たずえば、lnずいう名前でbusyboxぞのシンボリックリンクを䜜成するず、lnになりたす。 リンクの名前がddの堎合、ddが取埗されたす。 1.5メガバむトの重みず䟝存関係なし-これは奇跡です。
パラメヌタヌなしでbusyboxを起動するず、䜿甚䞭のバヌゞョンで䜿甚可胜なナヌティリティのリストが衚瀺され、その機胜はbusyboxに眮き換えるこずができたす。 サむズが非垞に重芁な堎合は、゜ヌスからBusyBoxを構築し、䞍芁な機胜を無効にしお、バむナリファむルのサむズを小さくするこずができたす。 リポゞトリから既補のパッケヌゞを䜿甚したした。

デバむスの準備


fdiskを䜿甚しお、デバむスのフラッシュドラむブに1぀のパヌティションを䜜成し、起動可胜にしたす。
fdisk /dev/sdc
たず、このデバむス䞊のすべおのパヌティションを削陀したす 。 ほずんどの堎合、セクションは1぀だけなので、dを1回入力したす。 次に、新しいプラむマリパヌティションを䜜成したす 。 n 、 [Enter] 、 p 、 [Enter] 、 1 、 [Enter] 、 [Enter] 、 [Enter]を抌したす。 このセクションを起動可胜にしたす-を入力したす。 デバむスに新しいパヌティションテヌブルを曞き蟌むには、 wを抌したす。
次に、フラッシュドラむブの最初のセクションに新しいファむルシステムを䜜成したす。 ファむルシステムずしおExt2を遞択したした-そのサポヌトはどこにでもあり、この皮のシステムでのゞャヌナリングはあたり意味がありたせん。 Ext2でパヌティションをフォヌマットするには、次のコマンドを実行したす。
mke2fs -m 0 -N 2000 /dev/sdc1
-m 0は、ルヌトスペヌスの予玄を無効にしたすそれが意味するものは䜕でも
-N 2000は十分なinodを提䟛したす。

システムをたずめる


新しいパヌティションを別のディレクトリたずえば、/ newrootにマりントしたす。
mkdir /newroot
mount /dev/sdc1 /newroot

各Linuxディストリビュヌションには、必芁なディレクトリのセットがありたす。 次のディレクトリを䜜成したす。
/bin
/boot
/dev
/etc
/proc
/sbin
/var

オプションは、/ sys、/ lib、/ var、/ mnt、/ usr、および/ homeです。必芁に応じお埌で䜜成できたす。

/ dev


たず、必芁なデバむスを/ devディレクトリに入力したす。 それらは、console、kmem、mem、null、ram0、tty1です。 cp -dpR /dev/DEVICE /newroot/devを䜿甚しお䜜業システムから盎接コピヌしcp -dpR /dev/DEVICE /newroot/devは䞊蚘の各デバむスです。 -dpRオプションを䜿甚するず、ファむルの内容ではなく、ファむル自䜓がコピヌされ、すべおのアクセス暩が保持されたす。 この方法があなたの奜みに合わない堎合-より時間がかかりたすが、おそらくより正確にするこずができたす-ls -lを䜿甚しお各デバむスのメむン番号ず䜎い番号を芋぀け、 mknodを䜿甚しお䜜成したす。
前述の必芁なデバむスに加えお、ハヌドディスクデバむス hd *およびsd * をコピヌし、1ダヌスの端末デバむス tty * からもコピヌしたす。 loop *も必芁になる堎合がありたす 。 必芁に応じお、残りのデバむスファむルをコピヌしたす。

/など


このディレクトリにはシステム蚭定が含たれおいる必芁がありたす。 ここでの必須ファむルは、rcシステムによっお呌び出し方法が異なる、inittab、fstab、passwd、group、shadowです。 グルヌプは必芁ないかもしれたせんが、私はこれを確認しようずしたせんでした。
これらのファむルを新しいシステムにコピヌしたら、次のファむルを線集する必芁がありたす。

inittab- / bin / initはそれを起動したす。 さたざたな実行レベルでのシステムの動䜜を決定したす。 man inittab inittabファむルの゚ントリの圢匏に぀いお詳しく読むこずができたすが、非垞に重芁な点がありたす暙準のinittabずは異なり、busyboxのバヌゞョンにはidフィヌルドずrunlevelフィヌルドを含めるべきではありたせん。 私のプリミティブなinittabは次のようになりたす。
/ etc / inittab

:: sysinit/ etc / rc

ゲッティを生成する
:: respawn/ sbin / getty -L 115200 tty1 vt100
::リスポヌン/ sbin / getty -L 115200 tty2 vt100
::リスポヌン/ sbin / getty -L 115200 tty3 vt100
:: respawn/ sbin / getty -L 115200 tty4 vt100

initプロセスを再起動するずきの䜜業
::再起動/ sbin / init

再起動する前にやるべきこず
:: ctrlaltdel/ sbin / reboot


fstab-ここではすべおが通垞通りです。 ルヌトシステムずしお、ハヌドドラむブではなく、フラッシュドラむブずしお指定するだけです。

passwdおよびshadow-これらのファむルには、ルヌトの゚ントリのみが残されたす。 残りは必芁ありたせん。 さらに、デフォルトのホヌムディレクトリずコマンドラむンシェルを倉曎するこずもできたす。 通垞、/ bin / bashたたは/ bin / zshがシェルずしお指定されたすが、busyboxにはプリミティブなshしかありたせん。 もちろん、誰もシンボリックリンクbashを䜜成するこずを気にしたせん-> sh。

rcは、inittabで指定されたブヌトスクリプトです。 それは非垞に耇雑で他のrc。スクリプトを含むこずができたすが、単玔なシステムの堎合は倧幅に単玔化できたす私のrcの䟋
/ bin / sh

正しいrc.confがあり、それを䜿甚できる堎合は、次の行のコメントを倖したす
/ etc / rc.conf

PS1 = [レスキュヌシステム]
PATH = / sbin/ bin/ usr / bin

/ bin / mount -av
/ bin / hostname localhost


/ビン


Busyboxはこのディレクトリにむンストヌルされたす。 これは倚くの方法で実珟できたす。 たずえば、手動でビルドする堎合は、構成䞭に--prefix = / newrootを远加したす。 パッケヌゞマネヌゞャを䜿甚する堎合は、ヘルプを読んでください。むンストヌルするパッケヌゞのルヌトディレクトリを指定できるオプションが必芁です。 たずえば、ArchLinuxでは、pacmanでこれは-rスむッチです。
pacman -S busybox -r /newroot -b /var/lib/pacman / pacman pacmanは/ newroot内のパッケヌゞデヌタベヌスを芋぀けるこずができないため、-bオプションが必芁です。
むンストヌル埌、/ newroot / binディレクトリに移動したす。 busyboxを起動し、必芁な組み蟌みナヌティリティず䞍芁な組み蟌みナヌティリティを決定したす。 各ナヌティリティに぀いお、察応するナヌティリティ名でbusyboxぞのシンボリックリンクを䜜成したす。 䟋
ln -s ./busybox ./cd
必ずsh、login、mountずいう名前のリンクを䜜成しおください

/ sbin


このディレクトリに移動しお、.. / bin / busyboxぞの必芁なリンクを䜜成したす。 䞀般に、このシステムでは2぀のディレクトリ-/ binず/ sbin-に分けるこずはあたり意味がありたせん。ナヌザヌずルヌトが1人しかいないからです。
init、getty、poweroff、shutfown、reboot、haltずいう名前のリンクを䜜成しおください

/ブヌツ


このディレクトリに、カヌネルのみをコピヌし、vmlinuzずいう名前を付けたす。

GRUBをむンストヌルする


GRUBブヌトロヌダヌのむンストヌルは、grub-installコマンドを䜿甚しお行いたす。
grub-install --root-directory=/newroot /dev/sdc1
むンストヌルが完了したら、簡単なGRUBメニュヌファむル/boot/grub/menu.lstを䜜成したす。
タむトルブヌトレスキュヌblob
ルヌトhd0.0
カヌネル/ブヌト/ vmlinuz rootdelay = 6 root = / dev / sdc1 rw

ルヌト行では、デバむスの倉曎が必芁な堎合がありたすが、Eee PC 900では、BIOSを遞択しおメモリカヌドから起動するず、GRUBはそのように定矩したした。
さらに、rootdelayは重芁なパラメヌタヌです。これがないず、カヌネルはカヌドリヌダヌデバむスを芋぀けるこずができず、次のように受け取りたした。
カヌネルパニックVFSルヌトfsを/ dev / sdcにマりントできない


おわりに


それだけです。 これで、再起動しお新しいシステムを詊すこずができたす。 もちろん、BusyBoxを䜿甚するず、非垞に機胜的なシステムを取埗する可胜性は䜎くなりたすが、システムは皌働䞭のシステムのサヌビスずいう芳点からは倚くの胜力を発揮したす。 さらに、live-OSのこのオプションはファむルシステムの圧瞮むメヌゞを䜿甚しないため、システムに加えたすべおの倉曎は再起動埌も残りたす。そのため、䜿甚䞭にスクリプトで機胜を安党に補完でき、業瞟を倱うこずを恐れたせん。
もちろん、最適化できるものはただたくさんありたす。私は埐々にこれを行いたすが、ディスクバックアップの䜜成ず埩元の基本的なニヌズに合わせお、システムの準備は敎っおいたす。

参照
カヌネルブヌトコマンドラむンパラメヌタヌのドキュメント 、 叀いLinuxブヌトディスク䜜成ガむド 。

これはwelinux.ruからのクロスポストです

Source: https://habr.com/ru/post/J72776/


All Articles