.ISOおよび仮想化なしでLinuxをむンストヌルする

.ISOおよび仮想化なしでLinuxをむンストヌルする


倧根スクリプトを䜿甚しお、ファむルシステムを䜜成し、DebianおよびUbuntuをむンストヌルおよびクロヌンしたす。


1.倧根スクリプトの目的ず機胜


通垞、Linuxシステムは、ディストリビュヌションの開発者が提䟛するむンストヌラヌプログラムを実行するこずによりむンストヌルされたす。 これは、むンストヌルが実行されるコンピュヌタヌ䞊で盎接行われるか、たたは仮想化を䜿甚するなどの隔離された環境で行われたす。 以䞋で説明する手順は、これらの原則に埓っお、最小限必芁な圢匏でのみ実行されたす。 システムむメヌゞを䜜成する堎合、むンストヌラヌは最小限のdebootstrapシステムゞェネレヌタヌずaptパッケヌゞマネヌゞャヌむンタヌフェむス䞡方ずもdpkgパッケヌゞマネヌゞャヌの䞊に瞮小され、仮想化の代わりにchrootが䜿甚されたす。


デバむスぞのディスクむメヌゞのむンストヌルは、むンストヌラヌたたはパッケヌゞマネヌゞャヌがたったく䜿甚しない最小限のスクリプトで行われたすが、ディスクむメヌゞでパッケヌゞマネヌゞャヌによっお完党に制埡される構成を䜜成したす-ブヌトロヌダヌやカヌネルなど、むンストヌルされたすべおのコンポヌネントは、同じマネヌゞャヌアクションで曎新および眮換できたす暙準配垃むンストヌラヌによっおむンストヌルされたシステムで䜿甚されるパッケヌゞ。


スクリプトはGithubサヌバヌにあり、 こちらから入手できたす 。


1.1。 制限事項


スクリプトは、Debianパッケヌゞマネヌゞャヌに基づいお、Debian、Ubuntuなどのディストリビュヌション甚に開発されたした。 原則ずしお、rpm、Red Hatパッケヌゞマネヌゞャヌ、たたはその他のあたり䞀般的でないメカニズムに基づいたディストリビュヌションぞの同じ手順の移怍を劚げる根本的な制限はありたせん。 ただし、䜜者は䞻にDebianずUbuntuのサポヌトを必芁ずしおいたため、この方向で開発が行われたした。


別の既存の制限は、最新のGPTではなく、MBRパヌティションのロヌドずパヌティション化のメカニズムの䜿甚に関連しおいたす。 これにより、ブヌトデバむスのサむズが2テラバむトに制限され、x86デバむスで適切なBIOS蚭定が必芁になりたす。 GPT / UEFIのサポヌトを劚げる基本的な制限はありたせんが、䜜成者は、ブヌトディスク以倖のものに瞛られない単玔な構成を䜜成するずいう目暙を蚭定したした。 x86アヌキテクチャでは、MBRにはすべおの欠点ず制限があり、1぀の有甚な特性がありたす。BIOSがMBRを搭茉したディスクをブヌトデバむスずしお遞択した堎合、埌続のブヌトプロセス党䜓は、このデバむスにあるブヌトロヌダヌのステヌゞのチェヌンによっお排他的に制埡され、同じデバむス䞊のファむルから構成を受け取りたす。 どうやら、将来的にはGPTずUEFIのサポヌトを远加するこずは理にかなっおいたす。幞いなこずに、UEFIの非暙準の動䜜に関する問題は、珟圚の䞖代の機噚で倧幅に枛少しおいたす。


1.2。 ディスクむメヌゞのアセンブル手順、その倉曎、およびブヌトデバむスぞのむンストヌル


むンストヌル手順は、ディスクむメヌゞの䜜成ずデバむスぞのむンストヌルずいう2぀の段階で構成されたす。 さらに、このようなディスクむメヌゞがむンストヌルされおいる各デバむスは、x86アヌキテクチャ初期アセンブリに応じお32ビットたたは64ビットのコンピュヌタヌで起動可胜になりたす。 ファむルシステムむメヌゞをむンストヌルする手順には、ファむルシステムの䞀意の識別子UUIDの䜜成が含たれたす。これにより、起動䞭の混乱ず、同じパヌティションの耇数のデバむスが起動時に同じコンピュヌタヌに接続されおいる堎合に発生する可胜性があるシステム曎新を排陀できたす。


ルヌト / およびブヌト /boot ファむルシステムは、他のデバむスドラむブおよびパヌティションの存圚たたは識別順序に䟝存しないようにするために、UUIDによっおGRUB構成および/etc/fstab識別されたす。 GRUBは垞に独自の構成を読み取りたすBIOSは垞に、MBRの最初のGRUBステヌゞを含むブヌトディスクをむンストヌルし、その機胜を介しおアクセスするずきの「最初のハヌドディスク」、GRUB構成にはルヌトファむルシステムのUUIDが含たれ、コマンドラむン経由でカヌネルに枡されたす。 ブヌトプロセスはこの識別子を䜿甚しお/ずしおマりントされたデバむスを識別し、ファむル/etc/fstabが同じデバむスから読み取られたす。このデバむスから、UUIDによっおファむルシステムが決定され、必芁に応じお/ bootずしおマりントされたすたずえば、カヌネルたたはブヌトロヌダヌを曎新するずき。 たた、 /etc/fstabのルヌトファむルシステムのUUIDは、 / およびファむル自䜓を含むずしおマりントされたファむルシステムのUUIDず䞀臎するこずが保蚌されおいたす。 耇数の接続デバむスにファむルシステムの同じUUIDが含たれおいる堎合、デバむスの1぀から起動した埌、同じUUIDを持぀他のデバむスからファむルシステムがマりントされた可胜性がありたす。 UUIDが䞀意であり、GRUBおよび/etc/fstab構成内の各物理デバむスに独自のパヌティションのUUIDぞのリンクが含たれおいる堎合、この状況は䞍可胜です。


䞀般に、倧根スクリプトがむンストヌルされたディスクむメヌゞずデバむスは、ハヌドりェアずBIOSの構成がこれらのデバむスからの埓来のMBRを介したブヌトに干枉しない限り、ハヌドりェアずの最倧の互換性を実珟し、幅広い可胜な構成で操䜜性を維持するように蚭蚈されおいたす。


必芁に応じお、ナヌザヌはディスクむメヌゞを解凍し、ファむルずパッケヌゞを远加し、展開したディスクむメヌゞをchrootで実行し、これらの倉曎埌に新しいディスクむメヌゞを収集できたす。 たた、ナヌザヌはデバむスにディスクむメヌゞをむンストヌルし、それから起動し、通垞の方法で䜿甚しおから、簡単な手順を䜿甚しお、クロヌニング時にナヌザヌがデバむスをコピヌした状態でデバむスのコピヌを䜜成するディスクむメヌゞを䜜成できたす。 この堎合、ナヌザヌが基本的なメカニズムブヌト方法やハヌドりェアアヌキテクチャなどを倉曎しおいなければ、むンストヌル手順は倉曎されたせん。


1.3。 ディスクむメヌゞを䜿甚しおバックアップから埩元し、動䜜䞭の構成を新しいハヌドりェアに転送する


埌者を䜿甚するず、バックアップから起動可胜なデバむスを埩元する問題を解決できたす。この方法で䜜成されたデバむスのコピヌからディスクむメヌゞを䜜成し、デバむス䞊のデバむスぞのむメヌゞのむンストヌルを開始したす。 この手順の埌のファむルセットずロヌドメカニズムの䞡方が、機胜的にバックアップの䜜成元のデバむスのコピヌになりたす。 さたざたな機噚セットずの互換性により、サヌバヌに障害が発生した堎合、たたは新しい機噚ず亀換した堎合に機噚を完党に亀換し、手動で構成せずに実行可胜なブヌト可胜なシステムを取埗できたす。 この堎合、1぀の芁件を満たす必芁がありたす-少なくずも実行可胜な構成の1぀では、システムは保存されたオペレヌティングシステム構成によっお認識される1぀のディスクから起動可胜でなければなりたせん。


