قرمز (wifi) y ssh در مرحله 1 (بوت – initrd) از Nixos – Party 2

هیچ هوش مصنوعی در ایجاد این مقاله دخیل نبوده است
زمینه
این قسمت 2 مقاله “Red and SSH در مرحله 1 (boot – initrd) از Nifos” است. قسمت 1 را می توان در اینجا یافت.
این GUIA بخشی از یک مجموعه کلاس/آموزش برای ایجاد و مدیریت یک HomeLab با استفاده از Nixes است.
مقدمه
در این بخش دوم خواهیم دید که چگونه می توان یک رابط بی سیم (WIFI) را در طول Stege1 فرآیند بوت Nixos فعال کرد. ما چالش های شناسایی و نصب درایورها ، اسکن شبکه های Wi -Fi را در مرحله 1 و خودکار کردن فرآیند اتصال در طول بوت کشف خواهیم کرد.
در این بخش دوم فرض می کنم که شما با استفاده از یک رابط اترنت توسط SSH به مرحله 1 دسترسی دارید. اگر هنوز نتوانسته اید این را پیکربندی کنید ، می توانید قسمت اول مقاله را مشاهده کنید.
برنامه:
- تأیید عملکرد طبیعی WiFi در Nixos
- درایورهای رابط بی سیم را در مرحله 1 فعال کنید
- اعتبارسنجی اسکن و اتصال شبکه های Wi -Fi در مرحله 1
- فرآیند اتصال Wi -Fi را در مرحله 1 خودکار کنید و با استفاده از SSH دسترسی از راه دور را امتحان کنید
بله … اگر آنها با قسمت فوق در قسمت 1 مقایسه کنند ، من نقاط “طرح” قسمت 2> را تغییر داده ام. <
بیایید به آن برویم!
1) تأیید عملکرد طبیعی WiFi در Nixos
اولین مورد تأیید این است که نیکس های ما می توانند از آداپتور Wi -Fi به طور عادی استفاده کنند. منظور من این است که می توانید به رابط کاربری خود بروید مدیر شبکه، شبکه های Wi -Fi را اسکن کنید ، یکی را انتخاب کرده و به درستی اتصال دهید پس از نشان دادن رمز عبور مرتبط.
اگر بتوانیم این کار را به طور عادی انجام دهیم ، من شما را به این دعوت دعوت می کنم ادامه دادن با بخش بعدی این مقاله
در صورت اتصال آداپتور بی سیم ، اما نمی توانید از آن در Nixes خود استفاده کنید ، این بدان معنی است که درایورها از دست نمی روند. در مرحله بعد نحوه نصب آداپتور Wi -Fi را بررسی خواهیم کرد.
1.1) نصب درایورهای رابط بی سیم در Nixes
من می خواستم این مرحله را درج کنم زیرا ، در آزمایشات من ، من از یک دانگل WiFi USB استفاده کرده ام که در واقع به نصب دستی راننده نیاز دارد … امیدوارم که این بخش برای کسی که در وضعیت مشابهی قرار دارد مفید باشد.
هدف ما این است که به دنبال نام از دستگاه بی سیم منظور من از مدل سخت افزار است. برای این کار بهتر است از ابزارها استفاده کنید pciutils
من usbutils
بشر اگر آنها از قسمت 1 مقاله آمده باشند ، این ابزارها باید از قبل آنها را داشته باشند: /etc/nixos/configuration.nix
بشر
با استفاده از دستورات lsusb -v
حرف lspci -k
ما می توانیم سخت افزار متصل شده توسط اتوبوس USB و PCI به تیم ما. یکی از این دو گزینه برای شما مفید خواهد بود ، زیرا آداپتورهای WiFi به طور کلی از یکی از این دو استفاده می کنند اتوبوس ارتباط در مورد من ، همانطور که من یک دانگل USB دارم ، با lsusb -v
من توانسته ام نام دستگاه خود را پیدا کنم. این است: “Realtek rtl8188eus”.
اگر آداپتور بی سیم شما از آن استفاده می کند اتوبوس PCI (به عنوان مثال اگر کارت PCI-Express باشد) می تواند از آن استفاده کند
lspci -k
برای یافتن نام
با استفاده از این نام باید خود را به Google بدهیم … و جستجو کنیم … هدف ما اکنون پیدا کردن نام درایور مربوط به این دستگاه است. بعد از یک جستجوی کوچک ، برای Dongle Realtek من فهمیدم که درایور مربوطه “RTL8XXXU” نامیده می شود و بخشی از بسته درایور تماس است: “RTL8188EUS-Aircrack”.
واضح است که در مورد شما این متفاوت خواهد بود ، متأسفانه هیچ روش سیستماتیک برای یافتن راننده مناسب وجود ندارد … اما آنها شک ندارند که کسی قبلاً همان چیزی را پشت سر گذاشته است. با برخی تحقیقات ، نام راننده را پیدا خواهید کرد.
اکنون ما باید این راننده را در نیکس خود بگنجانیم. برای این در /etc/nixos/hardware-configuration.nix
بیایید اضافه کنیم:
boot.extraModulePackages = with config.boot.kernelPackages; [
rtl8188eus-aircrack
];
استفاده: من استفاده می کنم ExtramodulePackages _ y no _availableKernelModules زیرا ، به طور خاص ، این یک درایور خارجی برای بسته بندی شده با Nixes است.
اکنون ما باید نسل جدیدی از nixes را با آن ایجاد کنیم sudo nixos-rebuild switch
و سپس سیستم را مجدداً راه اندازی کنید. پس از شروع مجدد ، آنها باید از قبل بتوانند از آداپتور Wi -Fi خود به طور عادی در Nixes ما استفاده کنند.
2) درایورهای رابط بی سیم را در مرحله 1 فعال کنید
ابتدا نام رابط بی سیم را مشخص خواهیم کرد. پوشیده ip link
ما می توانیم آداپتورهای سیستم را لیست کنیم. در مورد من به آن “WLP0S11U1” گفته می شود (از این پس مثالها از این نام برای آداپتور استفاده می کنند ، استفاده از رابط کاربری خود را فراموش نکنید).
با این اطلاعات اکنون خواهیم دید که وضعیت رابط در مرحله 1 چیست. ما قصد داریم سیستم خود را مجدداً راه اندازی کنیم و با SSH به مرحله 1 (به روشی که در قسمت 1 مقاله در معرض آن قرار دارد) وصل شویم. یک بار در مرحله 1 ما استفاده خواهیم کرد ip link
برای دیدن اینکه کدام آداپتورها در این مرحله از بوت شناسایی می شوند. امن ترین چیز این است که هیچ رابط بی سیم خود را ببینید … و این طبیعی است. در مورد عجیب که وت رابط بی سیم ذکر شده خود را مشاهده کنید ، می توانید با بخش بعدی مقاله ادامه دهید.
خوب ، پس آنچه ما باید به آن دست یابیم این است که همان رانندگان را در مرحله 1 فعال کنیم همانطور که در مرحله 2 برای Wi -Fi استفاده می شود. بهترین راه برای دستیابی به این هدف است مقایسه کردن بین رانندگان بارگذاری شده در مرحله 1 و مرحله 2. و سپس استنباط کنید (در صورت لزوم با کمک گوگل) که دقیقاً همان چیزی است که “ما در مرحله 1 از دست می دهیم” اما در مرحله 2 چیست.
برای این کار ابتدا به مرحله 2 (دسک تاپ زندگی) خواهیم رفت و از دستورات استفاده خواهیم کرد lsmod
حرف modinfo
برای لیست و دیدن جزئیات درایوهای بارگذاری شده. ما به دنبال یکی هستیم که مربوط به رابط بی سیم باشد.
با توجه به نام آداپتور من ، من موفق شده ام ، با استفاده از lsmod
، یک ماژول به نام “rtl8xxxu”. سپس با استفاده از modinfo rtl8xxxu
من توانسته ام ببینم که رابط بی سیم به طور مؤثر مرتبط است.
من همچنین از این فرصت استفاده کردم تا به مرحله 1 خود برگردم تا از همان فرمان استفاده کنم (
lsmod
) و تأیید کنید که ، در واقع ، “rtl8xxxu” در مرحله 1 نیست.
سپس ، در تئوری ، اگر بتوانیم “rtl8xxxu” را در مرحله 1 بارگذاری کنیم ، می توانیم از رابط بی سیم استفاده کنیم.
با این اطلاعات “rtl8xxxu” را به پارامتر اضافه خواهیم کرد در دسترس کرونول در ما /etc/nixos/hardware-configuration.nix
بشر با این کار ما استفاده از درایور را در مرحله 1 فعال می کنیم:
boot.initrd.availableKernelModules = ["rtl8xxxu" … ];
در بعضی موارد ممکن است استفاده از گزینه لازم باشد EnabledistribleableFirwareبشر به طور خاص اگر راننده ای که در آن حمل می کنند ممکن است لازم باشد در دسترس کرونول این یک قسمت پیش فرض از سیستم نیست و از یک منبع خارجی نصب شده است.
hardware.enableRedistributableFirmware = true;
سپس ، ما نسل جدیدی از نیکس ها ایجاد می کنیم و دوباره راه اندازی می کنیم. بازگشت به مرحله 1 توسط SSH من دوباره استفاده کرده ام ip link
و اکنون رابط ذکر شده را خواهیم دید! 🙂
نکته اضافی: در یک زمان من از درایور “8188EU” استفاده می کنم ، که به نظر می رسید مربوط به WiFi Dongle من است. اما ، به دلایلی ، این فقط در مرحله 2 کار می کرد و نه در مرحله 1. از طرف دیگر ، “rtl8xxxu” در هر دو زمینه کار می کند. اخلاق این است که a اثبات و خطا کمی تا زمانی که درایور مناسب را پیدا کنید.
3) تأیید اسکن و اتصال شبکه های Wi -Fi در مرحله 1
هنگامی که ما می دانیم که در مرحله 1 رابط بی سیم تشخیص داده می شود ، زمان استفاده از آن است. در وهله اول ما برخی از تست های اتصال را به صورت دستی انجام خواهیم داد. و سپس ، در بخش بعدی مقاله ، ما آن را خودکار خواهیم کرد.
اولین آزمایش تأیید خواهد شد که رابط کاربری می تواند شبکه های مرحله 1 را اسکن کند.
در وهله اول ما ابزارهایی را نصب خواهیم کرد که Debugo را تسهیل می کند. در /etc/nixos/configuration.nix
بسته ها را اضافه خواهیم کرد:
ما همچنین این ابزارها را در مرحله 1 می خواهیم ، بنابراین آنها را به پارامتر اضافه خواهیم کرد ابتکار کار از ما /etc/nixos/hardware-configuration.nix
:
boot.initrd.systemd.initrdBin = [ pkgs.iw pkgs.wirelesstools … ];
با بهره گیری از ما در hardware-configuration.nix
ما همچنین رابط بی سیم Stage1 را در بخش فعال خواهیم کرد network.networks
:
...
wlp0s11u1 = {
enable = true;
name = "wlp0s11u1";
DHCP = "yes";
};
...
از 1 استفاده کنید: به یاد داشته باشید که از نام رابط خود استفاده کنید.
از 2 استفاده کنید: در حال حاضر ما از DHCP استفاده خواهیم کرد تا IP ، Gateway و DNS به طور خودکار از روتر ما پیکربندی شوند.
خوب ، با این کار ما قصد داریم نسل جدیدی از Nixes ایجاد کنیم.
3.1) شبکه های آزمایش
ابتدا یک آزمایش را در مرحله 2 (رومیزی معمولی) انجام خواهیم داد. با استفاده از دستورات:
-
ip link
ما باید در دسترس بودن و رابط بی سیم را شناسایی کنیم. -
iw dev
منiwconfig
ما باید بتوانیم جزئیات رابط بی سیم را ببینیم. -
iw
منscan iwlist
ما باید شبکه های WiFi موجود را ببینیم.scan
هنگامی که ثابت شد که همه چیز در مرحله 2 “عادی” به نظر می رسد ، ما این روند را در مرحله 1 تکرار خواهیم کرد. اگر همه چیز خوب پیش برود ، ما همچنین باید بتوانیم سیگنال های Wi -Fi موجود را ببینیم.
ما با SSH به مرحله 1 وصل می شویم و از همان دستورات استفاده می کنیم: ip link
با iw dev
حرف iw
بشر
با این کار می توانیم تأیید کنیم که رابط بی سیم در مرحله 1 قادر به اسکن شبکه ها است. درخشان!
3.2) ایجاد یک تقاضا کننده با تنظیمات شبکه بی سیم
اکنون که می دانیم می توانیم در مرحله 1 اسکن کنیم ، باید برای اتصال به یکی آماده شویم. برای این کار ما باید یک فایل پیکربندی (به نام “WPA_Passphrase”) ایجاد کنیم که نام شبکه WiFi (SSID) و رمزعبور مرتبط را در داخل داشته باشد.
برای تولید پرونده پیکربندی می توانیم از دستور زیر در مرحله 2 استفاده کنیم:
wpa_passphrase "SSID" "CONTRASEÑA" | sudo tee /etc/nixos/wpa_supplicant.conf
به یاد داشته باشید که نام سیگنال خود (SSID) و رمز را به درستی نشان دهید.
پرونده تولید شده در ذخیره می شود /etc/nixos/wpa_supplicant.conf
بشر ما به این پرونده پیکربندی در مرحله 1 نیاز خواهیم داشت. بنابراین ما استفاده خواهیم کرد اسرار برای ایجاد “کپی” که در صورت موجود بودن در دیسک قوچ از بوت (این که قبلاً در قسمت 1 این مقاله دیدیم). برای این کار ، پرونده را اضافه خواهیم کرد /etc/nixos/wpa_supplicant.conf
به لیست اسرار از /etc/nixos/hardware-configuration.nix
:
...
secrets = {
...
"/etc/nixos/wpa_supplicant.conf" = "/etc/nixos/wpa_supplicant.conf";
};
...
در hardware-configuration.nix
ما از اضافه کردن بسته WPA_Supplying به ابتکار کار به طوری که می توان از آن در مرحله 1 استفاده کرد. این بسته مسئول ساخت پرونده پیکربندی است که ما تولید کرده ایم ، می تواند به عنوان بخشی از فرآیند انتخاب و مجوز یک شبکه WiFi استفاده شود:
boot.initrd.systemd.initrdBin = [ pkgs.wpa_supplicant … ];
سرانجام ، ما نیز اضافه خواهیم کرد hardware-configuration.nix
4 ماژول a در دسترس کرونول لازم است که مرحله 1 بتواند شبکه های Wi -Fi را اداره کند و پروتکل های امنیتی آنها را درک کند:
boot.initrd.availableKernelModules = ["ccm" "ctr" "iwlmvm" "iwlwifi" … ];
با تمام تغییرات ذخیره شده اکنون باید نسل جدیدی از نیکس ها را ایجاد کنیم و سیستم را مجدداً راه اندازی کنیم.
3.3) اتصال به یک شبکه بی سیم با استفاده از تقاضا کننده یک مرحله 1
ما بالاخره قصد داریم به هم وصل شویم! ما SSH را به مرحله 1 Nixos وارد خواهیم کرد و سپس این دستور را اجرا خواهیم کرد:
wpa_supplicant -i wlp0s11u1 -c /etc/nixos/wpa_supplicant.conf -B
به یاد داشته باشید که از نام رابط خود استفاده کنید
اگر همه چیز خوب پیش برود ، این یک روند را آغاز می کند پیشینه برای استفاده از رابط بی سیم که در -i
برای پیوند به شبکه Wi -Fi که توسط پرونده مشخص شده است wpa_supplicant.conf
بشر
پس از چند ثانیه انتظار ، می توانیم اتصال را با استفاده از این دستورات بررسی کنیم:
-
ip link
رابط بی سیم “بالا” باید دیده شود. -
iw dev
ما باید یک سری از اطلاعات را نشان دهیم که وضعیت اتصال Wi -Fi را نشان می دهد. -
iw dev NOMBRE_INTERFAZ_WIFI link
ما باید پیامی را ببینیم که تأیید شود که اتصال WiFi وجود دارد. -
ip addr
ما باید IP را که به لطف DHCP به رابط اختصاص یافته است ، ببینیم.
اگر همه چیز خوب پیش برود ، ما در مرحله 1 WiFi داریمبشر
سرانجام ، اگر می خواهیم ، می توانیم DHCP را غیرفعال کنیم و استاتیک پارامترهای IP (آدرس) ، دروازه و DNS را به رابط خود اختصاص دهیم. این کار می تواند به همان روشی انجام شود که در قسمت 1 این مقاله با رابط اترنت موفق می شویم. برای این ما تغییر می دهیم /etc/nixos/hardware-configuration.nix
بعضی چیزها:
...
wlp0s11u1 = {
enable = true;
name = "wlp0s11u1";
#DHCP = "yes"; #Comentamos para desactivar DHCP
#Añadimos los parámetros de forma manual
address = [ "192.168.4.151/24" ];
gateway = [ "192.168.4.1" ];
dns = [ "8.8.8.8" ];
};
...
برای دانستن چی خطاب حرف دروازه رقم ، ما می توانیم از دستورات استفاده کنیم
ip route
حرفip link
برای فهمیدن اینکه کدام IP و Gateway به طور خودکار توسط سیستم ما استفاده می شود. سپس آن مقادیر را کپی می کنیم. به یاد داشته باشید که از نام رابط بی سیم خود استفاده کنید.
با این کار استفاده از SSH آسان تر خواهد بود ، زیرا ما اطمینان می دهیم که همیشه IP مشابه را داریم.
4) فرآیند اتصال Wi -Fi را در مرحله 1 خودکار کنید و با استفاده از SSH دسترسی از راه دور را امتحان کنید
در این مرحله آخر ما به دنبال ایجاد یک فیلمنامه برای انجام فرآیند اتصال شبکه Wi -Fi در مرحله 1 به طور خودکار.
برای این کار موارد زیر را اضافه خواهیم کرد script
بوها /etc/nixos/hardware-configuration.nix
:
...
services = {
...
ConnectWifi = {
enable = true;
wants = [ "systemd-udev-settle.service" "network.target" "initrd-nixos-copy-secrets.service" ];
after = [ "systemd-udev-settle.service" "network.target" "initrd-nixos-copy-secrets.service" ];
before = [ "systemd-ask-password-console.service" ];
wantedBy = [ "systemd-ask-password-console.service" ];
unitConfig = {
Description = "ConnectWifi";
DefaultDependencies = false;
};
serviceConfig = {
Type = "forking";
ExecStart="${pkgs.bash}/bin/sh -c 'wpa_supplicant -i wlp0s11u1 -c /etc/nixos/wpa_supplicant.conf -B || true'";
};
};
...
};
...
به یاد داشته باشید که تغییر کنید
-i
نام رابط بی سیم به شما.
از 1 استفاده کنید: این است فیلمنامه بعد از سخت افزار اجرا می شود (systemdd-udv-settle.service) ، اسرار (initrd-nixos-copy-secrets.service) و پایه سیستم شبکه (شبکه) در دسترس هستند و قبل از اینکه لوکس از کلید بپرسد (systemd-ask-password-console.service). منظورم این است که قبل از مرحله 2.
با استفاده از 1.1: در صورت عدم استفاده از سیستم شما ، مطمئناً باید تغییر کنید systemd-ask-password-console.service از طرف sysroot.mount (یا تعریف دیگر از سیستم که به نیاز شما تنظیم می شود).
از 2 استفاده کنید: او فیلمنامه در حالت اجرا کنید فحش و با wpa_supplicant در پیشینه (-B
) برای قطع سایر فرآیندهای مرحله 1. او || true
برای جلوگیری از آن استفاده می شود سیستم فکر کن wpa_supplicant “او شکست خورد” در حالی که برای دستیابی به اتصال WiFi (چیزی طبیعی در پروتکل اتصال WiFi).
بعد از تولید نسل جدید Nixes و راه اندازی مجدد سیستم ، می توانیم تأیید کنیم که اتصال WiFi به خوبی با استفاده از SSH است. در واقع ، ما می توانیم با استفاده از IP که در آداپتور بی سیم تنظیم کرده ایم ، مستقیماً با SSH متصل شویم.
SSH در هر وای فای در مرحله 1 !!!
اگر می خواهیم ، می توانیم رابط اترنت را غیرفعال کنیم و فقط از WiFi استفاده کنیم. همچنین می تواند زمان مناسبی برای حذف ابزارهایی باشد که ما فقط در طی فرآیند پیکربندی از آنها استفاده می کنیم مانند: iw
با wirelesstools
با pciutils
حرف usbutils
بشر وت sudo nix-collect-garbage -d
همچنین می تواند برای تمیز کردن حافظه پنهان ما مفید باشد.
سرانجام یک یادآوری: فقط از SSH در مرحله 1 به عنوان یک اشکال زدایی استفاده کنید … توصیه نمی شود SSH در آن مرحله از بوت داشته باشید.
پایان
امیدوارم این مقاله از دو بخش از سودمندی آن برای داشتن یک شبکه و SSH در مرحله 1 از Nixos باشد
باز هم می خواهم از وبلاگ اسپنسر Balogh بخاطر GUIA ضروری خود در درک نحوه عملکرد شبکه Stage1 تشکر کنم.
منابع دیگر اطلاعاتی که من استفاده کرده ام:
همانطور که در ابتدا اظهار نظر می کنم ، این GUIA به عنوان پیش نیاز برای اجرای یک سیستم قفل از راه دور و بیمه پارتیشن لوکس در طی فرآیند بوت متولد می شود.
sali2 🙂