مرور اجمالی فرآیند بوت و عیب یابی CentOS 7 و RHEL 7

در این مقاله روند بوت سیستم های CentOS / RHEL 7.x توضیح داده شده است. در حالی که ممکن است شبیه به نسخه های قبلی باقی بماند ، با RHEL 7 ، systemd معرفی می شود. علاوه بر فرآیند بوت ، نکات و ترفندهای عیب یابی را در طول راه ارائه می دهم.

قبل از اینکه بطور فعال بتوانید مشکلی در بوت را برطرف کنید ، باید روند بوت را درک کنید. مراحل زیر را مرور کنید تا اینکه با روند کار آشنا شوید.

نمای کلی سطح بالا

  • پاور + ارسال.
  • جستجوی دستگاه سیستم عامل.
  • سیستم عامل bootloader را می خواند.
  • پیکربندی بارهای بارگیر بوت (grub2).
  • بوت لودر هسته و آغازگرها را بار می کند.
  • بوت لودر کنترل را به هسته منتقل می کند.
  • هسته اولیه سخت افزار + را /sbin/initبه عنوان pid 1 اجرا می کند .
  • Systemd تمام اهداف اولیه را اجرا می کند (سیستم فایل را روشن می کند /sysroot).
  • هسته ریشه FS از ریشه initramfs ( /sysroot) به ریشه های سیستم ( /) تغییر یافته و systemd دوباره به عنوان نسخه سیستم مجدداً اجرا می شود.
  • Systemd به دنبال هدف پیش فرض است و در حالی که به طور خودکار حل وابستگی را حل می کند واحدهای شروع یا متوقف می شود و صفحه ورود ظاهر می شود

برای اطلاعات بیشتر در مورد روند بوت ، به اسناد رسمی سیستم عامل سیستم خود مراجعه کنید.

اهداف سیستمی

اهداف اساساً بررسیهای وابستگی هستند. آنها دقیقاً برای خدمات مورد نیاز برای دستیابی به آن هدف از پیکربندی "قبل" و "بعد" برخوردار هستند. به عنوان مثال: arp.ethernet.service، firewalld.serviceو موارد دیگر لازم است قبل از network.targetرسیدن به کار شروع شده و کار شود. اگر چنین باشد، خدمات مانند نرسیده httpd، nfsو ldapنمی تواند آغاز شود. 4 هدف وجود دارد که می تواند در RHEL / CentOS 7 تنظیم شود.

  • Graphical.target (رابط کاربری گرافیکی)
  • multi-user.target (حالت چند کاربره ، ورود به متن)
  • save.target (سریع سلوگین ، اولیه سازی اولیه سیستم)
  • Emergency.target (سریع سلوگین ، محور اولیه محورهای آغازین و سیستم ریشه نصب شده بر روی / فقط خواندنی)

برای مشاهده هدف اصلی بوت فعلی ، از موارد زیر استفاده کنید:

systemctl get-default

به خاطر داشته باشید ، می توانید با جدا کردن هدف ، این کار را در زمان اجرا تغییر دهید. این کار تمام سرویس های مرتبط با هدف جدید را شروع یا متوقف می کند ، بنابراین با احتیاط استفاده کنید (نگاه کنید به systemctl isolate new.target).

حالت کاربر واحد

مواقعی وجود دارد که برای رفع مشکل در سیستم عامل باید به حالت کاربر تنها بوت شوید. برای این مثال ، من به شما نشان می دهم که چگونه می توانید از rescue.targetحالت "single user" در RHEL / CentOS 7 استفاده کنید.

  1. منوی grub2 را با فشار دادن "e" برای ویرایش در صورت درخواست با فهرست grub ، قطع کنید.
  2. خطی را پیدا کنید که نسخه هسته ( vmlinuz ) را مشخص کرده و موارد زیر را نیز به آن اضافه کنید:systemd.unit=rescue.target
  3. برای شروع "Ctrl + x" را فشار دهید.
  4. پس از خروج از پوسته نجات از شما خواسته می شود رمز عبور اصلی را ادامه دهد ، روند بوت همچنان بارگذاری هدف پیش فرض شما خواهد شد.

بازیابی رمز عبور اصلی

این روند کمی متفاوت است از آنچه که در نسخه های قبلی استفاده کرده ایم ، اما یک کار ساده است و انجام مراحل بسیار کمی نیاز دارد. در صورت نیاز به بازیابی هرگونه اعتبار ، می توانید از این روش برای دستیابی به VM استفاده کنید. هنوز هم می توانید یک CD زنده را بوت کنید ، سیستم فایل ریشه را سوار کنید و رمز عبور را ویرایش کنید ، اما این روش تاریخ بندی شده است و نیاز به تلاش بیشتری دارد.

  1. راه اندازی مجدد سیستم.
  2. منوی grub2 را با فشار دادن "e" برای ویرایش در صورت درخواست با فهرست grub ، قطع کنید.
  3. مکان نما را به انتهای خط منتقل کنید که کرنل ( vmlinuz ) را مشخص می کند. ممکن است بخواهید سایر کنسول های دیگر غیر از TTY0 را حذف کنید ، اما ممکن است این مرحله در محیط شما لازم نباشد.
  4. ضمیمه کنید rd.break( بدون نقل قول ) که فرآیند بوت را درست قبل از انتقال کنترل از ابتدا به سیستم واقعی خراب می کند.
  5. Ctrl + x برای بوت شدن.

در این مرحله ، یک پوسته ریشه با سیستم فایلهای ریشه نصب شده در حالت فقط خواندن ارائه می شود /sysroot. ما باید با نوشتن امتیازات ، دوباره آن را بازگو کنیم.

دوباره mount کنم /sysroot.

# mount -oremount,rw /sysroot

به زندان پرچم بروید.

# chroot /sysroot

رمزعبور را برای کاربر تغییر دهید که در آن اعتبارهای قدیمی خود را از دست داده ایم.

# passwd <username>

اگر از SElinux استفاده می کنید ، باید قبل از ادامه روند بوت ، دوباره برچسب گذاری مجدد همه پرونده ها را در نظر بگیرید. اگر از SElinux استفاده نمی کنید ، می توانید از این قسمت پرش کنید.

# touch /.autorelabel

دو بار از سیستم خارج شوید و سیستم از جایی که آن را قطع کردیم کاملاً بوت خواهد شد.

بررسی سیاهههای مربوط به چکمه های قبلی

مشاهده گزارش سیاهههای مربوط به تلاشهای قبلی بوت ناموفق می تواند مفید باشد. اگر گزارش های ژورنال ماندگار شده اند (که معمولاً در حافظه ذخیره می شوند و روی بوت آزاد می شوند) ، این کار را می توان با journalctlابزار انجام داد. در صورت نیاز برای تنظیم ورود به سیستم بوت مداوم ، این مراحل را دنبال کنید.

به عنوان root ، پرونده log را برای ذخیره سازی این اطلاعات ایجاد کنید.

# mkdir -p 2775 /var/log/journal && chown :systemd-journal /var/log/journal
# systemctl restart systemd-journald

برای بازرسی از گزارش های قبلی ، از -bگزینه با استفاده کنید journalctl. بدون هیچگونه استدلالی ، -bخروجی را فقط به پیام های مربوط به آخرین بوت فیلتر می کند. یک عدد منفی برای این آرگومان روی چکمه های قبلی فیلتر می شود. مثلا:

# journalctl -b-1 -p err

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

تعمیر خطاهای دیسک و سیستم فایل

یکی از رایج ترین خطاهای زمان بوت ، یک /etc/fstabپرونده پیکربندی شده اشتباه است. شما نمی توانید با استفاده از rescue.targetبرای رفع /etc/fstabخطا. بسیاری از این مسائل ما را به استفاده emergency.targetاز "نجات" نیازمند یک سیستم کاربردی تر می کند.

موارد زیر نمونه هایی از مشکلاتی است که نیاز به موارد زیر دارند emergency.target:

  1. سیستم پرونده فاسد
  2. UUID غیر موجود در /etc/fstab.
  3. نقطه سوار غیر وجود در /etc/fstab.
  4. گزینه سوء نادرست در /etc/fstab.

نکته مهم : بعد از ویرایش /etc/fstabپرونده در حالت اضطراری ، موارد زیر را باید برای اقدامات ایمنی اجرا کنید:

# systemctl daemon-reload