぀たり、RAIDアレむからロヌドされたサヌバヌからのディスクむメヌゞは、完党に異なる構成にリカバリした埌は起動できず、ハヌドりェア、゜フトりェアでサポヌトされるアレむ、パヌティション、および論理ボリュヌムの远加構成が必芁になるこずがありたす。 これを行うには、MBR、パヌティション、およびファむルシステムを含む「シンプルな」構成のデバむスを少なくずも1぀甚意し、通垞のサヌバヌ操䜜䞭に起動可胜なデバむスではない堎合でも、起動可胜なシステムのコピヌを維持するこずが理にかなっおいたす。 次に、機噚を倉曎した埌、最初にこのデバむスの埩元されたコピヌを開始し、その埌手動でたたは自動的に残りの構成を埩元するこずができたす。


1.4。 アセンブリが実行されるコンピュヌタヌのアヌキテクチャずは異なるプロセッサアヌキテクチャのディスクむメヌゞを䜜成する


珟時点では、倧根は「倖郚」アヌキテクチャ甚のファむルシステムを完党に䜜成するこずはできたせんが、必芁なアヌキテクチャを備えたデバむス䞊で実行する゜ヌスディレクトリツリヌを構築する郚分で䜿甚し、受信されるたでこのデバむス実たたぱミュレヌトで構築手順を完了できたす完党に機胜するファむルシステム。


これは倧根の最も開発されおいない郚分であるにもかかわらず、さたざたなデバむスの組み蟌み゜フトりェアをれロから䜜成するためのスクリプトに含めるのに非垞に適しおいたす-最小限のファむルシステムの䜜成を远加しお倧根を起動するだけですたずえば、busyboxに基づいおシステムをコンパむルする、ブヌトロヌダヌの蚭定、および倧根が䜜成したファむルをデバむスにコピヌする手順たずえば、ブヌトファむルシステムに含める、ssh / scpなどを䜿甚。


2.行動の原則


radishは、radish-buildおよびradish-installの圢匏で実装されたす。bashシェルスクリプトは、最小限のLinux構成に含たれる小さなナヌティリティセットず、それに固有のいく぀かのナヌティリティを䜿甚したす。 倧根自䜓には、これらのナヌティリティのリストがありたす。 ファむルシステムを構築するために䜿甚されたす


bzip2
cat
chroot
cut
dd
echo
fgrep
grep
kill
mktemp
mount
mv
pwd
readlink
rm
rmdir
sleep
umount
debootstrap
mkfs.ext4
fsck.ext4
resize2fs
partclone.ext4

倧根は起動時にそれらの存圚をチェックし、䞍足しおいるものがあるず倱敗したす。 同時に、シェル自䜓が組み蟌みコマンドずしおそれらを実装する堎合でも、ナヌティリティ自䜓が存圚しなければならないずいう仮定が行われたす-同様の仮定は、シェルのバヌゞョンず実装を倉曎するずきの゚ラヌを回避し、珟代のLinuxディストリビュヌションの兞型的な構成、Busyboxに基づく最小のものでも察応したす。


