في هذا المنشور ، ستقرأ قليلاً عن بحثي الغريب أثناء الإجازة المرضية القسرية. سيكون هناك عدة أشياء في وقت واحد ، والتي ليست "أفضل ممارسة" ، ولكنها ممكنة أيضًا! إذن هذا هو برنامج تعليمي حول كيفية تثبيت Archlinux (توزيعي المفضل) بحيث:
- بدون التمهيد / التمهيد (فقط في / الجذر)
- / على lvm
- lvm داخل حاوية luks
- مع UEFI
- في جهاز افتراضي.
مع التمهيد الآمن ("صعبة" في الجهاز الظاهري من غير المرجح أن تنجح)
يشار إلى أن كل شيء سيتم تشفيره باستثناء قسم نظام EFI بملف grubx64.efi واحد - تطبيق EFI لتشغيل grub.
إذا كنت مهتما ، مرحبا بكم في القط!
أولاً ، قمت بإعداد كل شيء على جهاز الكمبيوتر المحمول Lenovo X240 ، ثم لكتابة مقال استخدمته آلة افتراضية مع OVMF في Proxmox.
إعداد اختبار:
يتم إنشاء كل شيء بشكل قياسي للغاية. تستخدم الصورة قوسي المفضل ، والذي يمكن تنزيله دائمًا من
Yandex .
بعد ذلك ، بضع نقاط على الظاهرية في Proxmox بخصوص UEFI. لاختبار تشغيل الحامل باستخدام UEFI (وإلا لن يكون مثيرًا للاهتمام) ، تحتاج إلى تعيين OVMF بدلاً من SeaBIOS في خصائص الجهاز الظاهري:

بعد ذلك ، أضف قرص UEFI وفقًا لذلك ، للحصول على شيء مثل هذا:

يمكننا الآن بدء تشغيل الجهاز الظاهري وبدء عملية التثبيت. في وحدة تحكم الجهاز الظاهري ، ابدأ تشغيل خدمة sshd على الفور ، وقم بتعيين كلمة مرور الجذر واكتشف عنوان dhcp للجهاز الظاهري:

