برنامه نویسی

قرمز (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 دسترسی دارید. اگر هنوز نتوانسته اید این را پیکربندی کنید ، می توانید قسمت اول مقاله را مشاهده کنید.

برنامه:

  1. تأیید عملکرد طبیعی WiFi در Nixos
  2. درایورهای رابط بی سیم را در مرحله 1 فعال کنید
  3. اعتبارسنجی اسکن و اتصال شبکه های Wi -Fi در مرحله 1
  4. فرآیند اتصال Wi -Fi را در مرحله 1 خودکار کنید و با استفاده از SSH دسترسی از راه دور را امتحان کنید

بله … اگر آنها با قسمت فوق در قسمت 1 مقایسه کنند ، من نقاط “طرح” قسمت 2> را تغییر داده ام. <

بیایید به آن برویم!


1) تأیید عملکرد طبیعی WiFi در Nixos

اولین مورد تأیید این است که نیکس های ما می توانند از آداپتور Wi -Fi به طور عادی استفاده کنند. منظور من این است که می توانید به رابط کاربری خود بروید مدیر شبکه، شبکه های Wi -Fi را اسکن کنید ، یکی را انتخاب کرده و به درستی اتصال دهید پس از نشان دادن رمز عبور مرتبط.

NetworkManager و 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 برای لیست و دیدن جزئیات درایوهای بارگذاری شده. ما به دنبال یکی هستیم که مربوط به رابط بی سیم باشد.

ماژول های بارگذاری شده در مرحله 2 مربوط به rtl8xxxu

با توجه به نام آداپتور من ، من موفق شده ام ، با استفاده از 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 scan ما باید شبکه های WiFi موجود را ببینیم.

هنگامی که ثابت شد که همه چیز در مرحله 2 “عادی” به نظر می رسد ، ما این روند را در مرحله 1 تکرار خواهیم کرد. اگر همه چیز خوب پیش برود ، ما همچنین باید بتوانیم سیگنال های Wi -Fi موجود را ببینیم.

ما با SSH به مرحله 1 وصل می شویم و از همان دستورات استفاده می کنیم: ip linkبا iw dev حرف iw scanبشر

با این کار می توانیم تأیید کنیم که رابط بی سیم در مرحله 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 به رابط اختصاص یافته است ، ببینیم.

اتصال WiFi دستی در مرحله 1

اگر همه چیز خوب پیش برود ، ما در مرحله 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 !!!

اتصال اتوماتیک Wi -Fi در مرحله 1

اگر می خواهیم ، می توانیم رابط اترنت را غیرفعال کنیم و فقط از WiFi استفاده کنیم. همچنین می تواند زمان مناسبی برای حذف ابزارهایی باشد که ما فقط در طی فرآیند پیکربندی از آنها استفاده می کنیم مانند: iwبا wirelesstoolsبا pciutils حرف usbutilsبشر وت sudo nix-collect-garbage -d همچنین می تواند برای تمیز کردن حافظه پنهان ما مفید باشد.

سرانجام یک یادآوری: فقط از SSH در مرحله 1 به عنوان یک اشکال زدایی استفاده کنید … توصیه نمی شود SSH در آن مرحله از بوت داشته باشید.


پایان

امیدوارم این مقاله از دو بخش از سودمندی آن برای داشتن یک شبکه و SSH در مرحله 1 از Nixos باشد

باز هم می خواهم از وبلاگ اسپنسر Balogh بخاطر GUIA ضروری خود در درک نحوه عملکرد شبکه Stage1 تشکر کنم.

منابع دیگر اطلاعاتی که من استفاده کرده ام:

همانطور که در ابتدا اظهار نظر می کنم ، این GUIA به عنوان پیش نیاز برای اجرای یک سیستم قفل از راه دور و بیمه پارتیشن لوکس در طی فرآیند بوت متولد می شود.

sali2 🙂

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا