booty - օգտակար բեռնման պատկերներ և կրիչներ ստեղծելու համար

Ներկայացված ծրագիրը Ավար, որը թույլ է տալիս մեկ հրամանով ստեղծել bootable initrd պատկերներ, ISO ֆայլեր կամ կրիչներ, որոնք պարունակում են ցանկացած GNU/Linux բաշխում: Կոդը գրված է POSIX կեղևով և տարածվում է լիցենզավորված GPLv3-ի համաձայն:

Booty-ի միջոցով բեռնված բոլոր բաշխումները գործարկվում են կամ SHMFS (tmpfs) կամ SquashFS + Overlay FS՝ օգտագործողի ընտրությամբ: Բաշխումը ստեղծվում է մեկ անգամ, և բեռնման գործընթացում ընտրվում են պարամետրեր, որոնք թույլ են տալիս օգտագործել մաքուր tmpfs արմատի համար, կամ Overlay FS + SquashFS-ի համադրություն՝ tmpfs-ի փոփոխություններ գրանցելով: Հնարավոր է ներբեռնվող բաշխման փաթեթը նախապատճենել RAM-ում, ինչը թույլ է տալիս անջատել USB կրիչը ներբեռնելուց և բաշխման հավաքածուն հիշողության մեջ պատճենելուց հետո:

Նախևառաջ, Booty-ն ստեղծում է իր սեփական initrd պատկերը, որը կարող է օգտագործել ընթացիկ համակարգի կամ busybox-ի տեղական կոմունալ ծառայություններ: Հնարավոր է ներառել (փաթեթավորել) գրացուցակում (chroot) տեղադրված ամբողջ բաշխման հավաքածուն initramfs-ում: Սա կարող է օգտակար լինել, երբ դուք պետք է թարմացնեք համակարգը՝ օգտագործելով kexec. պարզապես վերաբեռնեք initrd-ը նոր միջուկով և նոր համակարգով initrd-ի ներսում:

Booty-ին հատուկ initrd պատկերի ստեղծում.

mkdir initramfs/
mkinitramfs initramfs/ --ելք initrd

Initrd պատկերի ստեղծում, ներառյալ բաշխումը «gentoo/» գրացուցակից.

mkdir initramfs/
mkinitramfs initramfs/ --overlay gentoo/ --cpio --output initrd

Որից հետո այս initrd պատկերը լիովին պատրաստ է բեռնման, օրինակ՝ PXE-ի կամ kexec-ի միջոցով։

Հաջորդը, Booty-ն ստեղծում է պատկերներ համակարգով, որը նշված է որպես «վերածում»: Օրինակ, դուք կարող եք տեղադրել (բացփաթեթավորել արխիվը) պայմանական Gentoo-ն առանձին գրացուցակում, որից հետո այս համակարգով cpio արխիվ կամ SquashFS պատկեր կստեղծվի Booty-ի միջոցով: Դուք կարող եք նաև կարգավորել բաշխումը առանձին գրացուցակում և պատճենել ձեր անձնական կարգավորումները մեկ այլ գրացուցակում: Այս բոլոր «շերտերը» հաջորդաբար կբեռնվեն միմյանց վրա և կստեղծեն մեկ աշխատանքային համակարգ:

mkdir initramfs/
mkinitramfs initramfs/ --overlay gentoo/ --overlay settings/ --overlay document/ --squashfs --output initrd

Ի վերջո, Booty-ն թույլ է տալիս ստեղծել bootable ISO պատկերներ և USB, HDD, SSD և այլ կրիչներ՝ տեղադրելով վերը նշված համակարգը պատկերներից: Ավար աջակցում է BIOS և UEFI boot համակարգերի ստեղծմանը: GRUB2 և SYSLINUX բեռնիչներն ապահովված են: Bootloaders-ը կարող է համակցվել, օրինակ՝ օգտագործել SYSLINUX-ը՝ BIOS-ում, իսկ GRUB2-ը՝ UEFI-ի համար: ISO պատկերներ ստեղծելու համար ձեզ լրացուցիչ կպահանջվի cdrkit (genisoimage) կամ xorriso (xorrisofs) փաթեթը՝ ընտրելու համար:

Միակ լրացուցիչ գործողությունը, որը պահանջվում է, միջուկը (vmlinuz) նախապես բեռնման համար պատրաստելն է: Հեղինակը (Spoofing) խորհուրդ է տալիս օգտագործել «make defconfig»: Պատկերը ստեղծելուց առաջ անհրաժեշտ է պատրաստել գրացուցակ՝ տեղադրելով vmlinuz միջուկը և առաջին օրինակում ստեղծված նախապես պատրաստված «դատարկ» initrd-ը։

mkdir iso/
cp /boot/vmlinuz-* iso/boot/vmlinuz
cp initrd iso/boot/initrd

Դրանով նախապատրաստումն ավարտված է, մենք այժմ կարող ենք ստեղծել ISO պատկերներ այս գրացուցակից:

