Usimbuaji wa kontena la LUKS wakati wa kuwasha mfumo

Mchana na usiku mwema kila mtu! Chapisho hili litakuwa muhimu kwa wale wanaotumia usimbuaji data wa LUKS na wanataka kusimbua diski chini ya Linux (Debian, Ubuntu) kwenye hatua ya usimbuaji wa kizigeu cha mizizi. Na sikuweza kupata habari kama hiyo kwenye mtandao.

Hivi majuzi, pamoja na kuongezeka kwa idadi ya diski kwenye rafu, nilikutana na shida ya kusimbua diski kwa kutumia njia inayojulikana zaidi kupitia /etc/crypttab. Binafsi, ninaangazia shida kadhaa kwa kutumia njia hii, ambayo ni kwamba faili inasomwa tu baada ya kupakia (kuweka) kizigeu cha mizizi, ambayo huathiri vibaya uagizaji wa ZFS, haswa ikiwa zilikusanywa kutoka kwa sehemu kwenye kifaa cha *_crypt, au uvamizi wa mdadm pia uliokusanywa kutoka kwa sehemu. Sote tunajua kuwa unaweza kutumia zilizogawanywa kwenye vyombo vya LUKS, sivyo? Na pia shida ya kuanza mapema kwa huduma zingine, wakati hakuna safu bado, na kutumia Tayari ninahitaji kitu (ninafanya kazi na Proxmox VE 5.x iliyounganishwa na ZFS juu ya iSCSI).

Kidogo kuhusu ZFSoverISCSIiSCSI inanifanyia kazi kupitia LIO, na kwa kweli, wakati lengo la iscsi linapoanza na halioni vifaa vya ZVOL, huwaondoa tu kutoka kwa usanidi, ambao huzuia mifumo ya wageni kuanza. Kwa hivyo, ama kurejesha faili ya chelezo ya json, au kuongeza vifaa kwa mikono na vitambulisho vya kila VM, ambayo ni mbaya sana wakati kuna mashine kadhaa kama hizo na kila usanidi una zaidi ya diski 1.

Na swali la pili ambalo nitazingatia ni jinsi ya kufuta (hii ndio jambo kuu la kifungu). Na tutazungumza juu ya hii hapa chini, nenda kwenye kata!

Mara nyingi kwenye mtandao hutumia faili muhimu (ambayo iliongezwa kiotomatiki kwa yanayopangwa na amri - cryptsetup luksAddKey), au isipokuwa adimu (kuna habari kidogo sana kwenye mtandao wa lugha ya Kirusi) - hati ya decrypt_derived, iliyoko ndani. /lib/cryptsetup/script/ (bila shaka, kuna njia nyingine, lakini nilitumia hizi mbili, ambazo ziliunda msingi wa makala). Nilijitahidi pia uanzishaji kamili wa uhuru baada ya kuwasha tena, bila amri zozote za ziada kwenye koni, ili kila kitu "kiondoke" kwangu mara moja. Kwa hiyo, kwa nini kusubiri? -

Tuanze!

Tunachukulia mfumo, kwa mfano Debian, uliosakinishwa kwenye kizigeu cha sda3_crypt crypto na diski kadhaa tayari kusimba na kuunda chochote ambacho moyo wako unatamani. Tuna maneno muhimu (nenosiri) ya kufungua sda3_crypt na ni kutoka kwa sehemu hii kwamba tutaondoa "hash" ya nenosiri kwenye mfumo unaoendesha (uliofutwa) na kuiongeza kwenye diski nyingine. Kila kitu ni cha msingi, kwenye koni tunayofanya:

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

ambapo X ni diski zetu, partitions, nk.

Baada ya kusimba diski na heshi kutoka kwa kifungu chetu muhimu, unahitaji kujua UUID au kitambulisho - kulingana na ni nani anayetumiwa kwa nini. Tunachukua data kutoka /dev/disk/by-uuid na by-id, mtawalia.

Hatua inayofuata ni kuandaa faili na hati ndogo za kazi tunazohitaji kufanya kazi, wacha tuendelee:

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/

zaidi

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

Yaliyomo kwenye ../decrypt

#!/bin/sh

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

zaidi

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

Yaliyomo ../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"

kidogo zaidi

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

Yaliyomo ../partprobe

#!/bin/sh

$DESTDIR/bin/partprobe

na mwishowe, kabla ya kusasisha-initramfs, unahitaji kuhariri faili /etc/initramfs-tools/scripts/local-top/cryptroot, kuanzia mstari ~360, kipande cha nambari hapa chini.

Original


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

na kuleta kwa fomu hii

Imehaririwa


                # 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

Kumbuka kuwa UUID au kitambulisho kinaweza kutumika hapa. Jambo kuu ni kwamba madereva muhimu kwa vifaa vya HDD/SSD huongezwa kwa /etc/initramfs-tools/modules. Unaweza kujua ni dereva gani anayetumiwa na amri maelezo ya udevadm -a -n /dev/sdX | egrep 'kuangalia|DEREVA'.

Sasa kwa kuwa tumemaliza na faili zote ziko mahali, tunaendesha sasisha-initramfs -u -k zote -v, katika ukataji miti lazima isiwe makosa katika utekelezaji wa hati zetu. Tunaanzisha upya, ingiza maneno muhimu na kusubiri kidogo, kulingana na idadi ya disks. Ifuatayo, mfumo utaanza na katika hatua ya mwisho ya kuanza, ambayo ni baada ya "kuweka" kizigeu cha mizizi, amri ya partprobe itatekelezwa - itapata na kuchukua sehemu zote zilizoundwa kwenye vifaa vya LUKS na safu yoyote, iwe ZFS au mdadm, itakusanywa bila matatizo! Na haya yote kabla ya kupakia huduma kuu zinazohitaji diski/safu hizi.

sasisha1: Vipi niliona AEP, njia hii inafanya kazi kwa LUKS1 pekee.

Chanzo: mapenzi.com

Kuongeza maoni