بعد ذلك ، يمكننا مواصلة العمل على ssh لجعلها أكثر ملاءمة.
تخطيط القرص
لذلك ، بعد الاتصال بالفعل عبر ssh ، قمنا أولاً بتعيين الوقت بحيث لا يتضح لاحقًا أنه تم إنشاء أنظمة الملفات في المستقبل:
timedatectl set-ntp true && timedatectl set-timezone Europe/Moscow
تحقق من صحة كل شيء:
root@archiso ~
الآن يمكننا البدء في تقسيم القرص. في هذه المرحلة ، لدي محرك / dev / vda ، مثل وحدة تحكم Virtio وهذا مجرد قرص فارغ بدون جدول التقسيم:
root@archiso ~
سنقسمها إلى قسمين:
- قرص fat32 لتطبيقات UEFI (EFI_system_partition)
- حاوية LUKS مع كل شيء آخر
استخدم gdisk لإنشاء GPT:
root@archiso ~
بعد ذلك ، قم بإنشاء القسم الأول لـ EFI بنوع EF00 (قسم نظام EFI):
Command (? for help): n Partition number (1-128, default 1): First sector (34-31457246, default = 2048) or {+-}size{KMGTP}: Last sector (2048-31457246, default = 31457246) or {+-}size{KMGTP}: +512M Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300): <b>EF00</b> Changed type of partition to 'EFI System'
الآن قم بإنشاء قسم لـ LUKS ، حيث لن نهتم حتى بالنوع ونتركه كما هو:
Command (? for help): n Partition number (2-128, default 2): First sector (34-31457246, default = 1050624) or {+-}size{KMGTP}: Last sector (1050624-31457246, default = 31457246) or {+-}size{KMGTP}: <b>Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300): Changed type of partition to 'Linux filesystem'</b>
سنكتب التغييرات وننتهي بترميز القسم:
Command (? for help): w Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!! Do you want to proceed? (Y/N): y OK; writing new GUID partition table (GPT) to /dev/vda. The operation has completed successfully.
إنشاء حاويات وأنظمة ملفات LUKS
مع القسم الأول (vda1) ، كل شيء بسيط للغاية. نحتاج فقط لتهيئته والآن هذا هو:
root@archiso ~
القسم الثاني هو الحاوية التي يجب عليك تحضيرها أولاً. نقوم بتهيئة القسم من خلال cryptsetup وتعيين عبارة المرور:
root@archiso ~
*** لم أزعجني باختيار الشفرات ، مع الكتابة العشوائية فوق الكتابة العشوائية وغيرها ، ولكني قمت للتو بإنشاء حاوية افتراضية.
بعد ذلك ، افتح الحاوية بتحديد عبارة المرور نفسها:
root@archiso ~
الآن لدينا حاوية مفتوحة يمكن الوصول إليها من خلال مخطط الأجهزة:
root@archiso ~
الآن يمكننا الاستمرار في lvm (سأكتب بطريقة سريعة ، لأن هذا ليس موضوعًا):
root@archiso ~
بعد ذلك ، قم بإنشاء أنظمة الملفات على lv لدينا:
root@archiso ~
الآن يمكن تثبيت كل هذا لتثبيت النظام الأساسي. ستكون نقطة التثبيت / mnt ، حيث سيبدأ جذر نظامنا المستقبلي:
[root@archiso ~]
*** / boot / efi قمت بإنشائه بحيث يبقى / boot نفسه قيد التشغيل / dev / mapper / rootvg-root ، وقد تم تثبيت مجلد efi بالفعل على / dev / vda1 (قسم fat32 efi): [root@archiso ~]
تحقق من نقاط التثبيت الحالية (مفيدة دائمًا):
[root@archiso ~]
كما نرى ، كل شيء صادق والآن حان الوقت لوضع القوس نفسه.
تثبيت نظام القاعدة
قم بتثبيت الحزم الأساسية من مجموعات القاعدة والمجموعات القاعدية باستخدام حزمة pacstrap (يمكنك وضع كل ما تريده بالإضافة إلى ذلك):
pacstrap /mnt base base-devel
كل شيء يعمل بشكل مثالي ، النظام الأساسي جاهز. بطبيعة الحال ، أزلت الاستنتاج. الآن يمكننا تكوين هذا النظام للتمهيد والعمل.
من الأشياء الأساسية ، ننتج على الفور fstab:
genfstab -pU /mnt >> /mnt/etc/fstab
بعد ذلك ، اجعل chroot في هذا النظام الجديد:
[root@archiso ~]
*** arch-chroot أداة مفيدة للغاية ، لأنها تفعل كل شيء بمفردها. على الرغم من أنه يمكنك دائمًا استخدام chroot القياسي ، قبل القيام بذلك ، اتبع التعليمات الواردة في دليل gentoo -handbook wiki.gentoo.org/wiki/Handbook : AMD64 / Installation / Base section "Mounting the files files systems " الضروريةقم بتهيئة وقت النظام واسم المضيف على الفور:
ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime && \ hwclock --systohc && \ echo luks-test > /etc/hostname
قم بتعيين كلمة مرور الجذر:
[root@archiso /]
قم بإلغاء تثبيت اللغات المطلوبة في /etc/locale.gen:
[root@archiso /]
سننشئها:
[root@archiso /]
قم بتكوينها فورًا للنظام ووحدة التحكم:
[root@archiso /]
الآن قم بتكوين الملف /etc/mkinitcpio.conf ، المسؤول عن الخيارات ، والخطافات ، وما إلى ذلك عند إنشاء initramfs:
vi /etc/mkinitcpio.conf
أهم شيء هو الخطافات وترتيبها:
HOOKS=(base udev autodetect modconf block keymap encrypt lvm2 resume filesystems keyboard fsck)
*** استئناف هوك لتمهيد النظام بعد السبات من المبادلة. على جهاز افتراضي ليس هناك حاجة. نسختها من خشب الزان.الآن يمكننا إنشاء initramfs:
[root@archiso /]
الآن بعد أن أصبح لدينا النظام ، نحتاج إلى تثبيت أداة تحميل التشغيل نفسها. وقع اختياري على grub (2) ، لأنه أكثر شيوعًا إلى حد ما وقادر على تحميل النواة بسهولة من قسم مشفر (حسنًا ، أو لم أكن أبحث حقًا عن الآخرين).
قم بتثبيت حزمة grub:
[root@archiso /]
قبل إنشاء التكوين ، قم بتحرير خيارات grub الافتراضية:
vim /etc/default/grub
هنا تحتاج إلى إلغاء تعليق سطر واحد مهم (لا تعليق ، بالطبع):
وإضافة (هناك فارغ افتراضيًا) إلى GRUB_CMDLINE_LINUX:
GRUB_CMDLINE_LINUX="cryptdevice=UUID=5ad7c9ad-fb17-4839-925e-479432516c07:container"
UUID أخذت من blkid:
[root@archiso /]
نقوم بتكوين grub:
[root@archiso /]
بعد ذلك ، قم بتثبيت grub نفسه على القرص:
[root@archiso /]
*** يمكنك إضافة - إعادة فحص - تصحيح ، تحديد الهيكل ... ولكن ... يعمل حقا من تلقاء نفسه)الآن سنقوم بتحرير / etc / crypttab حتى يعرف النظام نفسه أنه عند التحميل من الضروري فك تشفير قسم LUKS. أضف السطر:
echo "container /dev/vda2 none" >> /etc/crypttab
مما يعني أنك بحاجة إلى طلب كلمة مرور (بلا) لقسم / dev / vda2 وتقديمها بالفعل كحاوية عبر مخطط الجهاز.
الآن نحن على استعداد للخروج من chroot وإعادة تشغيل النظام:
[root@archiso /]
الآن دعونا ننتقل إلى وحدة تحكم الجهاز الظاهري لرؤية النتيجة:

