د سیسټم د بوټ په وخت کې د LUKS کانټینر کوډ کول

ټولو ته شپه او ورځ په خیر! دا پوسټ به د هغو کسانو لپاره ګټور وي څوک چې د LUKS ډیټا کوډ کول کاروي او غواړي چې د لینکس (Debian، Ubuntu) لاندې ډیسکونه ډیکریټ کړي. د ریښی ویش د کوډ کولو مرحلې. او زه په انټرنیټ کې داسې معلومات نشم موندلی.

په دې وروستیو کې، په الماریو کې د ډیسکونو شمیر زیاتوالي سره، زه د /etc/crypttab له لارې د ډیرو پیژندل شویو میتودونو په کارولو سره د ډیسکونو د کوډ کولو ستونزې سره مخ شوم. په شخصي توګه، زه د دې طریقې کارولو سره یو څو ستونزې په ګوته کوم، یعنې دا چې فایل لوستل کیږي یوازې وروسته له دې چې د ریښې برخه پورته کړئ (ماونټ).، کوم چې د ZFS وارداتو باندې منفي اغیزه کوي ، په ځانګړي توګه که دوی د *_crypt وسیلې له برخو څخه جوړ شوي وي ، یا د mdadm بریدونه هم د برخې څخه جوړ شوي. موږ ټول پوهیږو چې تاسو کولی شئ په LUKS کانټینرونو کې پارټډ وکاروئ ، سمه ده؟ او همدارنګه د نورو خدماتو د پیل کولو ستونزه، کله چې لا تر اوسه کوم صفونه شتون نلري، مګر کارول زه دمخه یو څه ته اړتیا لرم (زه د کلستر شوي Proxmox VE 5.x او ZFS سره iSCSI باندې کار کوم).

د ZFSoverISCSI په اړه لږ څهiSCSI زما لپاره د LIO له لارې کار کوي، او په حقیقت کې، کله چې د iscsi هدف پیل شي او د ZVOL وسایل ونه ګوري، دا په ساده ډول د ترتیب څخه لیرې کوي، کوم چې د میلمنو سیسټمونو د بوټ کولو مخه نیسي. له همدې امله ، یا د json فایل بیک اپ بحال کول ، یا په لاسي ډول د هر VM لپاره د پیژندونکو سره وسیلې اضافه کول ، کوم چې په ساده ډول خورا ویرونکی دی کله چې په لسګونو داسې ماشینونه شتون ولري او هر ترتیب له 1 ډیسک څخه ډیر وي.

او دوهمه پوښتنه چې زه به یې په پام کې ونیسم دا دی چې څنګه کوډ کول (دا د مقالې کلیدي ټکی دی). او موږ به د دې په اړه لاندې خبرې وکړو، د کټ لاندې لاړ شئ!

ډیری وختونه ، په انټرنیټ کې ، کلیدي فایل کارول کیږي (له دې دمخه د کمانډ لخوا په سلاټ کې ځان اضافه شوی - cryptsetup luksAddKey) ، یا په نادره استثنااتو کې (د روسی ژبې انټرنیټ کې خورا لږ معلومات شتون لري) - decrypt_derived سکریپټ په /lib/cryptsetup/script/ کې موقعیت لري (البته، نورې لارې شتون لري، مګر ما دا دوه کارولي، کوم چې د مقالې اساس جوړوي). ما په کنسول کې پرته له کوم اضافي کمانډونو پرته د ریبوټ کولو وروسته د بشپړ خودمختاره شمولیت لپاره هم هڅه وکړه ، ترڅو هرڅه زما لپاره په یوځل کې "پورته شي". نو، ولې انتظار؟ —

راځه چي پیل یی کړو!

راځئ چې یو سیسټم فرض کړو ، لکه دبیان په sda3_crypt کریپټو پارټیشن کې نصب شوی او یو درجن ډیسکونه کوډ کولو ته چمتو دي او ستاسو د زړه مینځپانګې ته رامینځته شوي. موږ د sda3_crypt خلاصولو لپاره پاسفریز (پاسفریج) لرو، او دا د دې برخې څخه دی چې موږ به د چلولو (ډیکریپټ شوي) سیسټم کې د پټنوم څخه "هیش" لرې کړو او په پاتې ډیسکونو کې یې اضافه کړو. هرڅه ابتدايي دي، په کنسول کې چې موږ یې اجرا کوو:

/lib/cryptsetup/scripts/decrypt_derived sda3_crypt | cryptsetup luksFormat /dev/sdX

چیرته چې ایکس زموږ ډیسکونه، ویشونه، او نور دي.