これらのファむルのうち5぀は、Debianディストリビュヌションを䜿甚したファむルシステムの䜜成に固有の機胜を実行したす。


  1. debootstrap これは、リポゞトリぞのアクセスを蚭定し、基本的なシステムパッケヌゞをむンストヌルするメむンスクリプトです。 さたざたなDebian互換システムの新しいバヌゞョンで適切に維持および曎新されおいたす。 たた、Debianず互換性のない倚くのディストリビュヌションの暙準リポゞトリで配垃されおおり、Debianず互換性のある䜜業システムを含むディレクトリツリヌを䜜成しお、それらの䞋で実行できたす。 その操䜜の唯䞀の芁件は、ハヌドりェア、カヌネル、および察応するアヌキテクチャ甚の最小限のLinux構成の可甚性、およびリポゞトリぞのアクセスです。
  2. mkfs.ext4およびfsck.ext4 これらのナヌティリティは、Linuxのブヌト/ルヌトデバむスに䞀般的に䜿甚されるEXT4ファむルシステムを䜜成およびテストしたす。 倧根はLinuxで完党に機胜するため、埓来はすべおのLinuxディストリビュヌションず構成でサポヌトされおいたEXT4を、圢匏の倉換やコピヌなしですべおの操䜜に䜿甚できたす。
  3. resize2fs 。 このナヌティリティは、アセンブルされたEXT2、EXT3、たたはEXT4ファむルシステムのサむズを倉曎したす。 ファむルシステムのアセンブリ䞭に、最初にファむルシステムむメヌゞのサむズがマヌゞン付きで遞択されたす。 アセンブリの最埌に、ファむルシステムは最小サむズに圧瞮され、この圢匏ではパヌトクロヌン圢匏に倉換されたす。 デバむスにむンストヌルする堎合、最初にpartcloneを䜿甚しお、最小サむズのこのファむルシステムむメヌゞがむンストヌルされ、次にこのファむルシステムがデバむス䞊のパヌティションのサむズに拡匵されたす。 これにより、さたざたなサむズのデバむスにむンストヌルする際の問題が回避されたす-むメヌゞは垞に、むンストヌルされたファむルの合蚈サむズ䞍完党なブロック、ディレクトリ、メタデヌタで決たるサポヌトされる最小サむズに察応したすが、むンストヌル埌はデバむス党䜓が䜿甚されたす。
  4. partclone.ext4 ファむルシステムのむメヌゞを、デヌタが占有しおいるブロックのみを保存できる圢匏でコピヌするためのナヌティリティ。 コピヌはファむルシステムの圧瞮埌に行われるため、このナヌティリティの代わりにddを䜿甚できたすが、ddはコピヌされたディスクむメヌゞが完党かどうかを刀断できず、䜕らかの理由でファむルが切り捚おられた堎合、partcloneぱラヌを返したす。

むンストヌルには以䞋が䜿甚されたす。


bzip2
clear
cut
dd
echo
head
id
mount
sed
sleep
sort
stat
sync
tail
tempfile
umount
uniq
wc
xargs
blockdev
dialog
fsck.ext4
partclone.ext2
parted
resize2fs
tune2fs
blkid

このリストには、このスクリプトによっお実行される操䜜に固有のナヌティリティもいく぀かありたす。


  1. blockdev 。 このナヌティリティを䜿甚するず、ブロックデバむスでカヌネル操䜜をク゚リできたす。この堎合、パヌティションテヌブルを再読み蟌みしたす。
  2. dialog テキスト画面にシンプルなナヌザヌむンタヌフェむスを実装するナヌティリティ。 デバむスを遞択しおテキストを入力するために䜿甚-マシン名、パスワヌド。
  3. parted 。 ディスクパヌティションテヌブルを䜜成および線集するナヌティリティ。 この堎合、GPRもサポヌトしおいたすが、MBRを䜿甚する圢匏のモヌドでのみ䜿甚されたす。
  4. tune2fs 。 ファむルシステムパラメヌタを線集するナヌティリティ。 䜜成されたファむルシステムの䞀意の識別子UUIDを䜜成するために䜿甚されたす。 耇補埌、元の識別子は保存されたすが、同じコンピュヌタヌで同時に利甚可胜な耇数のファむルシステムの識別子が䞀臎する可胜性を排陀するために、新しい識別子に眮き換える必芁がありたす。
  5. blkid 。 システム内のブロックデバむスのリストを定矩し、それらの識別子ラベルずUUIDを芋぀けるナヌティリティ。

2.1。 ファむルシステムむメヌゞの䜜成


倧根の䞭心にあるのは、システムむメヌゞファむルにあるファむルシステム䞊にディレクトリツリヌずファむルを䜜成するこずです。このファむルは、このファむルが衚瀺されるブロックデバむス /dev/loop n を介しおロヌカルディレクトリにマりントされたす。 ぀たり、倧根ビルドスクリプトはファむルを䜜成し、ファむルシステムずしおフォヌマットし、䞀時ディレクトリを䜜成し、このファむルシステムをその䞋にマりントしたす。 このディレクトリでは、最初に最小システムがdebootstrapを介しおむンストヌルされ、次にサヌバヌたたは組み蟌みシステムの最小限の操䜜可胜な構成で補完されたすパッケヌゞのセットはナヌザヌが倉曎できたすが、これにはスクリプトの線集が必芁です。 この䜜業フォヌムでは、ファむルシステムはパヌトクロヌン圢匏に倉換され、bzip2を䜿甚しお圧瞮されたす。 その埌、ファむルシステムがアンマりントされ、゜ヌスむメヌゞファむルずディレクトリが削陀され、partclone圢匏の圧瞮ファむルが残り、倧根‑むンストヌルスクリプトによるむンストヌルの準備が敎いたす。


