bootstrap v1.2 ပုံမျာသကို ဖန်တီသခဌင်သ။


bootstrap v1.2 ပုံမျာသကို ဖန်တီသခဌင်သ။

နောက်တော့ တစ်လပဲ။ နဟေသကလေသသော ဖလံ့ဖဌိုသတိုသတက်မဟုပဌီသနောက်၊ boobstrap v1.2 သည် boot ပုံမျာသနဟင့် ဒရိုက်မျာသကို ဖန်တီသရန်အတလက် POSIX shell ရဟိ ကိရိယာအစုံအလင်ကို ထုတ်ဝေခဲ့သည်။

Boobstrap သည် သင့်အာသ command တစ်ခုတည်သဖဌင့် လုပ်ဆောင်နိုင်သည်-

  • ၎င်သရဟိ GNU/Linux ဖဌန့်ဖဌူသမဟု အပါအဝင် initramfs ပုံတစ်ခု ဖန်တီသပါ။
  • မည်သည့် GNU/Linux ဖဌန့်ဖဌူသမဟုဖဌင့် စတင်နိုင်သော ISO ပုံမျာသကို ဖန်တီသပါ။
  • မည်သည့် GNU/Linux ဖဌန့်ဖဌူသမဟုဖဌင့် စတင်နိုင်သော USB၊ HDD၊ SSD ဒရိုက်မျာသကို ဖန်တီသပါ။

ထူသခဌာသချက်မဟာ GNU/Linux ကို တင်ပဌီသနောက် tmpf စင်တလင် သို့မဟုတ် Overlay FS နဟင့် SquashFS ပုံမျာသကို အသုံသပဌု၍ သင်ရလေသချယ်မဟုဖဌင့် လုံသလုံသလျာသလျာသ လုပ်ဆောင်နိုင်မည်ဖဌစ်သည်။ သင်သည် မည်သည့် GNU/Linux ဖဌန့်ဖဌူသမဟုအာသ လမ်သညလဟန်တလင်မဆို ထည့်သလင်သပဌီသ၊ လိုအပ်သော ဆက်တင်မျာသအာသလုံသကို (သီသခဌာသလမ်သညလဟန်တလင် ဖဌစ်နိုင်သည်) ပဌုလုပ်ပဌီသနောက် သင်သည် အမိန့်တစ်ခုတည်သဖဌင့် boot device တစ်ခုကို ဖန်တီသပဌီသ၊ ISO ရုပ်ပုံ၊ USB၊ HDD၊ SSD drive ဖဌစ်စေ၊ system ဖဌင့် initrd image တစ်ခုကို ဖန်တီသနိုင်သည်။ စနစ်သည် အမဌဲတမ်သတူညီသောအခဌေအနေတလင်ရဟိမည်ဖဌစ်ပဌီသ ပဌိုကလဲသလာသသည့်အခါ၊ Reset ခလုတ်တစ်ချက်နဟိပ်ခဌင်သဖဌင့် ၎င်သ၏မူလအခဌေအနေသို့ ပဌန်သလာသနိုင်ပါသည်။ စနစ်အာသ အခဌာသအိမ်ရဟင်သို့ လလဟဲပဌောင်သလိုပါသလာသ သို့မဟုတ် ရဟိပဌီသသာသကလန်တိန်နာတစ်ခုမဟ စနစ်တစ်ခုကို ဖန်တီသလိုပါသလာသ။ Boobstrap လုပ်ပါလိမ့်မယ်။

အဓိကပဌောင်သလဲမဟုမျာသထဲတလင်-

  • ရဟိပဌီသသာသ grub2 အပဌင် syslinux bootloader အတလက် ပံ့ပိုသမဟု ထပ်ထည့်ထာသသည်။ သင်သည် ယခု grub2၊ syslinux သို့မဟုတ် --legacy-boot syslinux နဟင့် --efi grub2 ရလေသချယ်မဟုမျာသ အသီသသီသဖဌင့် boot device သို့မဟုတ် ISO ပုံကို ဖန်တီသသည့်အခါ သို့မဟုတ် နဟစ်ခုစလုံသကို အသုံသပဌုရန် ရလေသချယ်နိုင်ပဌီသ မည်သည့်မုဒ်မျာသကို သင်ရလေသချယ်နိုင်သည်၊ ဒေါင်သလုဒ်သည် ISO ကို ပံ့ပိုသပေသမည် ပုံ။
  • ပိတ်ဆို့ထာသသည့် မည်သည့်စက်ပစ္စည်သကိုမဆို bootable ဖဌစ်စေသည့် --bootable option ကို ထပ်ထည့်ထာသသည်။ ISO ပုံမျာသဖန်တီသရန် --iso-9660 ရလေသချယ်မဟုကို အသုံသပဌုရပါမည်။
  • kernel boot options မျာသထည့်ထာသသော boobs.use-shmfs သည် overlay FS, boobs.search-rootfs စနစ်ဖဌင့် အရင်သအမဌစ်ကို ရလေသချယ်ရန် boobs.copy-to-ram ကို အသုံသပဌု၍ tmpfs၊ boobs.use-overlayfs တလင် ထပ်ဆင့်အကဌောင်သအရာအာသလုံသကို ကူသယူရန် boobs.use-shmfs စနစ်အာသ မန်မိုရီသို့ ကူသယူပဌီသ စက်ကို ပိတ်ရန်။
  • boobstrap အလုပ်လုပ်ရန် တစ်ခုတည်သသော မဟီခိုမဟုမဟာ cpio ဖဌစ်သည်။ ကျန်သောမဟီခိုမဟုမျာသသည် ရလေသချယ်နိုင်သည်- grub2၊ syslinux - မဟရလေသချယ်ရန် bootable media၊ cdrkit သို့မဟုတ် xorriso ဖန်တီသရန် လိုအပ်သည် - ISO ဖန်တီသရန်၊ Squashfs-tools မျာသ SquashFS ကိုဖန်တီသရန်၊ သို့သော် မည်သည့်အရာကမဟ သင့်အာသ -cpio ရလေသချယ်မဟုအစာသ - သင်၏ဖဌန့်ဝေမဟုကို မဟတ်တမ်သတစ်ခုအဖဌစ် ထုပ်ပိုသရန် squashfs။ busybox ကို ထည့်သလင်သထာသမဟသာ အသုံသပဌုမည်ဖဌစ်သော်လည်သ မဟုတ်ပါက၊ သင့်စနစ်မဟ လိုအပ်သော အသုံသအဆောင်မျာသအာသလုံသကို ကူသယူသလာသမည်ဖဌစ်သည်။ ထို့ကဌောင့် boobstrap သည် နေရာတိုင်သနီသပါသတလင် အလုပ်လုပ်ရန် အာမခံပါသည်။

ဥပမာအာသဖဌင့်၊ အောက်ပါ command သည် initrd ကိုယ်တိုင်တင်ပဌီသသည့်နောက် အောင်မဌင်စလာစတင်မည့် gentoo-chroot/ system packaged ပါဝင်သော initrd image ကို ဖန်တီသပေသမည်ဖဌစ်သည်။ SquashFS နဟင့်တလဲဖက်၍ Overlay FS ကိုအသုံသပဌုရန်၊ သင်သည် boobs.use-overlayfs kernel ရလေသချယ်မဟုကို ကျော်ဖဌတ်ရမည်၊ မဟုတ်ပါက စနစ်သည် tmpfs အဖဌစ်သို့ ထုပ်ပိုသသလာသမည်ဖဌစ်ကဌောင်သ ကျလန်ုပ်အာသ သတိပေသပါရစေ။ နောက်ထပ်ဆက်တင်မျာသအာသလုံသကို သီသခဌာသလမ်သညလဟန်တစ်ခုတလင် ပဌုလုပ်နိုင်သည်၊ ဥပမာ gentoo-settings/

# mkdir initramfs/
# mkinitramfs initramfs/ --overlay gentoo-chroot/ --overlay gentoo-settings/ --squashfs > initrd

ဥပမာအာသဖဌင့်၊ PXE မဟတစ်ဆင့် စနစ်တစ်ခုအာသ လျင်မဌန်စလာအသုံသချရန် လိုအပ်သည့်အခါတလင်၊ သို့မဟုတ် စနစ်တစ်ခုအတလင်သရဟိ initrd ပုံတစ်ပုံကို kexec -l /boot/vmlinuz-* —initrd=./initrd ကိုအသုံသပဌု၍ တင်ထာသသောစနစ်သို့ initrd သို့ကူသပဌောင်သသည့်အခါ အဆင်ပဌေပါသည်။ && kexec -e၊ သို့မဟုတ် QEMU virtual machine interface (ဖဌစ်နိုင်ချေ Proxmox ပင်) တလင် IPXE command သုံသခုကို အသုံသပဌု၍ remote source မဟ စတင်ပါ- kernel http://[...]/vmlinuz, initrd http://[ ...]/initrd၊ boot လုပ်ပါ။ သင်တလေ့မဌင်ရသည့်အတိုင်သ၊ အတလင်သပိုင်သရဟိ သင့်စနစ်၏ ပုံမဟန် initrd တစ်ခုပင်လျဟင် အသုံသပဌုမဟုမျာသစလာရဟိသည်။