در اینجا یک نمونه از پیشرفت است. ما می خواهیم وارد حالت اضطراری شویم تا ورودی نادرست وارد شود /etc/fstab.

  1. منوی grub2 را با فشار دادن "e" برای ویرایش در صورت درخواست با فهرست grub ، قطع کنید.
  2. خطی را پیدا کنید که نسخه هسته ( vmlinuz ) را مشخص کرده و موارد زیر را نیز به آن اضافه کنید:systemd.unit=emergency.target
  3. "Ctrl + x" را فشار دهید تا بوت شود.
  4. از شما با ادامه رمز اصلی خواسته می شود که ادامه دهید.
  5. بازپرداخت کنید /تا بتوانیم تغییراتی در fstabپرونده ایجاد کنیم:# mount -oremount,rw /
  6. می توانیم از این mountدستور استفاده کنیم تا ببینیم ورودی باعث ایجاد خطا می شود:# mount -a
  7. ورودی متخلف را از fstabپرونده حذف کنید.
  8. استفاده از mount -aدوباره مطمئن شوید خطا حل شده است.
  9. استفاده systemctl daemon-reloadهمانطور که قبلا ذکر شده بود به بازنگری تمام فایل های واحد، و از نو خلق کردن کل درخت وابستگی.

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

مشکلات مربوط به بارگیری بوت با Grub 2

/boot/grub2/grub.cfgفایل فایل تنظیمات اصلی است. هرگز این فایل را به صورت دستی ویرایش نکنید . در عوض ، grub2-mkconfigبا استفاده از مجموعه ای از پرونده های پیکربندی مختلف و لیست هسته های نصب شده ، از پیکربندی grub2 جدید استفاده کنید . این grub2-mkconfigدستور /etc/default/grubگزینه هایی مانند زمان پایان منوی پیش فرض و خط فرمان هسته را برای استفاده انتخاب می کند ، سپس از مجموعه ای از اسکریپت ها /etc/grub.d/برای تولید پرونده پیکربندی موجود استفاده می کند.

در اینجا نمودار متنی این رابطه آورده شده است.