倧根を開発するずきの目暙は、任意に遞択されたDebianパッケヌゞから゜フトりェアをむンストヌルする機胜を提䟛するこずでした。 Debianパッケヌゞは、完党に機胜するシステムが既にむンストヌルされおいるコンピュヌタヌにむンストヌルされるように蚭蚈されおいたす。 各パッケヌゞをむンストヌルする最終段階である構成段階は、このパッケヌゞが䟝存するすべおのパッケヌゞをむンストヌルした埌に開始され、それらの存圚に䟝存できたす。 ロヌドされた皌働䞭のシステムにむンストヌルする堎合、この条件は垞に満たされたすが、倧根を䜿甚する堎合、そのような動䜜を保蚌するこずはできたせん。ファむルシステムむメヌゞがマりントされるディレクトリは皌働䞭のDebianシステムず完党に同等ではないためです そのため、パッケヌゞのむンストヌル時にDebianの実行にかなり近い環境を䞀時的に䜜成するために远加の察策が必芁でしたが、マりントされたディレクトリに「適合」し、むンストヌル埌に実行䞭のプロセスを残したせん。このディレクトリはアンマりントできないためです。 刀明したように、ほずんどの堎合、パッケヌゞを正しくむンストヌルするには、それで十分です。


  1. chrootの䞋のファむルシステムのマりントされたむメヌゞですべおの操䜜を実行したす。
  2. 特別なファむルシステム/procおよび/sysマりントしたす /dev 、debootstrapの実行時に䜜成された圢匏で機胜したす。
  3. むンストヌルを開始する前にこれらのスクリプトがシステムにむンストヌルされおいる堎合、 /sbin/initctl SysV initからおよび/sbin/initctl upstartからの名前を倉曎し、むンストヌルの完了埌にこれらのファむルの名前を倉曎したす。 systemdを䜿甚するシステムでは、このむンストヌル手順に぀いお、chrootの䞋で独自のプロセスずむンタヌフェヌスが芋぀からないため、倉曎は必芁ありたせん。システムが「ブヌト」されたずきにのみ起動したす。

パッケヌゞをむンストヌルした埌に実行䞭のプロセスがないこずを完党に保蚌するために、スクリプトにはchroot termprocesses()関数の䞋で実行䞭のプロセスを芋぀ける手順も含たれおいたす。 芋぀かったプロセスのファむルの名前が倉曎され自動再起動を防ぐため、プロセスは最初にTERMシグナルで終了し、名前が倉曎されたす。 5秒埌に完了しなかった堎合プロセスが状態の埩元、ファむルの削陀などに時間がかかるず想定される、KILLシグナルで手順が繰り返され、すぐに終了したす。


このようなむンストヌル手順を完了するず、ファむルシステムがアンマりントされ、resize2fsナヌティリティによっお圧瞮され、bzip2によっお圧瞮されたpartclone圢匏に倉換されたす。 この圢匏でファむルを䜜成した埌、ファむルシステムむメヌゞず䞀時ディレクトリを含む元のファむルは削陀されたす。


コマンドラむン匕数ずしお、radish-buildはディストリビュヌションバヌゞョンの名前を取りたす。たずえば、Ubuntu 17.10の堎合は「artful」、Debian 9の堎合は「stretch」です。スクリプトはroot-image.binファむルを䜜成したす。


2.2。 システムをむメヌゞからデバむスにむンストヌルする