Հետևյալ հրամանը կստեղծի ISO պատկեր, ոչ թե bootable, այլ պարզապես ISO.

mkdir iso/
mkbootisofs iso/ --output archive.iso

Բեռնման պատկեր ստեղծելու համար անհրաժեշտ է նշել «--legacy-boot» տարբերակը BIOS-ի համար և «--efi»՝ UEFI-ի համար, ընտրանքները որպես պարամետր վերցնում են կամ grub2 կամ syslinux, կարող եք նաև նշել միայն մեկ տարբերակ ( Օրինակ, UEFI-ի բեռնման աջակցությունը անհրաժեշտ չէ, այն կարող է նշված չլինել):

mkbootisofs iso/ --legacy-boot syslinux --ելք boot-biosonly.iso

mkbootisofs iso/ --legacy-boot syslinux --efi grub2 --ելքային boot-bios-uefi.iso

mkbootisofs iso/ --efi grub2 --ելք boot-uefionly.iso

Եվ ինչպես նախկինում, համակարգով պատկերները ներառված էին initrd-ում, դուք կարող եք դրանք ներառել ISO-ում:

mkbootisofs iso/ --overlay gentoo/ --squashfs --legacy-boot grub2 --efi grub2 --ելք gentoo.iso

Այս հրամանից հետո կստեղծվի bootable BIOS/UEFI ISO պատկեր, որը բեռնում է Gentoo-ն SquashFS պատկերում՝ օգտագործելով Overlay FS-ը, օգտագործելով tmpfs տվյալների պահպանման համար: Միջուկը պետք է կառուցվի Overlay FS աջակցությամբ SquashFS-ով: Այնուամենայնիվ, եթե ինչ-ինչ պատճառներով դա պարտադիր չէ, կարող եք օգտագործել «—cpio» տարբերակը՝ «squashfs»-ի փոխարեն՝ gentoo-ն փաթեթավորելու համար որպես cpio արխիվ, որի դեպքում արխիվը կբացվի անմիջապես tmpfs-ի մեջ՝ boot-ում, գլխավորը: այն է, որ համակարգը բացելու համար tmpfs-ն ուներ բավարար RAM:

Հետաքրքիր փաստ․ եթե «—efi» տարբերակով ստեղծված ISO պատկերը բացվում է FAT32 ֆլեշ կրիչի վրա՝ պարզապես ֆայլերը պատճենելով (cp -r), ապա ֆլեշ կրիչը կգործարկվի UEFI ռեժիմում՝ առանց որևէ նախնական պատրաստման՝ շնորհիվ առանձնահատկությունների։ UEFI- ներբեռնողների:

Բացի bootable ISO-ներից, ցանկացած bootable drive կարող է ստեղծվել նույն պարամետրերով՝ USB, HDD, SSD և այլն, և այս սկավառակը կարող է շարունակել օգտագործվել իր նպատակային նպատակներով: Դա անելու համար հարկավոր է միացնել, օրինակ, USB սարքը և դրա վրա գործարկել mkbootisofs: Պարզապես ավելացրեք մեկ տարբերակ «—bootable», որպեսզի սկավառակը, որի վրա գտնվում է նշված գրացուցակը, դառնա bootable:

Mount /dev/sdb1 /mnt
mkbootisofs /mnt --overlay gentoo/ --squashfs --legacy-boot grub2 --efi grub2 --bootable

Դրանից հետո USB սարքը կդառնա bootable gentoo/ overlay-ով (մի մոռացեք պատճենել /boot/vmlinuz և /boot/initrd ֆայլերը սարքում):

Եթե ​​ինչ-ինչ պատճառներով դրայվը չի տեղադրվել /mnt-ում, և պարզվում է, որ /mnt-ը գտնվում է հիմնական սարքի /dev/sda-ի վրա, ապա բեռնիչը կվերագրվի /dev/sda-ին: Դուք պետք է զգույշ լինեք, երբ նշելով --bootable տարբերակը:

Բեռնման գործընթացում Booty-ն աջակցում է մի շարք տարբերակներ, որոնք կարող են փոխանցվել boot loader-ին, grub.cfg-ին կամ syslinux.cfg-ին: Լռելյայն, առանց որևէ ընտրանքների, բոլոր ծածկույթները բեռնվում և բացվում են tmpfs-ի մեջ (կանխադրված տարբերակ ooty.use-shmfs): Overlay FS-ն օգտագործելու համար պետք է օգտագործվի booty.use-overlayfs տարբերակը: Booty.copy-to-ram տարբերակը սկզբում պատճենում է ծածկույթները tmpfs-ում, որից հետո միայն միացնում է դրանք և բեռնում: Պատճենելուց հետո USB սարքը (կամ այլ պահեստային սարք) կարող է հեռացվել:

Source: opennet.ru

Добавить комментарий