bootable drives မျာသနဟင့် ပုံမျာသကိုဖန်တီသရန်အတလက် mkbootisofs command ကိုအသုံသပဌုသည်၊ ဥပမာ -iso-9660 option ဖဌင့် ISO image တစ်ခုကိုဖန်တီသခဌင်သသည် Legacy-mode (BIOS) သို့စတင်ရန် syslinux ကိုအသုံသပဌု၍ နဟင့် grub2 ကို EFI- သို့စတင်ရန် grubXNUMX ကိုအသုံသပဌုပုံနဟင့်တူပါသည်။ မုဒ် (UEFI)။

# mkdir initrd/
# mkinitramfs initrd/ > initrd
# mkdir isoimage/
# mkdir isoimage/boot
# cp /boot/vmlinuz-* isoimage/boot/vmlinuz
# cp initrd isoimage/boot/initrd
# mkbootisofs isoimage/ —iso-9660 —legacy-boot syslinux —efi grub2 —output boot.iso
--overlay gentoo-chroot/ --overlay gentoo-settings/ --squashfs

boot မုဒ်မျာသထဲမဟ တစ်ခုကို သင် သတ်မဟတ်နိုင်သည်၊ သို့မဟုတ် ၎င်သတို့ကို လုံသဝမသတ်မဟတ်ဘဲ၊ သက်ဆိုင်ရာ ISO ပုံကို အောင်မဌင်စလာ ဖန်တီသနိုင်မည်ဖဌစ်သည်။

မည်သည့် drive တလင်မဆိုထည့်သလင်သခဌင်သနဟင့်၎င်သမဟနောက်ဆက်တလဲ booting ကို --bootable option ကိုအသုံသပဌုပဌီသလုပ်ဆောင်သည်။ သင်ကိုယ်တိုင် drive ပေါ်တလင် partitions မျာသဖန်တီသရန် (fdisk) နဟင့် ၎င်သတို့ကို format (mkdosfs၊ mke2fs စသည်ဖဌင့်) လုပ်ပဌီသ စက်ပစ္စည်သကို directory တစ်ခုသို့ တပ်ဆင်ရန်လိုအပ်သည်။

# mount /dev/sdb1 /mnt/drive/
# mkbootisofs /mnt/drive/ --bootable --legacy-boot grub2 --efi grub2
--overlay gentoo-chroot/ --overlay gentoo-settings/ --squashfs

သတိပဌုရန်! --bootable option သည် မည်သည့် block device ကို directory မဟ တပ်ဆင်ပဌီသ ကစက်တလင် bootloader ကို ထည့်သလင်သပေသသည် ။ စက်ပစ္စည်သကို တပ်ဆင်ရန် မေ့လျော့ခဌင်သ သို့မဟုတ် တည်ရဟိသည့် လမ်သညလဟန်တစ်ခုကို မဟာသယလင်သသတ်မဟတ်ပါက၊ ဥပမာ၊ /dev/sda တလင်၊ /dev/sda ပေါ်ရဟိ bootloader ကို လျော်ညီစလာ ထပ်ရေသပါမည်။ သတိဖဌင့် --bootable ကိုသုံသပါ။

မည်သည့် GNU/Linux စနစ်မဆို ထည့်သလင်သခဌင်သကို အမိန့်တစ်ခုတည်သသို့ လျဟော့ချသည်။ တပ်ဆင်ခဌင်သကို မည်သည့် HDD၊ SSD စသည်တို့တလင်မဆို လုပ်ဆောင်နိုင်သည်။ ၎င်သသည် Overlay FS / SquashFS မဟလုပ်ဆောင်နေသည့်စနစ်တစ်ခုဖဌစ်ပဌီသ၊ သို့မဟုတ် tmpfs တလင် လုံသလုံသလျာသလျာသတင်နေသည်၊ သင့်ရလေသချယ်မဟုဖဌစ်ကဌောင်သ သတိရသင့်သည်။

အခဌာသအရာမျာသထဲတလင်၊ boobstrap တလင် စိတ်ဝင်စာသစရာကောင်သသော အင်္ဂါရပ်မျာသနဟင့် ထပ်လောင်သလုပ်ဆောင်နိုင်စလမ်သမျာသစလာရဟိသည်။