في هذه المرحلة ، بدأنا تطبيق EFI /boot/efi/EFI/arch/grubx64.efi مع / dev / vda1 ، والذي يطلب منا كلمة مرور لفك تشفير الحاوية الخاصة بنا.
بعد ذلك ، بعد إدخال كلمة المرور:

هنا نافذة grub المألوفة مع خيارات التمهيد من /boot/grub/grub.cfg.
عند هذه النقطة ، قام grub بفك تشفير الحاوية الخاصة بنا وتمكن من الوصول إلى هذا الملف نفسه (/boot/grub/grub.cfg) والنواة و initramfs. بعد تحديد الخيار ، سيتم تشغيل النواة بشكل افتراضي ، initramfs:

في الواقع ، جاءت النواة مع خطاف التشفير ، الذي يطلب منا مرة أخرى كلمة المرور لفك تشفير الحاوية (بشكل عام ، تحتاج إلى إدخال كلمة المرور مرتين ، ولكن قد يكون من صنعك حاويتين للتشغيل والجذر من جنون الارتياب الزائد :)
ثم بعد تحميل النظام بالكامل:
ملاحظة: لزيادة مستوى الفصام ، لا يكفي التمهيد الآمن للتوقيع على محمل إقلاع grubx64.efi.
لقد وجدت أنه من غير المثير للاهتمام مجرد وضع النواة و initramfs على / dev / vda1 ، كما فعلت بالفعل 100 مرة. لا تعرف برامج تحميل التمهيد الأخرى مثل SHIM و bootctl وما إلى ذلك كيفية القيام بذلك (حسنًا ، إذا كنت لا أعرف ، أخبرنا في التعليقات)
مواد مفيدة حول الموضوع والمواد المستخدمة