زموږ د پاسفریج څخه د "هیش" سره ډیسکونو کوډ کولو وروسته ، تاسو اړتیا لرئ UUID یا ID ومومئ - پدې پورې اړه لري چې څوک د څه لپاره کارول کیږي او څه. موږ په ترتیب سره د /dev/disk/by-uuid او by-id څخه ډاټا اخلو.

بل ګام د دندو لپاره د فایلونو او مینی سکریپټونو چمتو کول دي چې موږ یې کار کولو ته اړتیا لرو، راځئ چې پرمخ لاړ شو:

cp -p /usr/share/initramfs-tools/hooks/cryptroot /etc/initramfs-tools/hooks/
cp -p /usr/share/initramfs-tools/scripts/local-top/cryptroot /etc/initramfs-tools/scripts/local-top/

نور

touch /etc/initramfs-tools/hooks/decrypt && chmod +x /etc/initramfs-tools/hooks/decrypt

د ../decrypt منځپانګې

#!/bin/sh

cp -p /lib/cryptsetup/scripts/decrypt_derived "$DESTDIR/bin/decrypt_derived"

نور

touch /etc/initramfs-tools/hooks/partcopy && chmod +x /etc/initramfs-tools/hooks/partcopy

د ../partcopy منځپانګې

#!/bin/sh

cp -p /sbin/partprobe "$DESTDIR/bin/partprobe"
cp -p /lib/x86_64-linux-gnu/libparted.so.2 "$DESTDIR/lib/x86_64-linux-gnu/libparted.so.2"
cp -p /lib/x86_64-linux-gnu/libreadline.so.7 "$DESTDIR/lib/x86_64-linux-gnu/libreadline.so.7"

لږ څه زیات

touch /etc/initramfs-tools/scripts/local-bottom/partprobe && chmod +x /etc/initramfs-tools/scripts/local-bottom/partprobe

منځپانګه ../partprobe

#!/bin/sh

$DESTDIR/bin/partprobe

او وروستی، د اپډیټ-initramfs څخه مخکې، تاسو اړتیا لرئ د /etc/initramfs-tools/scripts/local-top/cryptroot فایل ایډیټ کړئ، د کرښې ~ 360 څخه پیل، لاندې کوډ ټوټه

اصلي


                # decrease $count by 1, apparently last try was successful.
                count=$(( $count - 1 ))
                
                message "cryptsetup ($crypttarget): set up successfully"
                break

او دې فورمې ته یې راوړئ

ترمیم شوی


                # decrease $count by 1, apparently last try was successful.
                count=$(( $count - 1 ))
                

                /bin/decrypt_derived $crypttarget | cryptsetup luksOpen /dev/disk/by-uuid/ *CRYPT_MAP*
                /bin/decrypt_derived $crypttarget | cryptsetup luksOpen /dev/disk/by-id/ *CRYPT_MAP*

                message "cryptsetup ($crypttarget): set up successfully"
                break

په یاد ولرئ چې یا هم UUID یا ID دلته کارول کیدی شي. اصلي شی دا دی چې د HDD / SSD وسیلو لپاره اړین ډرایورونه /etc/initramfs-tools/modules ته اضافه شوي. تاسو کولی شئ ومومئ چې کوم ډرایور د قوماندې سره کارول کیږي udevadm معلومات -a -n /dev/sdX | egrep 'لټون | ډرایور'.

اوس چې موږ بشپړ شوي او ټولې فایلونه په ځای کې دي، چلوئ تازه-initramfs -u -k all -vپه ننوتلو کې باید نه وي زموږ د سکریپټونو د اجرا کولو تېروتنې. موږ ریبوټ کوو، پاسفریج داخل کړئ او یو څه انتظار وکړئ، د ډیسکونو شمیر پورې اړه لري. بیا ، سیسټم به پیل شي او د لانچ په وروستي مرحله کې ، د بیلګې په توګه د روټ برخې "ماؤنټ کولو" وروسته ، د پارټ پروب کمانډ به اجرا شي - دا به په LUKS وسیلو او هر ډول اریونو کې ټول رامینځته شوي برخې ومومي او غوره کړي ، که دا ZFS وي یا mdadm، پرته له ستونزو سره راټول شي! او دا ټول د بارولو دمخه اصلي خدمتونه او خدمتونه چې دې ډیسکونو/ارونو ته اړتیا لري.

تازه 1: هغه څنګه پام شو AEPدا طریقه یوازې د LUKS1 لپاره کار کوي.

سرچینه: www.habr.com

Add a comment