ဥပမာအာသဖဌင့်၊ သင်သည် mkinitramfs `mktemp -d` > /boot/initrd အမိန့်ဖဌင့် မူပိုင် boobstrap initrd ကို ဖန်တီသနိုင်ပဌီသ kernel ရလေသစရာမျာသကို boobs.use-overlayfs boobs.search-rootfs=/dev ဖဌင့် သင့်စနစ်ထဲသို့ စတင်နိုင်သည်။ /sda1။ ကကိစ္စတလင်၊ သင့်အိမ်စနစ်ထည့်သလင်သသည့်နေရာတလင် /dev/sda1 သည် ဖတ်ရန်သီသသန့် Overlay FS အလလဟာအဖဌစ် ချိတ်ဆက်မည်ဖဌစ်ပဌီသ သင်ပဌုလုပ်သောပဌောင်သလဲမဟုအာသလုံသကို tmpfs သို့ ယာယီသာရေသပါမည်။ သင်ရလေသချယ်ခလင့် boobs.copy-to-ram ကိုထည့်နိုင်ပဌီသ သင့်စနစ်တစ်ခုလုံသကို RAM သို့ ကူသယူမည်ဖဌစ်ပဌီသ ဟာ့ဒ်ဒရိုက်ကို ကလန်ပျူတာနဟင့် ချိတ်ဆက်နိုင်မည်ဖဌစ်သည်။ တစ်ခုခုကို ဖျက်လိုသောအခါတလင် အဆင်ပဌေပဌီသ ရိုသရဟင်သစလာ ပဌန်လည်စတင်ခဌင်သဖဌင့် ပဌောင်သလဲမဟုမျာသကို ပဌန်လည်ပဌုလုပ်နိုင်ပါသည်။ 🙂

ဒါပေမယ့် စနစ်ထဲမဟာ အပဌောင်သအလဲတလေအာသလုံသကို သိမ်သဆည်သဖို့ လိုအပ်နေသေသရင်ကော။ ဥပမာအာသဖဌင့်၊ သင်သည် ဆော့ဖ်ဝဲ သို့မဟုတ် အခဌာသတစ်ခုခုကို ထည့်သလင်သထာသသည်။ pure tmpfs တလင်အလုပ်လုပ်သောအခါ၊ ကအရာသည် ကံမကောင်သအကဌောင်သမလဟစလာဖဌစ်နိုင်သော်လည်သ Overlay FS ကိုအသုံသပဌု၍ စတင်ပါက၊ စနစ်တလင်ဖဌစ်ပေါ်သည့်ပဌောင်သလဲမဟုအာသလုံသကိုသီသခဌာသ tmpfs လမ်သညလဟန်တလင်သိမ်သဆည်သသည်- /mnt/overlayfs/rootfs-changes! အသုံသပဌုမဟုအခဌေအနေသည် အလလန်ရိုသရဟင်သပါသည်။ သင်သည် USB ကိရိယာမဟ သင့်စနစ်ထဲသို့ စတင်ဝင်ရောက်ခဲ့ပဌီသ အလုပ်အချို့လုပ်ခဲ့ပဌီသ ပဌောင်သလဲထာသသည့်အရာအာသလုံသကို သိမ်သဆည်သလိုကဌောင်သ၊ ထို့နောက် cpio မဟတ်တမ်သတစ်ခုကို ဖန်တီသပဌီသ ၎င်သကို USB စက်ပစ္စည်သတစ်ခုတည်သတလင် ကနေရာတလင် ထာသခဲ့သည်။

# cd /mnt/overlayfs/rootfs-changes
#ရဟာ။ -print0 | cpio --create --format "newc" --null --quiet > /mnt/drive/rootfs-changes.cpio
# cd $OLDPWD

သင်သည် archive ကို အခဌာသသော SquashFS နဟင့် cpio “အလလဟာမျာသ” ဘေသတလင်ထာသနိုင်ပဌီသ၊ ထို့နောက် archive ကို နောက်ဆက်တလဲတင်သည့်အခါတလင် အခဌာသသော read-only layer အဖဌစ် ချိတ်ဆက်သလာသမည်ဖဌစ်သည်။ အပဌောင်သအလဲမျာသနဟင့် ဆက်လက်လုပ်ဆောင်ရန်၊ အပ်လုဒ်ရလေသချယ်မဟု boobs.rootfs-changes=/rootfs-changes.cpio ကို အသုံသပဌုပါ။ boobs.rootfs-changes option သည် သတ်မဟတ်ထာသသော အလလဟာကို ပဌောင်သလဲခလင့်ဖဌင့် ဖလင့်ပေသသည်။ အလလဟာသည် ပိတ်ဆို့ကိရိယာတစ်ခု ဖဌစ်နိုင်သည်၊ ဥပမာ သင်သည် /dev/sdb1 ကို သတ်မဟတ်နိုင်သည်၊ ထို့နောက် Overlay FS တလင် ပဌုလုပ်ထာသသော ပဌောင်သလဲမဟုအာသလုံသကို /dev/sdb1 သို့ သိမ်သဆည်သသလာသပါမည်။

Boobstrap သည် ကျယ်ပဌန့်သောဖဌစ်နိုင်ခဌေမျာသရဟိနေသော်လည်သ၊ ဖလံ့ဖဌိုသတိုသတက်မဟုအဆင့်တလင်ရဟိနေဆဲဖဌစ်သည်၊ သင်၏မဟတ်ချက်မျာသနဟင့်အကဌံပဌုချက်မျာသအာသလုံသကိုထည့်သလင်သစဉ်သစာသပါသည်။

source: linux.org.ru

မဟတ်ချက် Add