گرفتن شل در یک لینوکس از طریق گراب:
grub page> press e grub page> linux /boot/vmlinuz-4.8.0 root=/dev/sda7 ro init=/bin/bash grub page> ctrl+x bash mount -rw -o remounr /
گرفتن شل در یک لینوکس از طریق گراب:
grub page> press e grub page> linux /boot/vmlinuz-4.8.0 root=/dev/sda7 ro init=/bin/bash grub page> ctrl+x bash mount -rw -o remounr /
# cat /proc/scsi/scsi | egrep -i 'Host:' | wc -l 7
$ echo "- - -" > /sys/class/scsi_host/host0/scan #("- - -") of the command act as wildcards meaning rescan everything
$ echo "c t l" > /sys/class/scsi_host/hosth/scan # h is the HBA number # c is the channel on the HBA # t is the SCSI target ID # l is the LUN.
#If you don't have the host bus number, you must list all the existing host bus number on your system with the command
$ ls /sys/class/scsi_host host0 host1 host2 $ echo "- - -" > /sys/class/scsi_host/host0/scan $ echo "- - -" > /sys/class/scsi_host/host1/scan $ echo "- - -" > /sys/class/scsi_host/host2/scan <OR> # for host in `ls /sys/class/scsi_host/`;do echo "- - -" >/sys/class/scsi_host/${host}/scan; done
vim /etc/modules-load.d/rt2800usb.conf
The output should look like this:
systemd-modules-load.service - Load Kernel Modules
Loaded: loaded (/usr/lib/systemd/system/systemd-modules-load.service; static)
Active: active (exited) since Wed, 03 Apr 2013 22:50:57 +0000; 46s ago
Docs: man:systemd-modules-load.service(8)
man:modules-load.d(5)
Process: 260 ExecStart=/usr/lib/systemd/systemd-modules-load (code=exited, status=0/SUCCESS)
if status=1/FAILURE
journalctl -b
یک تجربه: در دبیان ۹ برای اینکه firmware کارت شبکه یو اس بی رو بشناسانیم از روش زیر استفاده میکنیم
add to /etc/apt/source.list
deb http://ftp.fr.debian.org/debian jessie main contrib non-free
deb http://httpredir.debian.org/debian/ stretch main contrib non-free
sudo apt-get install debian-reference
apt-get update && apt-get install firmware-iwlwifi
sudo apt-get update && apt-get install firmware-iwlwifi
sudo apt-get update && sudo apt-get install firmware-iwlwifi
sudo apt-get install modplug-tools
sudo apt-get install modprobe
sudo apt-get install modprob
sudo apt-get install kmod
sudo apt-get install wicd
sudo apt-get install firmware-realtek
sudo apt-get install firmware-iwlwifi
sudo apt-get install firmware-linux
sudo apt-get install amd64-microcode firmware-linux-nonfree firmware-misc-nonfree
ترتیب خوانده شدن فایل های کانفیگی در دبیان 9:
20180430-155851-Profile:begin (اجرا در اول)
20180430-155851-profile:End (اجرا در دومین مرحله)
20180430-155915-bashrc:begin (اجرا در سومین مرحله)
20180430-155915-bash_alias:begin (اجرا در چهارمین مرحله)
20180430-155915-bash_alias:End (اجرا در پنجمین مرحله)
20180430-155915-bashrc:end (اجرا در ششمین مرحله)
/proc/meminfo(KB) | free -k | Status | |
MemTotal | 4040208 | 4040208 | Equal |
MemFree | 518032 | 518016 | Equal |
MemAvailable | 1582984 | 1582968 | Equal |
used | 2116340 | Total – (free + cache + buffer) | |
Buffers | 94508 | 1405852 | Equal |
Cached | 1218532 | ||
SwapTotal | 9867260 | 9867260 | Equal |
SwapFree | 9867260 | 9867260 | Equal |
swap used | 0 | ||
Shmem | 91388 | 91388 | Equal |
1-cat /proc/cpuinfo
processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 69 model name : Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz stepping : 1 microcode : 0x1c cpu MHz : 1700.062 cache size : 3072 KB physical id : 0 siblings : 4 core id : 0 cpu cores : 2 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm epb tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt dtherm ida arat pln pts bugs : bogomips : 4788.92 clflush size : 64 cache_alignment : 64 address sizes : 39 bits physical, 48 bits virtual power management: ......
2- lscpu
Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 2 Core(s) per socket: 2 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 69 Model name: Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz Stepping: 1 CPU MHz: 1303.687 CPU max MHz: 2700.0000 CPU min MHz: 800.0000 BogoMIPS: 4788.92 Virtualization: VT-x L1d cache: 32K L1i cache: 32K L2 cache: 256K L3 cache: 3072K NUMA node0 CPU(s): 0-3 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm epb tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt dtherm ida arat pln pts
3- cpuid
CPU 0: vendor_id = "GenuineIntel" version information (1/eax): processor type = primary processor (0) family = Intel Pentium Pro/II/III/Celeron/Core/Core 2/Atom, AMD Athlon/Duron, Cyrix M2, VIA C3 (6) model = 0x5 (5) stepping id = 0x1 (1) extended family = 0x0 (0) extended model = 0x4 (4) (simple synth) = Intel Mobile Core i3-4000Y / Mobile Core i5-4000Y / Mobile Core i7-4000Y / Mobile Pentium 3500U/3600U/3500Y / Mobile Celeron 2900U (Mobile U/Y) (Haswell), 22nm miscellaneous (1/ebx): process local APIC physical ID = 0x0 (0) cpu count = 0x10 (16) CLFLUSH line size = 0x8 (8) brand index = 0x0 (0) brand id = 0x00 (0): unknown feature information (1/edx): x87 FPU on chip = true virtual-8086 mode enhancement = true debugging extensions = true page size extensions = true time stamp counter = true RDMSR and WRMSR support = true physical address extensions = true ....
4- sudo dmidecode --type processor
# dmidecode 3.0 Getting SMBIOS data from sysfs. SMBIOS 2.7 present. Handle 0x0004, DMI type 4, 42 bytes Processor Information Socket Designation: U3E1 Type: Central Processor Family: Core i5 Manufacturer: Intel(R) Corporation ID: 51 06 04 00 FF FB EB BF Signature: Type 0, Family 6, Model 69, Stepping 1 Flags: FPU (Floating-point unit on-chip) VME (Virtual mode extension) DE (Debugging extension) PSE (Page size extension) TSC (Time stamp counter) MSR (Model specific registers) PAE (Physical address extension) MCE (Machine check exception) CX8 (CMPXCHG8 instruction supported) APIC (On-chip APIC hardware supported) SEP (Fast system call) MTRR (Memory type range registers) PGE (Page global enable) MCA (Machine check architecture) .....
5- inxi -C
CPU: Dual core Intel Core i5-4210U (-HT-MCP-) cache: 3072 KB clock speeds: max: 2700 MHz 1: 1958 MHz 2: 1993 MHz 3: 1775 MHz 4: 1714 MHz
6- sudo lshw -C CPU
*-cpu description: CPU product: Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz vendor: Intel Corp. physical id: 4 bus info: cpu@0 version: Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz serial: To Be Filled By O.E.M. slot: U3E1 size: 2626MHz capacity: 2700MHz width: 64 bits clock: 100MHz capabilities: x86-64 fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm epb tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt dtherm ida arat pln pts cpufreq configuration: cores=2 enabledcores=2 threads=4
7- hardinfo
8- hwinfo --cpu
01: None 00.0: 10103 CPU [Created at cpu.460] Unique ID: rdCR.j8NaKXDZtZ6 Hardware Class: cpu Arch: X86-64 Vendor: "GenuineIntel" Model: 6.69.1 "Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz" Features: fpu,vme,de,pse,tsc,msr,pae,mce,cx8,apic,sep,mtrr,pge,mca,cmov,pat,pse36,clflush,dts,acpi,mmx,fxsr,sse,sse2,ss,ht,tm,pbe,syscall,nx,pdpe1gb,rdtscp,lm,constant_tsc,arch_perfmon,pebs,bts,rep_good,nopl,xtopology,nonstop_tsc,aperfmperf,eagerfpu,pni,pclmulqdq,dtes64,monitor,ds_cpl,vmx,est,tm2,ssse3,sdbg,fma,cx16,xtpr,pdcm,pcid,sse4_1,sse4_2,movbe,popcnt,tsc_deadline_timer,aes,xsave,avx,f16c,rdrand,lahf_lm,abm,epb,tpr_shadow,vnmi,flexpriority,ept,vpid,fsgsbase,tsc_adjust,bmi1,avx2,smep,bmi2,erms,invpcid,xsaveopt,dtherm,ida,arat,pln,pts Clock: 2080 MHz BogoMips: 4788.92 Cache: 3072 kb Units/Processor: 16 Config Status: cfg=new, avail=yes, need=no, active=unknown ....
9-nproc
10-lspci
Write speed benchmark: dd if=/dev/zero of=/tmp/output count=1 bs=100M ;rm
-f /tmp/output
READ speed benchmark: sudo hdparm -t /dev/sda
ساختار داخلی فایل inittab
فایلی که تنظیم میکند، پردازش ها در کدام Run Level و در چه حالتی اجرا شوند
فرمت داخلی فایل Inittab به شکل زیر است:
ID : RunLevel : Action : Process
ID : نام دلخواه، می بایست بیشتر از یک کاراکتر باشد.
Run Level : پردازش در چه حالتی باشد، اگر خالی بماند به منزله همه Run Level ها می باشد.
Action:
Respown:درصورت توقف مجدداً خودکار start شود
wait: اجرابشود اما درصورتی که پردازش تمام نشده باشد فعالیتی صورت نگیرد
once: فقط یکبار پردازش اجرا بشود
initDefault: کلمه رزرو شده
حالتCtrl+Alt+Del
مثال: با فشردن کلیدهای ترکیبی Ctrl+Alt+Del عمل ریست صورت میگیرد:
ca : : CtrlAltDel : /sbin/shutdown –t3 –r now
بهترین راه خاموش کردن سرورهای لینوکس است، زیرا به تمام کاربران Login شده سرور اطلاع رسانی مینماید (ارسال و نمایش پیغام)
همچنین از Login کاربر جدید جلوگیری به عمل آورده و سیگنالی به init ارسال مینماید تا Run Level تغییر نماید و پس از آن سیگنال دیگری ( سیگنالSIGTERM ) به تمامی Process های Run شده روی سرور ارسال مینماید که توسط آن مهلت چند ثانیه ای ذخیره اطلاعات Save نشده و آماده سازی برایkill شدن به پردازش ها میدهد..
در نهایت پس از گذشت مدت زمان مهلت داده شده، در صورتی که هنوز پردازشی باقی مانده باشند، سیگنال kill شدن بصورت Force به آن ارسال میشود (سیگنال SIGKILL ) و در این حالت سیستم خاموش خواهد شد.
Switch ها:
خاموش شدن سیستم بعد از وقفه کوتاه
# shutdown
تغییر حالت Run Level به شماره 0 (shutdown ) بعد از وقفه کوتاه
# shutdown -h
تغییر حالت Run Level به شماره 6 (Restart ) بعد از وقفه کوتاه
# shutdown –r
تغییر حالت Run Level به شماره 6 (Restart ) در لحظه فعلی (هم اکنون)
# shutdown –r now
تغییر حالت Run Level به شماره 6 (Restart )بعد از وقفه دو دقیقه
# shutdown –r 2
تغییر حالت Run Level به شماره 6 (Restart )بعد از وقفه دو دقیقه همراه با نمایش پیغام (متنComment برای تمامی کاربران Broadcast می گردد.)
# shutdown –r 2 “Comment”
تغییر حالت Run Level به شماره 6 (Restart )دقیقا در زمان 18:23
# shutdown –r 18:23
تغییر حالت Run Level به شماره 6 (Restart )بعد از وقفه 9 ثانیه
# shutdown –r -t 9
تغییر حالت Run Level به شماره 6 (Restart )بعد از وقفه 15 دقیقه
# shutdown -r +15
متوقف نمودن (cancel ) پروسه shutdown ، درصورت تنظیم موعد shutdown آنرا کنسل میکند
# shutdown –c
سایر دستورها
تغییر Run Level به شماره شش(restart نمودن سیستم عامل)
# reboot
تغییر Run Level به شماره صفر(خاموش نمودن سیستم عامل)
# halt
همچنین
# poweroff
خروج از وضعیت Login سیستم و بازگشت به صفحه (خط)Login جهت ورود مجدد
# logout
با استفاده از دستور init و telinit میتوان به mode دیگر از وضعیت RunLevel رفت:
برای تغییر حالت به runlevel دلخواه، کافی ست شماره آن Run Level را جلویinit یا telinit بنویسید.
تغییر حالت runlevel کنونی به runlevel شماره صفر(خاموش شدن سیستم)
# init 0
همچنین
# telinit 0
اگر در فایل inittab 2 شماره Run Level را تغییر دهید، در این صورت همواره سیستم به Run Level تنظیم شده بوت خواهد شد.
برای اینکار کافی ست شماره Run Level را در فایل inittab جایگزین عدد ذیل نمایید(etc/inittab):
id:5:initdefault
از امکانات مهمی که GRUB ارائه می دهد ارائه رمز عبور، امکان ارسال پارامترهای Boot به کرنل، همچنین انجام اینکار بدون هنگ کردن و بروز مشکل برای فایلهای تنظیماتی GRUB، امکان Boot سیستم عامل ویندوز در کنار سیستم عامل لینوکس است. همچنین GRUB تکنولوژی LBA یا Logical Block Addressing را پشتیبانی میکندکه امکان دستیابی I/O فایلهای بوت را بصورت ساده مهیا میکند. GRUB توانایی بوت کردن سیستم عامل در شبکه را نیز دارد.
در زمان بروز خطا، LILO بایستی مجددا نصب شود تا بتواند MBR را تعمیر کند، اماGRUB آن را در حالت خط فرمان درآورده تا بصورت دستی یا خودکار تنظیمات تعمیر بشود.
GRUB دارای پیچیدگی های بیشتری نسبت به LILO است. Grub برای سیستم عامل های مختلف قابل استفاده است اما LILO برای سیستم عامل های محدودی قابل استفاده است.
نکته: قبل از بالا آمدن سیتم عامل در منوی Grub باز فشردن دکمه `e` میتوان به تنظیمات grub راه یافت.
نکته:در زمان نمایش منوی Grub سیستم عامل پیشفرض بعد از گذشت زمان 10 یا 30 ثانیه بصورت خودکار انتخاب خواهد.
Chan Load
زمانی که Boot Loader های سیستم عاملها یکدیگر را Load کنند، این تعریف معنا پیدا خواهد کرد.
تنظیم پارامترهای اولیه LILO
# /usr/sbin/liloconfig
نصب Grub
# grub-install /dev/sda
تعمیر ونصب مجدد Grub2 درMBR قراردادن آن در فایل تنظیمات اصلی Grub2 به آدرس زیر 3:
# grub-mkconfig > /boot/grub/grub.cfg
تنظیمات grub2 در مسیرزیر قراردارد.
/boot/grub/grub.cfg
تنظیماتgrub در مسیرزیر قراردارد.
/boot/grub/menu.lst
تنظیمات LILO در مسیرزیر قراردارد.
/etc/lilo.conf
initrd در مسیر زیر قراردارد
/boot/initrd. . . . img
معرفی پارامترهای تنظیماتی
در تنظیمات Grub ویا در صفحه منوی Grub برخی از پارامترها بصورت زیر میباشد.
Default
این پارامتر سیستم عامل پیشفرض را که پس از گذشت زمان 10 ثانیه می بایست Load بشود را تنظیم میکند.را Load میکندdefault=2 یعنی سیستم عامل دوم در منوی سیستم عامل های Grub 2
نکته: اندیس در Grub1 از صفر شروع می شود، ولی در Grub2 از یک شروع میشود.
splashimage=(hd0,5) /boot/grub/splash.xpm.gz
نمایش عکس زمینه گرافیکی در آدرس تعریف شده (هارد اول، پارتیشن پنجم و آدرس موردنظر )
Splash
عکس پس زمینه
Title
عنوان نمایش گراب
root (hd0,5)
مسیر روت را مشخص مینماید که درکدام پارتیشن است
kernel /boot/vmlinuz-2.6.26.8.125 ro quite
در منوی Grub در لحظه شروع با فشردن F10 کرنل به آدرس بالا Load خواهد شد.
Quite: بجای نمایش خط ها صفحه گرافیکی نمایش داده شود در لحظه بوت شدن و بالا آمدن کرنل
ro:فقط خواندنی
در آخر این خط اگر کاراکتر عدد1 ویا s باشد، سیستم عامل در محیط Run level تک کاربره (Single user) Load خواهد شد.
Save default
بخاطر سپردن انتخاب قبل
نکته: در فایل تنظیماتی گراب اگر تنظیمات گراب را به شکل زیر تغییر دهید سیستم با محیط bash بالا خواهد آمد:
init=/bin/sh
نکته: در تنظیمات Grub در خطی که با عبارت Vmlinuz یاkernel آغاز میشوداگر ورودی پارامتر Runlevel را کاراکتر S 1 یا عدد 1 گذارید سیستم در حالت متن فرمان بوت خواهد شد.
برنامه که بوسیله آن سیستم عامل در حافظه اصلیload شده و به اجرا در میآید
.یک boot loader میتواند چندین سیستم عامل را Boot کند.(منظور بطور همزمان نیست)
Boot Loader مسئولیت Load کردن kernel و دادن کنترل سیستم به آن را دارد.
پس از بدست گرفتن کنترل سیستم توسط کرنل، سایر قسمتهای باقی مانده سیستم عامل بارگذاری شده وبه اجرا درمیآیند.
درحین بوت سیستم، BIOS قطعه برنامه Boot Loader را از داخلMBR به حافظه اصلی (RAM) منتقل می کند.بعد ا ز انتخاب یکی از سیستم عامل های منوی Boot Loader ، کرنل توسط Boot Loader به داخل RAM منتقل شده و سپس کرنل موجود در Ram نیز برنامه Init را Run میکند و در این هنگام است که کنترل سیستم تحت فرمان کرنل بوده و در هنگام نیاز برنامه Init دیگر برنامهها را به اجرا در خواهد آورد.
سابقه Boot Loader های لینوکس به LILO 1 برمیگردد که با ظهور Grub2 نقش LILO کمرنگ شد و در حال حاضر Boot Loader اصلی سیستم عامل لینوکس Grub است.
Init
مخفف Initialize بوده و اولین پردازشی است که موجب می شوددیگر پردازش هاLoad شده تا سیستم عامل بصورت کامل Load بشود.
در تکنولوژی جدید، بجای init از systemd و یا در برخی موارد از upstart استفاده می شود.
Upstart
نسبت به Inti امکانات بیشتری داشته و درآن نواقص Init برطرف شده است.
Init با مشخصه path سرویس ها را start ویا Stop می کند ولی Upstart بر اساس Event (رویداد) سرویس را Start مینماید، همچنین لزوماً نیازمند مسیر نیست. یعنی با یک رویداد (همان event) یک سرویس به اجرا در خواهد آمد.
Upstart بصورت بهینه Dependency ها را تشخیص داده و پیش نیازهای یک سرویس قابل اجرا را قبل تر به اجرا در خواهد آورد.
Systemd(System Deamon)
سرویس ها بر اساس Port (سوکت) شناخته شده و به اجرا درآورده میشوند.
این تکنولوژی قابلیت به اجرا درآوردن تمام یا بخشی از یک سرویس را دارد، بطوریکه بخش خاص، یا قسمتی از یک سرویس درخواست داده شده Run بشود.
Systemd هر جزء را (Port ویا Device ویا service و ..) در قالب یک Unit درنظر میگیرد و میتواند برای هر Unit خاص با UUID منحصر بفرد خود وارد عمل شود.
Master Boot Record (به فارسی رکورد راه انداز اصلی) قسمتی از حافظه است که وظیفه بالاآوردن(Load) سیستم عامل را (بصورت غیر مستقیم) برعهده داشته و BIOS به صورت مستقیم آن را به اجرا در می آورد.
همچنین میتوان گفت که برنامهای برای راه اندازی سیستم عامل است که در قسمتی از حافظه (حافظه ذخیره سازی پارتیشن بندی شده نظیر هارد دیسک،
SSD، فلش درایوها و ...) قرار گرفته و وظیفه حفظ اطلاعات مربوط به پارتیشنها و بالا آوردنKernel (به صورت غیر مستقیم) را بر عهده دارد.
MBR در هنگام پارتیشن بندی حافظه ساخته شده و یک برنامه خوانده میشود چون دارای دستوراتی برای اجرا شدن است تا بتواند سیستم عامل را بوت کند کل کدهای MBR فقط 512 بایت میباشد که به صورت قراردادی، در اولین سکتور از حافظه (که معمولاً سکتور شماره 0 خوانده میشود) قرار میگیرد.
با توجه به این که یک سکتور معمولاً دارای 512 بایت حافظه ذخیره سازی است، با قرار گرفتن MBR به صورت کامل پر میشود.
وظیفه MBR
وظیفه BMR این است که اطلاعات مربوط به پارتیشنهای اولیه را در خود نگه داشته و با تشخیص پارتیشن فعال(همان پارتیشنی که سیستم عامل بر روی آن نصب است) و استفاده از دستور موجود در اولین سکتور آن پارتیشن، هسته سیستم عامل را بر روی RAM قرار داده و اجرا کند.
از آن جایی که 512 بایت فضای بسیار کوچکی برای نوشتن یک برنامه است، MBR تنها این دو وظیفه را بر عهده دارد.
ساختار MBR
MBR از 512 بایت تشکیل میشود که بر روی اولین سکتور حافظه نگه داشته میشود. این 512 بایت شامل دستوری برای اجرای PBR و جدولی برای حفظ اطلاعات پارتیشنهاست.
در ذیل ساختار یک MBR استاندارد به صورت خلاصه نوشته شده است:
1. کد خود راه انداز (شامل برچسب زمانی، کدهای اصلی، امضای دیسک)-بایت شماره0 تا 445 (446 بایت)
2. جدول پارتیشنها (16 بایت برای هر چهار پارتیشن)-بایت شماره 446 تا 509 (64 بایت)
3. نشان اتمام MBR-باشت شماره 510 تا 511 (2 بایت)
کد خود راه انداز (که Boot loader نیز شناخته میشود) همان برنامه و دستوری است که PBR را با توجه به جدول پارتیشنها اجرا میکند. دو بایت آخر (به صورت هگز 55 و AA) نیز نشان دهنده اتمام MBR است.
از آن جایی که MBR فقط 64 بایت برای جدول پارتیشنها اختصاص داده و اطلاعات هر پارتیشن نیز در 16 بایت ذخیره میشود، بنابراین MBR میتواند فقط چهار پارتیشن را به عنوان پارتیشن اولیه شناسایی کند درحالی که بقیه پارتیشنها به صورت پارتیشن منطقی شناسایی میشوند. این یکی از مهمترین ضعفهای MBR است. بوت سکتور جدید با نام GPT درحال جایگزینی MBR است که میتواند تا 128 پارتیشن را به عنوان پارتیشن اولیه شناسایی کند.
PBR و ارتباط با MBR در بوت سیستم عامل
نکته: PBR مخفف عبارت Partition Boot Record که در فارسی رکورد راه اندازی پارتیشن معنی میدهد.
نکته: در هنگام روشن کردن کامپیوتر که BIOS کنترل سیستم را برعهده دارد
نکته: پس از پارتیشن بندی حافظه که MBR بر روی اولین سکتور حافظه هارد قرار میگیرد. درصورت وجود چندین حافظه مثل هارد دیسک یا lash ویا DVD و ... عمل بوت توسط بایوس از هارد مریوطه آغاز میشود. به این ترتیب طبق قرارداد، اولین سکتور حافظه ( همان MBR) را میخواند و دستور موجود را اجرا میکند. در این هنگام کنترل سیستم از BIOS خارج شده و MBR وظیفهها را بر عهده میگیرد.
دستوری که در MBR قرار میگیرد، این است که با توجه به جدول پارتیشن موجو4، پارتیشن فعال را تشخیص داده سپس اولین سکتور آن پارتیشن که شامل PBR است را بخواند و سپس برنامه PBR که شامل دستوری برای اجرا کردن هسته سیستم عامل است را اجرا نماید.
بنابراین MBR نیازی به دانستن این که سیستم عامل چیست یا هسته آن کجا قرار نگه داشته میشود، ندارد. در این لحظه کار MBR به اتمام رسیده و سیستم توسط PBR اداره میشود.
PBR نیز حجم کمی داشته و تنها کاری که انجام میدهد این است که هسته سیستم عامل را به اجرا در بیاورد.
پس از آن که سیستم عامل اجرا شد، کار PBR به اتمام رسیده و خود هسته سیستم عامل کنترل سیستم را بر عهده میگیرد. به این ترتیب سیستم عامل به صورت کامل راه اندازی میشود.
مرکز اصلی سیستم عامل با حجم بسیار کوچک است که مدیریت کلی سیستم عامل را برعهده داشته و بصورت مستقیم با سختافزار در ارتباط است.
کرنل وظیفه مدیریت سختافزار و تخصیص منابع و حافظه, فایل ها و اجزای جانبی را دارد. همچنین آغازگر برنامههای کاربردی می باشد.
Kernel مستقیما با سخت افزار در ارتباط بوده و I/O Management و Process Management و Device Management و File Management و Memory Management را انجام میدهد.
به بیان دیگر هر Application یا برنامه کاربردی بر روی سیستم عامل برای ارتباط با سختافزار نیازمند رابطی است که این رابط را کرنل برقرار میکند
ابتدا از دستور زیر برای نمایش هارد و پارتیشنهای موجود استفاده نمایید
ls
نکته: شماره گذاری پارتیشنها از صفر (0) شروع میشود.
دستور زیر را به ترتیب از اول تا آخر برای تمامی پارتیشنها امتحان میکنیم، تا زمانی که به پارتیشنی برسیم که فایل سیستم آن ext2 باشد
ls (hd*,partition_lable*)
پس از پیدا شدن پارتیش دستور زیر را برای آن میزنیم:
set boot=(hd*,partition_lable*)
set prefix=(hd*,partition_lable*)/boot/grub
و در آخر دستور زیر را بزنید:
insmod normal
normal
در صفحه ای که گراب ظاهر شده است دکمه e (به معنی رفتن به محیط ادیت و تنظیمات گراب) را بزنید:عبارت زیر را
init=/boot/bash
به انتهای خطی که با عبارت زیر شروع میشود بیافزایید:
linux /boot/vmlinuz . . .
و سپس دکمه های ctrl+X رابزنید:
مشاهده خواهید کرد که سل بایلا آمده است ولی با این تفاوت که FileSystem از نوع readoly است !
برای خارج شدن سیستم عامل از readOnly دستور زیر را بزنید:
mount -rw -o remount /
حال سیستم عامل حالت rw داشته و میتوان پسورد را تغییر داد (یوزر فعلی ترمینال بالا آمده ، بوزر روت است)
برای تغییر پسورد دستورزیر را وارد نمایید:
passwd root
timedatectl
timedatectl set-time 'YYYY-MM-DD HH:MM:SS' #set time and date timedatectl set-time HH:MM:SS #for time only timedatectl set-time YYYY-MM-DD #for date only timedatectl list-timezones #list the available timezones timedatectl set-timezone "Asia/Tehran" #Set timeZone timedatectl set-timezone utc #Set timeZone To UTC timedatectl | grep local #Find out if your hardware clock is set to local timezone-BestMode is "no" timedatectl set-local-rtc 1 #Set hardware clock to local timezone timedatectl set-local-rtc 0 #Set hardware clock to coordinated universal time (UTC) timedatectl set-ntp true #start automatic time synchronization with remote NTP server, timedatectl set-ntp false #disable NTP time synchronization
sudo dpkg-reconfigure tzdata #debian: reconfig timerzone cat /etc/timezone #show current timezone ls -ltrh /etc/localtime #show current timezone[lrwxrwxrwx 1 root root 31 اوت 21 23:40 /etc/localtime -> /usr/share/zoneinfo/Asia/Tehran] date #Show time date +%Y%m%d-%H%M%S #Out: 20190707-134444
1-hwclock -s [or --hctosys] #تنظیم ساعت سیستمعامل از سختافزار 2-hwclock -w [or --systohc] #تنظیم ساعت سختافزار از سیستمعامل 3-hwclock -r [or --show] [or get] #نمایش ساعت فعلی سختافزار
timedatectl set-time 'YYYY-MM-DD HH:MM:SS' [or] date --set 2020-07-19 date --set 09:23:14 hwclock -r hwclock -w date && hwclock -r