/boot/grub2/grub.cfg
               |
               |__________________
               |                  |
         /etc/default/grub         /etc/grub.d/*

نکته مهم: برای ویرایش پرونده اصلی grub.cfg ، باید تغییرات مورد نظر /etc/default/grubرا در پرونده ها به پرونده ها وارد کنید /etc/grub.d/و سپس grub.cfgبا اجرای جدید ایجاد کنید :

# grub2-mkconfig > /boot/grub2/grub.cfg

grub عیب یابی

درک نحو /boot/grub2/grub.cfgپرونده قبل از عیب یابی مهم است.

  • ابتدا ، ورودی های قابل بوت شدن در داخل بلوک های "فهرست" رمزگذاری می شوند. در این بلوک ها ، linux16و initrd16خطوط نشان می دهند که هسته باید از دیسک بارگیری شود (به همراه خط فرمان هسته) و ابتدا باید بارگذاری شود. در حین ویرایش تعاملی در بوت ، از تب برای یافتن این خطوط استفاده می شود.
  • خطوط "set root" در داخل این بلوک ها به سیستم فایل ریشه برای سیستم RHEL / CentOS 7 اشاره نمی کنند ، بلکه در عوض به سیستم پرونده ای اشاره می کنند که grub2 باید پرونده های هسته و ابتدا را بارگذاری کند. نحو harddrive.partitionجایی hd0است که اولین هارد در سیستم و hd1دومین مورد است. پارتیشن ها به عنوان msdos1اولین پارتیشن MBR یا gpt1اولین پارتیشن GPT نشان داده شده اند.

مثال از /boot/grub2/grub.cfg:

### BEGIN /etc/grub.d/10_linux ###
menuentry 'CentOS Linux (3.10.0-514.26.2.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-514.el7.x86_64-advanced-a2531d12-46f8-4a0f-8a5c-b48d6ef71275' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint='hd0,msdos1'  123455ae-46f8-4a0f-8a5c-b48d6ef71275
    else
      search --no-floppy --fs-uuid --set=root 123455ae-46f8-4a0f-8a5c-b48d6ef71275
    fi

اگر نیاز به نصب مجدد bootloader در دستگاه دارید ، از دستور زیر استفاده کنید.

# grub2-install <device>

رفع یک نصب گراب شکسته

برای مواردی که سیستم بعد از رسیدن به منوی grub2 بوت نمی شود.

  • شما باید با ویرایش منوی grub و جستجوی خطاهای نحوی شروع کنید. اگر یک مورد را پیدا کردید ، آن را تصحیح کنید و وارد سیستم شوید تا تغییرات مداوم برای رفع مشکل ایجاد کنید.
  • اگر نمی توانید خطایی پیدا کنید ، به قسمت فوق که در آن هدف اصلی قرار می گیرید ، مراجعه کنید. باید دوباره ریشه ( /) را دوباره یادآوری کنید.
  • پیکربندی فعلی grub2 را با دستور زیر مشاهده کنید: # grub2-mkconfig
  • اگر خطایی نمی بینید ، احتمال دارد شخصی /boot/grub2/grub.cfgپرونده را ویرایش کند . این پرونده را اصلاح نکنید. پیکربندی را با دستور زیر بازسازی کنید:# grub2-mkconfig > /boot/grub2/grub.cfg

هنگامی که پیکربندی grub را مجدداً بازسازی کردید ، باید بدون هیچ مشکلی مجدداً راه اندازی مجدد کنید.

یک نظر بگذارید

نحوه نصب Anchor CMS بر روی یک VPS Fedora 26 LAMP

نحوه نصب Anchor CMS بر روی یک VPS Fedora 26 LAMP

با استفاده از یک سیستم متفاوت؟ Anchor CMS یک سیستم مدیریت محتوا (CMS) بسیار ساده و بسیار سبک ، بسیار آزاد و آزاد است.

اشتراک NFS را در Debian تنظیم کنید

اشتراک NFS را در Debian تنظیم کنید

NFS یک سیستم فایل مبتنی بر شبکه است که به رایانه ها اجازه می دهد تا از طریق شبکه رایانه ای به فایلها دسترسی پیدا کنند. این راهنما توضیح می دهد که چگونه می توانید پوشه ها را روی NF قرار دهید

نحوه بروزرسانی CentOS 7 ، Ubuntu 16.04 و Debian 8

نحوه بروزرسانی CentOS 7 ، Ubuntu 16.04 و Debian 8

هنگام راه اندازی سرور جدید لینوکس ، به روزرسانی سیستم های هسته و سایر بسته ها تا آخرین نسخه پایدار یک روش توصیه شده است. در این مقاله

نحوه نصب بستر سبد خرید LiteCart در اوبونتو 16.04

نحوه نصب بستر سبد خرید LiteCart در اوبونتو 16.04

LiteCart یک بستر سبد خرید آزاد و منبع باز است که به زبان های PHP ، jQuery و HTML 5 نوشته شده است. این نرم افزار ساده ، سبک و با کاربرد آسان است.

نحوه نصب Matomo Analytics در Fedora 28

نحوه نصب Matomo Analytics در Fedora 28

با استفاده از یک سیستم متفاوت؟ Matomo (سابقا پیویک) یک بستر تحلیلی منبع باز است ، یک جایگزین باز برای Google Analytics. منبع Matomo میزبان o

یک سرور TeamTalk را در لینوکس تنظیم کنید

یک سرور TeamTalk را در لینوکس تنظیم کنید

TeamTalk یک سیستم کنفرانس است که به کاربران امکان می دهد مکالمات صوتی / تصویری با کیفیت بالا ، چت متنی ، انتقال فایل ها و صفحه های به اشتراک بگذارند. من

با استفاده از کلید SSH خود برای ورود به کاربران غیر ریشه استفاده کنید

با استفاده از کلید SSH خود برای ورود به کاربران غیر ریشه استفاده کنید

Vultr یک ویژگی را فراهم می کند که به شما امکان می دهد با ایجاد یک نمونه جدید ، کلیدهای SSH را از قبل نصب کنید. این اجازه می دهد تا به کاربر root دسترسی داشته باشید ، با این حال ، th

نحوه نصب انجمن NodeBB در FreeBSD 12

نحوه نصب انجمن NodeBB در FreeBSD 12

با استفاده از یک سیستم متفاوت؟ NodeBB یک نرم افزار انجمن مبتنی بر Node.js است. از سوکت های وب برای تعامل فوری و اعلامیه های زمان واقعی استفاده می کند. NodeB

نحوه نصب Ranger Terminal File Manager در لینوکس

نحوه نصب Ranger Terminal File Manager در لینوکس

رنجر یک مدیر فایل مبتنی بر خط فرمان است که دارای کلیدهای اتصال VI است. این برنامه یک رابط لعنتی مینیمالیستی و زیبا با نمای سلسله مراتب فهرست ارائه می دهد

نصب و راه اندازی ZNC در اوبونتو

نصب و راه اندازی ZNC در اوبونتو

ZNC یک پیشرانه پیشرفته شبکه IRC است که تمام وقت بهم متصل می شود تا مشتری IRC بتواند بدون از دست دادن جلسه گپ قطع یا وصل شود.