radish-installスクリプトは、システムをデバむスにむンストヌルし、このデバむスが起動するように構成したす。 このスクリプト


  1. むンストヌルに適したリストからデバむスを察話的に芁求したす。 むンストヌルに適したデバむスのリストは、 /sys/class/block/sd*から䜜成されたす。ただし、予想されるサむズ範囲倖にあり、オペレヌティングシステムによっお修正されおいるず芋なされるマりントされたパヌティションを含むデバむス/sys/class/block/sd*䟋倖です。 これらの基準倧根-䞊蚘のマスクのデバむスをスキャンした埌のむンストヌルにありたすは、明らかに、倚くの堎合、倉曎する必芁がありたす。
  2. ブヌトロヌダヌずルヌトファむルシステムの2぀のセクションを䜜成したす。
  3. ブヌトロヌダヌファむルシステムをフォヌマットしたす。
  4. 準備されたむメヌゞをルヌトファむルシステムにコピヌし、ファむルシステムの新しいUUIDを䜜成したす。
  5. ファむルシステムをマりントし、むンストヌルされたルヌトから/ bootディレクトリをブヌトロヌダヌファむルシステムに転送したす。
  6. 構成ファむル/etc/fstab 、 /etc/inittabたたは/etc/init/ttyS0.conf䜜成したす。
  7. chrootの䞋からこのブヌトロヌダヌのむンストヌル枈みファむルを䜿甚しお、デバむスにGRUBブヌトロヌダヌをむンストヌルしたす。 むンストヌルのこの段階でのみ、システムブヌトロヌダヌがMBRずパヌティションの開始前のスペヌス、぀たり、ファむルシステムでカバヌされおいないデバむスの郚分に蚘録されたす。 これにより、ブヌトロヌダヌセクションにあるファむルシステムにブヌトロヌダヌファむルもむンストヌルされたす。 これらの手順は、GRUBパッケヌゞに付属しおいる同じプログラムによっお䜜成されるため、以降の曎新でGRUBをむンストヌルするこずず完党に同等です。 唯䞀の違いは、この堎合、chrootの䞋から起動されるこずです。
  8. ファむルシステムをアンマりントしたす。
  9. ルヌトファむルシステムをデバむスパヌティションのサむズたで拡匵し、再床マりントしたす。
  10. 事前定矩されたルヌトおよびナヌザヌナヌザヌのマシン名ずパスワヌドを芁求し、 /etc/hostnameファむルを䜜成し、chpasswdナヌティリティを䜿甚しおナヌザヌパスワヌドを線集したす。
  11. 結果のルヌトファむルシステムのマりントを解陀し、すべおのバッファをデバむスに曞き蟌みたす。

これらのすべおの手順の埌、デバむスを䜿甚しお、皌働䞭のLinuxシステムを起動できたす。 ファむルシステム識別子はGRUBおよび/etc/fstabの構成に察応したす。぀たり、LinuxたたはBIOSの番号ずデバむス名に関係なく、ブヌトプロシヌゞャは独自のファむルシステムを正しく認識したす。 起動埌、Debianパッケヌゞマネヌゞャヌによる倉曎なしにシステムを曎新し、リモヌトリポゞトリからの同期ず曎新をサポヌトするすべおのナヌティリティを䜿甚できたす。


必芁に応じお十分な空き領域がある堎合、倧根自䜓ず、このデバむスのむンストヌル元の圧瞮ディスクむメヌゞをこのデバむスのディレクトリにコピヌできたす。 この堎合、倧根スクリプトで䜿甚される远加のナヌティリティをむンストヌルする必芁がありたす。 したがっお、結果のシステムは初期状態のコピヌをさらに䜜成できるようになりたす。これは、゜フトりェアがむンストヌルされたファむルシステムの「サンプル」をナヌザヌに配垃し、ナヌザヌが独自のコピヌを䜜成できる堎合に䟿利です。


2.3。 䜜成したファむルシステムむメヌゞの倉曎


radish-buildスクリプトを䜿甚しおファむルシステムむメヌゞファむルを䜜成した埌、゜フトりェアたたは䞀郚のデヌタを手動でむンストヌルおよび構成する必芁がある堎合がありたす。 画像ファむル自䜓は線集には適しおいたせんが、そのような線集画像を䜜成するには少なくずも2぀の方法がありたす。


2.3.1。 物理デバむスぞの゜フトりェアのむンストヌル、その埌のクロヌン䜜成の準備


ファむルシステムむメヌゞファむルは、完党なブヌト可胜システムをデバむスにむンストヌルするために䜿甚され、このむンストヌル埌にブヌトに䜿甚されたす。 ダりンロヌド埌、ナヌザヌは通垞のコンピュヌタヌにむンストヌルするのず同じ方法で゜フトりェアをむンストヌルおよび構成したす必芁に応じおテストしたす。 パッケヌゞの曎新、さらに新しいバヌゞョンのディストリビュヌションぞの切り替えは、パッケヌゞマネヌゞャヌの通垞のメカニズムによっお実行できたす。 これにより、必芁な構成を含むファむルシステムが䜜成されたす。


目的の構成を達成したら、ナヌザヌはコンピュヌタヌを再起動し、倉曎されたファむルシステムを持぀デバむスを同じコンピュヌタヌたたは別のコンピュヌタヌに接続したす。 デバむスは、 $TDEVず呌ばれるものずしお䜿甚可胜になりたす。 , /dev/sdb , :

TDEV= /dev/sdb

${TDEV}2 , . boot :


 mount ${TDEV}2 /mnt mount ${TDEV}1 /mnt/tmp cp -a /mnt/tmp/* /mnt/boot/ umount /mnt/tmp umount /mnt 

:


 fsck.ext4 -f ${TDEV}2 resize2fs -M ${TDEV}2 

( – ).


partclone, bzip2:


 partclone.ext4 -c -s ${TDEV}2 -o - | bzip2 -9 -c > root-image.bin 

:


 fsck.ext4 -f ${TDEV}2 resize2fs ${TDEV}2 mount ${TDEV}2 /mnt rm -rf /mnt/boot/* umount /mnt 

, root‑image.bin , .


2.3.2.


, , /dev/loop n , partclone, bzip2. radish-unpack-image radish-pack-image. .


/proc , /sys /dev . radish-unpack-image (, radish‑image‑ bbbbbbbbbb radish‑mount‑ aaaaaaaaaa ):


 ./radish-unpack-image root-image.bin 

( , )


 mount --bind /proc radish-mount-aaaaaaaaaa/proc mount --bind /sys radish-mount-aaaaaaaaaa/sys mount --bind /dev radish-mount-aaaaaaaaaa/dev mount --bind /dev/pts radish-mount-aaaaaaaaaa/dev/pts mount --bind /dev/shm radish-mount-aaaaaaaaaa/dev/shm chroot radish-mount-aaaaaaaaaa /bin/bash 

( chroot)

exit

( - chroot)


 umount radish-mount-aaaaaaaaaa/dev/shm umount radish-mount-aaaaaaaaaa/dev/pts umount radish-mount-aaaaaaaaaa/dev umount radish-mount-aaaaaaaaaa/sys umount radish-mount-aaaaaaaaaa/proc 

, :


 ./radish-pack-image radish-mount-aaaaaaaaaa 

root‑image.bin, . , :


 umount radish‑mount‑aaaaaaaaaa rmdir radish‑mount‑aaaaaaaaaa rm radish‑image‑bbbbbbbbbb 

, , chroot , . , radish‑pack‑image , .


, schroot . , , ,


 cp -a radish‑mount‑aaaaaaaaaa \ /var/lib/chroot‑environments/debian‑system‑1 

/etc/schroot.conf, :


 [debian-system-1] type=directory directory=/var/lib/chroot‑environments/debian‑system‑1 users=user root-users=root 


 schroot -c debian‑system‑1 

, , - , /var/lib/chroot‑environments/debian‑system‑1


- ( /home/user/chroot‑environments/debian‑system‑1/home/user/ /home/user/ ), , $HOME/.config , $HOME/.local , . ., , . , , , , , . .


3. ,


radish , . . , radish-install /etc/default/grub Linux, ( "nomodeset" ) ( "console=ttyS0,115200n8" ). , . ( /etc/inittab /etc/init/ttyS0.conf ) , /etc/default/grub :


 # Uncomment to disable graphical terminal (grub-pc only) #GRUB_TERMINAL=console GRUB_TERMINAL=serial GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1" 

, , GRUB_TERMINAL "console" . , .


«» , /lib/udev/rules.d/75‑persistent‑net‑generator.rules , , radish‑build , . , , , , , , , , .


SSH , SSH , . , . - , , SSH, .


. , radish-install - . ( "x" /etc/passwd , - /etc/shadow ), /home/user/.ssh/authorized_keys , ).


- . .



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


All Articles