فصل پنجم — قسمت چهل و هشتم - INTRO 🐧
راه اندازی اولیه و مجازی سازی
————————-
در فصل پنجم میخواهیم ببینیم وقتی یک سیستم لینوکسی روشن میشود چه اتفاقی میافتد و چطور میتوانیم روند Boot را مدیریت کنیم. همچنین با مجازیسازی در لینوکس آشنا میشویم.
—————-
1️⃣ تغییر در راهاندازی سیستم و Reboot
یاد میگیریم:
سیستم چطور Boot میشود؟
تغییر وضعیت سیستم
مدیریت سرویسها در زمان Boot
Runlevel / Target
بررسی وضعیت Boot
——————-
2️⃣ نصب و مدیریت Boot Manager
اینجا با Boot Manager آشنا میشویم.
مهمترین چیزی که در لینوکس میبینیم:
مثلاً وقتی سیستم روشن میشود و صفحهای میبینی که میتوانی بین چند Kernel یا سیستمعامل انتخاب کنی، معمولاً GRUB در این قسمت نقش دارد.
————————
3️⃣ مجازیسازی در لینوکس 🖥
میبینیم Virtualization چیست و لینوکس چطور میتواند:
را اجرا کند.
با مفاهیمی مثل:
KVM
QEMU
Virtual Machine
Host / Guest
Hypervisor
آشنا میشویم.
——————
4️⃣ مراحل راهاندازی سیستم 🚀
از لحظهای که دکمه Power را میزنیم تا رسیدن به Login:
این بخش خیلی مهم است چون در فصلهای قبلی هم با بعضی از این مفاهیم برخورد کردیم.
راه اندازی اولیه و مجازی سازی
————————-
در فصل پنجم میخواهیم ببینیم وقتی یک سیستم لینوکسی روشن میشود چه اتفاقی میافتد و چطور میتوانیم روند Boot را مدیریت کنیم. همچنین با مجازیسازی در لینوکس آشنا میشویم.
—————-
1️⃣ تغییر در راهاندازی سیستم و Reboot
یاد میگیریم:
سیستم چطور Boot میشود؟
reboot و shutdownتغییر وضعیت سیستم
مدیریت سرویسها در زمان Boot
Runlevel / Target
بررسی وضعیت Boot
——————-
2️⃣ نصب و مدیریت Boot Manager
اینجا با Boot Manager آشنا میشویم.
مهمترین چیزی که در لینوکس میبینیم:
GRUB
مثلاً وقتی سیستم روشن میشود و صفحهای میبینی که میتوانی بین چند Kernel یا سیستمعامل انتخاب کنی، معمولاً GRUB در این قسمت نقش دارد.
————————
3️⃣ مجازیسازی در لینوکس 🖥
میبینیم Virtualization چیست و لینوکس چطور میتواند:
Linux Host
│
├── VM 1 → Debian
├── VM 2 → Ubuntu
└── VM 3 → Fedora
را اجرا کند.
با مفاهیمی مثل:
KVM
QEMU
Virtual Machine
Host / Guest
Hypervisor
آشنا میشویم.
——————
4️⃣ مراحل راهاندازی سیستم 🚀
از لحظهای که دکمه Power را میزنیم تا رسیدن به Login:
Power ON
↓
BIOS / UEFI
↓
Bootloader (GRUB)
↓
Linux Kernel
↓
initramfs
↓
systemd
↓
Services
↓
Login
این بخش خیلی مهم است چون در فصلهای قبلی هم با بعضی از این مفاهیم برخورد کردیم.
👏1
فصل پنجم — قسمت چهل و نهم 🐧
مراحل راه اندازی در لینوکس
————————-
وقتی دکمه Power را میزنیم، لینوکس یکدفعه اجرا نمیشود؛ چند مرحله پشت سر هم اتفاق میافتد.
🧠 تصویر کلی
حالا مرحلهبهمرحله 👇
————-
1️⃣ روشن شدن سیستم → BIOS / UEFI
اول سیستم روشن میشود و Firmware سختافزار را بررسی میکند.
مثلاً:
در سیستمهای قدیمیتر معمولاً BIOS و در سیستمهای جدیدتر UEFI داریم.
——————
2️⃣ Bootloader → GRUB
بعد Firmware دنبال یک Bootloader میگردد.
در بیشتر سیستمهای Linux:
وظیفه GRUB این است که Kernel لینوکس را پیدا و اجرا کند.
اگر چند سیستمعامل داشته باشی، GRUB میتواند منوی انتخاب هم نشان دهد:
————-
3️⃣ Kernel وارد کار میشود 🧠
GRUB، Kernel لینوکس را در حافظه قرار میدهد و اجرا میکند.
Kernel مسئول مدیریت چیزهایی مثل:
CPU
RAM
Disk
Network
Hardware
Processها
است.
—————-
4️⃣ initramfs
قبل از اینکه سیستم فایل اصلی
راهاندازی میشود.
مثلاً اگر برای پیدا کردن Root Filesystem به یک Driver یا ابزار خاص نیاز باشد، initramfs میتواند آن را فراهم کند.
بعد سیستم به Root Filesystem اصلی منتقل میشود.
——————
systemd 🚀
در سیستمهای مدرن Linux معمولاً:
اولین Process اصلی سیستم است.
PID آن معمولاً:
و میبینی:
systemd سرویسها و بخشهای مختلف سیستم را راهاندازی میکند.
——————-
🔎 دیدن پیامهای Kernel با
بعد از Boot میتوانی پیامهایی که Kernel ثبت کرده را ببینی:
مثلاً:
برای جستجو:
یعنی پیامهای مربوط به USB را پیدا کن.
یا:
🧠 dmesg = پیامهای مربوط به Kernel و Hardware
——————
📖
در سیستمهایی که
برای دیدن لاگها:
لاگهای Boot فعلی:
لاگ Boot قبلی:
فقط خطاهای Boot:
و برای دیدن Kernel:
فرق مهم:
———————-
📁 لاگ Boot کجاست؟
این قسمت را یک مقدار اصلاح کنیم:
در Debian/Ubuntu ممکن است بعضی لاگهای مربوط به Boot در:
باشند، اما وجود
در سیستمهای جدید، برای بررسی Boot بهتر است از:
استفاده کنی.
در بعضی سیستمهای RHEL/Fedora ممکن است فایلهایی مثل:
——————-
🖥 آیا سیستم با UEFI Boot شده؟
یک روش خیلی ساده:
اگر این مسیر وجود داشته باشد، معمولاً یعنی سیستم با UEFI Boot شده.
مثلاً:
اگر پوشههایی مثل این دیدی:
یعنی:
اگر مسیر وجود نداشت:
معمولاً سیستم با حالت Legacy BIOS بوت شده است.
مراحل راه اندازی در لینوکس
————————-
وقتی دکمه Power را میزنیم، لینوکس یکدفعه اجرا نمیشود؛ چند مرحله پشت سر هم اتفاق میافتد.
🧠 تصویر کلی
Power ON
↓
BIOS / UEFI
↓
Bootloader (GRUB)
↓
Kernel
↓
initramfs
↓
systemd
↓
Services
↓
Login
حالا مرحلهبهمرحله 👇
————-
1️⃣ روشن شدن سیستم → BIOS / UEFI
اول سیستم روشن میشود و Firmware سختافزار را بررسی میکند.
مثلاً:
CPU
RAM
Disk
Keyboard
Network
...
در سیستمهای قدیمیتر معمولاً BIOS و در سیستمهای جدیدتر UEFI داریم.
——————
2️⃣ Bootloader → GRUB
بعد Firmware دنبال یک Bootloader میگردد.
در بیشتر سیستمهای Linux:
GRUB
وظیفه GRUB این است که Kernel لینوکس را پیدا و اجرا کند.
اگر چند سیستمعامل داشته باشی، GRUB میتواند منوی انتخاب هم نشان دهد:
Ubuntu
Advanced options for Ubuntu
Windows
————-
3️⃣ Kernel وارد کار میشود 🧠
GRUB، Kernel لینوکس را در حافظه قرار میدهد و اجرا میکند.
Kernel مسئول مدیریت چیزهایی مثل:
CPU
RAM
Disk
Network
Hardware
Processها
است.
—————-
4️⃣ initramfs
قبل از اینکه سیستم فایل اصلی
/ کاملاً در دسترس قرار بگیرد، معمولاً یک محیط موقت به نام:initramfs
راهاندازی میشود.
مثلاً اگر برای پیدا کردن Root Filesystem به یک Driver یا ابزار خاص نیاز باشد، initramfs میتواند آن را فراهم کند.
بعد سیستم به Root Filesystem اصلی منتقل میشود.
——————
systemd 🚀
در سیستمهای مدرن Linux معمولاً:
systemd
اولین Process اصلی سیستم است.
PID آن معمولاً:
ps -p 1
و میبینی:
PID 1
systemd سرویسها و بخشهای مختلف سیستم را راهاندازی میکند.
——————-
🔎 دیدن پیامهای Kernel با
dmesgبعد از Boot میتوانی پیامهایی که Kernel ثبت کرده را ببینی:
dmesg
مثلاً:
dmesg | less
برای جستجو:
dmesg | grep -i usb
یعنی پیامهای مربوط به USB را پیدا کن.
یا:
dmesg | grep -i error
🧠 dmesg = پیامهای مربوط به Kernel و Hardware
——————
📖
journalctl چیست؟در سیستمهایی که
systemd دارند، journal لاگهای سیستم را جمعآوری میکند.برای دیدن لاگها:
journalctl
لاگهای Boot فعلی:
journalctl -b
لاگ Boot قبلی:
journalctl -b -1
فقط خطاهای Boot:
journalctl -b -p err
و برای دیدن Kernel:
journalctl -k
فرق مهم:
dmesg
↓
پیامهای Kernel
journalctl
↓
لاگهای systemd و سرویسها + Kernel و بخشهای مختلف سیستم
———————-
📁 لاگ Boot کجاست؟
این قسمت را یک مقدار اصلاح کنیم:
در Debian/Ubuntu ممکن است بعضی لاگهای مربوط به Boot در:
/var/log/
باشند، اما وجود
/var/log/boot بهصورت ثابت و یکسان در همه نسخهها را نباید فرض کرد.در سیستمهای جدید، برای بررسی Boot بهتر است از:
journalctl -b
استفاده کنی.
در بعضی سیستمهای RHEL/Fedora ممکن است فایلهایی مثل:
/var/log/boot.log
——————-
🖥 آیا سیستم با UEFI Boot شده؟
یک روش خیلی ساده:
ls /sys/firmware/efi
اگر این مسیر وجود داشته باشد، معمولاً یعنی سیستم با UEFI Boot شده.
مثلاً:
ls /sys/firmware/efi
اگر پوشههایی مثل این دیدی:
efivars
fw_platform_size
runtime
...
یعنی:
UEFI ✅
اگر مسیر وجود نداشت:
No such file or directory
معمولاً سیستم با حالت Legacy BIOS بوت شده است.
👏1
فصل پنجم — قسمت پنجاهم 🐧
نگاهی به بوت لودر
—————————-
قبل از GRUB یک نکته را یاد بگیریم:
🧠 Bootloader چیست؟
Bootloader یک برنامه کوچک است که بعد از BIOS/UEFI اجرا میشود و سیستمعامل را برای اجرا آماده میکند.
در لینوکس معروفترین Bootloader:
است.
مثال واقعی:
———————-
1️⃣ تاریخچه GRUB
اول نسخه قدیمیتر را داشتیم:
بعد نسخه جدیدتر آمد:
امروزه تقریباً تمام توزیعهای مدرن Linux از GRUB 2 استفاده میکنند.
——————-
2️⃣ GRUB Legacy چیست؟
GRUB Legacy نسخه قدیمی GRUB است.
ساختار تنظیمات اصلی آن معمولاً:
بود.
مثلاً در آن میتوانستیم مشخص کنیم:
——————-
3️⃣ GRUB 2 چیست؟
GRUB 2 ساختار جدیدتر و قدرتمندتری دارد.
یکی از تفاوتهای مهم:
ولی در:
قرار داریم.
مسیر معمول:
در سیستمهای UEFI ممکن است فایلهای مربوط به GRUB را در مسیرهایی مثل:
هم ببینی.
———————-
4️⃣ فایل
فایل اصلیای که GRUB هنگام Boot از آن برای منوی Boot و تنظیمات استفاده میکند:
مثلاً داخلش ممکن است اطلاعاتی مربوط به:
ببینی.
⚠️ نکته مهم: معمولاً نباید
چرا؟
چون این فایل معمولاً تولیدشده (generated) است و با تغییر تنظیمات اصلی دوباره ساخته میشود.
——————-
5️⃣ تنظیمات اصلی GRUB کجاست؟
یکی از مهمترین فایلها:
مثلاً:
ممکن است چیزی شبیه این ببینی:
معنی:
اولین گزینه Boot به صورت پیشفرض انتخاب شود.
پنج ثانیه منتظر بمان.
پارامترهایی که هنگام اجرای Kernel ارسال میشوند.
————-
6️⃣ تغییر تنظیمات GRUB
مثلاً:
فرض کن:
را تغییر بدهیم:
یعنی منوی GRUB بهجای ۵ ثانیه، ۱۰ ثانیه نمایش داده شود.
اما هنوز کار تمام نشده!
باید تنظیمات جدید را به
در Debian/Ubuntu:
این فرمان معمولاً فایل:
را دوباره تولید میکند.
———————-
🔥 چند دستور کاربردی
دیدن GRUB:
دیدن تنظیمات:
جستجوی Kernel در GRUB:
تولید مجدد در Debian/Ubuntu:
نگاهی به بوت لودر
—————————-
قبل از GRUB یک نکته را یاد بگیریم:
🧠 Bootloader چیست؟
Bootloader یک برنامه کوچک است که بعد از BIOS/UEFI اجرا میشود و سیستمعامل را برای اجرا آماده میکند.
در لینوکس معروفترین Bootloader:
GRUB
است.
مثال واقعی:
Power ON
↓
BIOS / UEFI
↓
GRUB ← اینجا
↓
Linux Kernel
↓
Linux
———————-
1️⃣ تاریخچه GRUB
اول نسخه قدیمیتر را داشتیم:
GRUB Legacy
بعد نسخه جدیدتر آمد:
GRUB 2
امروزه تقریباً تمام توزیعهای مدرن Linux از GRUB 2 استفاده میکنند.
——————-
2️⃣ GRUB Legacy چیست؟
GRUB Legacy نسخه قدیمی GRUB است.
ساختار تنظیمات اصلی آن معمولاً:
/boot/grub/menu.lst
بود.
مثلاً در آن میتوانستیم مشخص کنیم:
کدام Kernel اجرا شود؟
Root filesystem کجاست؟
چه Kernel Parameterهایی ارسال شوند؟
——————-
3️⃣ GRUB 2 چیست؟
GRUB 2 ساختار جدیدتر و قدرتمندتری دارد.
یکی از تفاوتهای مهم:
GRUB Legacy
↓
menu.lst
ولی در:
GRUB 2
↓
grub.cfg
قرار داریم.
مسیر معمول:
/boot/grub/grub.cfg
در سیستمهای UEFI ممکن است فایلهای مربوط به GRUB را در مسیرهایی مثل:
/boot/efi/
هم ببینی.
———————-
4️⃣ فایل
grub.cfg چیست؟فایل اصلیای که GRUB هنگام Boot از آن برای منوی Boot و تنظیمات استفاده میکند:
/boot/grub/grub.cfg
مثلاً داخلش ممکن است اطلاعاتی مربوط به:
Kernel
initrd
root
boot parameters
ببینی.
⚠️ نکته مهم: معمولاً نباید
grub.cfg را مستقیم و دستی ویرایش کنیم.چرا؟
چون این فایل معمولاً تولیدشده (generated) است و با تغییر تنظیمات اصلی دوباره ساخته میشود.
——————-
5️⃣ تنظیمات اصلی GRUB کجاست؟
یکی از مهمترین فایلها:
/etc/default/grub
مثلاً:
cat /etc/default/grub
ممکن است چیزی شبیه این ببینی:
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
معنی:
GRUB_DEFAULT=0
اولین گزینه Boot به صورت پیشفرض انتخاب شود.
GRUB_TIMEOUT=5
پنج ثانیه منتظر بمان.
GRUB_CMDLINE_LINUX_DEFAULT
پارامترهایی که هنگام اجرای Kernel ارسال میشوند.
————-
6️⃣ تغییر تنظیمات GRUB
مثلاً:
nano /etc/default/grub
فرض کن:
GRUB_TIMEOUT=5
را تغییر بدهیم:
GRUB_TIMEOUT=10
یعنی منوی GRUB بهجای ۵ ثانیه، ۱۰ ثانیه نمایش داده شود.
اما هنوز کار تمام نشده!
باید تنظیمات جدید را به
grub.cfg اعمال کنیم.در Debian/Ubuntu:
update-grub
این فرمان معمولاً فایل:
/boot/grub/grub.cfg
را دوباره تولید میکند.
———————-
🔥 چند دستور کاربردی
دیدن GRUB:
ls /boot/grub
دیدن تنظیمات:
cat /etc/default/grub
جستجوی Kernel در GRUB:
grep menuentry /boot/grub/grub.cfg
تولید مجدد در Debian/Ubuntu:
update-grub
👏1
فصل پنجم — قسمت پنجاه و یکم 🐧
راه اندازی دستی لینوکس
———————
راهاندازی دستی لینوکس
گاهی فایل تنظیمات GRUB مشکل پیدا میکند یا سیستم نمیتواند بهصورت عادی بوت شود. در این حالت میتوانیم از خود GRUB بهصورت دستی سیستمعامل را بالا بیاوریم.
1. ورود به محیط GRUB
هنگام روشن شدن سیستم، در منوی GRUB معمولاً با فشردن Shift یا در بعضی سیستمها Esc میتوان منوی GRUB را نمایش داد.
سپس:
کلید
———————-
2. دستورات
در محیط GRUB میتوان ماژولهای موردنیاز را بارگذاری کرد:
———————
3. دستور
با:
میتوان دیسکها و پارتیشنهایی که GRUB شناسایی کرده را مشاهده کرد.
مثلاً:
حالا میتوانیم بررسی کنیم کدام پارتیشن شامل فایلهای لینوکس است:
ممکن است چیزهایی مثل این ببینیم:
——————-
4. تعیین Root
اگر پارتیشن موردنظر
یعنی به GRUB میگوییم:
———————-
5. ساخت مجدد فایل تنظیمات GRUB
برای ساخت مجدد فایل
grub2-mkconfig > /boot/grub2/grub.cfg
راه اندازی دستی لینوکس
———————
راهاندازی دستی لینوکس
گاهی فایل تنظیمات GRUB مشکل پیدا میکند یا سیستم نمیتواند بهصورت عادی بوت شود. در این حالت میتوانیم از خود GRUB بهصورت دستی سیستمعامل را بالا بیاوریم.
1. ورود به محیط GRUB
هنگام روشن شدن سیستم، در منوی GRUB معمولاً با فشردن Shift یا در بعضی سیستمها Esc میتوان منوی GRUB را نمایش داد.
سپس:
کلید
e → ویرایش Entry مربوط به لینوکس.———————-
2. دستورات
insmodدر محیط GRUB میتوان ماژولهای موردنیاز را بارگذاری کرد:
insmod linux
insmod gzip
insmod lvm
linux → پشتیبانی از کرنل لینوکسgzip → برای فایلهای فشردهlvm → برای دسترسی به Logical Volumeهای LVM———————
3. دستور
lsبا:
ls
میتوان دیسکها و پارتیشنهایی که GRUB شناسایی کرده را مشاهده کرد.
مثلاً:
(hd0) (hd0,msdos1) (hd0,msdos2)
حالا میتوانیم بررسی کنیم کدام پارتیشن شامل فایلهای لینوکس است:
ls (hd0,msdos1)/
ممکن است چیزهایی مثل این ببینیم:
boot/
etc/
home/
usr/
var/
——————-
4. تعیین Root
اگر پارتیشن موردنظر
hd0,msdos1 باشد:set root=(hd0,msdos1)
یعنی به GRUB میگوییم:
«از این پارتیشن بهعنوان محل فایلهای سیستم استفاده کن.»
———————-
5. ساخت مجدد فایل تنظیمات GRUB
برای ساخت مجدد فایل
grub.cfg در سیستم لینوکسی، دستور درست این است:grub2-mkconfig > /boot/grub2/grub.cfg
👏1
فصل پنجم — قسمت پنجاه و دوم 🐧
single user mode
———————
Single User Mode در AlmaLinux 9
Single User Mode یا حالت تککاربره یک حالت ویژه برای عیبیابی و تعمیر سیستم لینوکس است که در آن سیستم با حداقل سرویسهای لازم اجرا میشود.
🔹 Single User Mode به چه درد میخورد؟
مهمترین کاربردهایش:
بازیابی یا تغییر پسورد Root
تعمیر فایلسیستم
رفع مشکلات بوت
تعمیر تنظیمات سیستم
انجام کارهای مدیریتی وقتی سیستم عادی بالا نمیآید
مثلاً اگر پسورد
————————
روش اول —
مرحله 1 — ورود به GRUB
سیستم را Restart کن.
در صفحه GRUB:
روی AlmaLinux بایست → کلید
—————————
مرحله 2 — پیدا کردن خط Kernel
خطی را پیدا کن که با چیزی شبیه این شروع میشود:
یا:
در انتهای همین خط اضافه کن:
مثلاً:
——————
مرحله 3 — اجرای بوت
بعد از اضافه کردن:
کلید:
را بزن.
سیستم وارد محیط Recovery میشود و معمولاً چیزی شبیه این میبینی:
——————
مرحله 4 — قابل نوشتن کردن
در این مرحله سیستم اصلی معمولاً در
اول آن را Read/Write میکنیم:
————————
مرحله 6 — تغییر پسورد Root
دستور:
پسورد جدید را دو بار وارد کن.
مثلاً:
————————-
مرحله 7 — SELinux
چون در محیط Recovery تغییراتی روی سیستم انجام دادهایم، برای اینکه SELinux در بوت بعدی Contextها را دوباره تنظیم کند:
این فایل به سیستم میگوید:
——————
مرحله 8 — خروج و Restart
ابتدا:
بعد:
سیستم دوباره راهاندازی میشود.
ممکن است به دلیل:
بوت اول کمی بیشتر طول بکشد؛ چون SELinux در حال Relabel کردن فایلهاست.
———————-
روش دوم —
یک روش دیگر برای ورود مستقیم به Shell، اضافه کردن این پارامتر به انتهای خط Kernel است:
یعنی در GRUB:
بعد:
را بزن.
در این روش، Kernel به جای اجرای فرآیند معمول
را اجرا میکند.
سپس بسته به وضعیت Mountها، ممکن است لازم باشد Root filesystem را Read/Write کنی.
مثلاً:
بعد:
و برای SELinux:
سپس:
—————
این پارامتر باعث میشود SELinux در آن بوت به حالت Permissive برود.
یعنی SELinux در آن بوت جلوی عملیات را نمیگیرد، ولی همچنان میتواند موارد نقض Policy را گزارش کند.
مثلاً در بعضی روشهای Recovery ممکن است انتهای خط Kernel اینطور باشد:
اما برای بازیابی معمول پسورد در AlmaLinux 9، روش
——————————
single user mode
———————
Single User Mode در AlmaLinux 9
Single User Mode یا حالت تککاربره یک حالت ویژه برای عیبیابی و تعمیر سیستم لینوکس است که در آن سیستم با حداقل سرویسهای لازم اجرا میشود.
🔹 Single User Mode به چه درد میخورد؟
مهمترین کاربردهایش:
بازیابی یا تغییر پسورد Root
تعمیر فایلسیستم
رفع مشکلات بوت
تعمیر تنظیمات سیستم
انجام کارهای مدیریتی وقتی سیستم عادی بالا نمیآید
مثلاً اگر پسورد
root را فراموش کرده باشیم، میتوانیم از این روش برای تغییر آن استفاده کنیم.————————
روش اول —
rd.break در AlmaLinux 9مرحله 1 — ورود به GRUB
سیستم را Restart کن.
در صفحه GRUB:
روی AlmaLinux بایست → کلید
e را بزن.—————————
مرحله 2 — پیدا کردن خط Kernel
خطی را پیدا کن که با چیزی شبیه این شروع میشود:
linux /vmlinuz-...
یا:
linux16 /vmlinuz-...
در انتهای همین خط اضافه کن:
rd.break
مثلاً:
linux /vmlinuz-... root=/dev/mapper/almalinux-root ro ... rd.break
——————
مرحله 3 — اجرای بوت
بعد از اضافه کردن:
rd.break
کلید:
Ctrl + X
را بزن.
سیستم وارد محیط Recovery میشود و معمولاً چیزی شبیه این میبینی:
switch_root:/#
——————
مرحله 4 — قابل نوشتن کردن
/sysrootدر این مرحله سیستم اصلی معمولاً در
/sysroot قرار دارد.اول آن را Read/Write میکنیم:
mount -o remount,rw /sysroot
————————
مرحله 6 — تغییر پسورد Root
دستور:
passwd root
پسورد جدید را دو بار وارد کن.
مثلاً:
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
————————-
مرحله 7 — SELinux
چون در محیط Recovery تغییراتی روی سیستم انجام دادهایم، برای اینکه SELinux در بوت بعدی Contextها را دوباره تنظیم کند:
touch /.autorelabel
این فایل به سیستم میگوید:
«در بوت بعدی فایلها را دوباره با Context مناسب SELinux برچسبگذاری کن.»
——————
مرحله 8 — خروج و Restart
ابتدا:
exit
بعد:
reboot
سیستم دوباره راهاندازی میشود.
ممکن است به دلیل:
touch /.autorelabel
بوت اول کمی بیشتر طول بکشد؛ چون SELinux در حال Relabel کردن فایلهاست.
———————-
روش دوم —
init=/bin/bashیک روش دیگر برای ورود مستقیم به Shell، اضافه کردن این پارامتر به انتهای خط Kernel است:
rw init=/bin/bash
یعنی در GRUB:
linux /vmlinuz-... root=/dev/mapper/almalinux-root ro ... rw init=/bin/bash
بعد:
Ctrl + X
را بزن.
در این روش، Kernel به جای اجرای فرآیند معمول
init، مستقیماً:/bin/bash
را اجرا میکند.
سپس بسته به وضعیت Mountها، ممکن است لازم باشد Root filesystem را Read/Write کنی.
مثلاً:
mount -o remount,rw /
بعد:
passwd root
و برای SELinux:
touch /.autorelabel
سپس:
exec /sbin/reboot
—————
enforcing=0 چیست؟enforcing=0
این پارامتر باعث میشود SELinux در آن بوت به حالت Permissive برود.
یعنی SELinux در آن بوت جلوی عملیات را نمیگیرد، ولی همچنان میتواند موارد نقض Policy را گزارش کند.
مثلاً در بعضی روشهای Recovery ممکن است انتهای خط Kernel اینطور باشد:
rd.break enforcing=0
اما برای بازیابی معمول پسورد در AlmaLinux 9، روش
rd.break بهتنهایی و سپس mount، chroot، passwd و touch /.autorelabel مسیر اصلی و قابلفهمتری است.——————————
👏1
فصل پنجم — قسمت پنجاه و سوم 🐧
single user mode
اما روی الما 10
———————
1️⃣ بوت از ISO
ISO آلما لینوکس 10 را به ماشین وصل کن و سیستم را از روی آن Boot کن.
در منوی اولیه گزینهای شبیه:
را انتخاب کن.
سپس گزینه:
را بزن.
———————
2️⃣ پیدا کردن سیستم نصبشده
محیط Rescue سیستم نصبشده را پیدا میکند و معمولاً از تو میپرسد که آیا میخواهی سیستم نصبشده را Mount کند.
گزینه:
را انتخاب کن.
در این حالت سیستم نصبشده معمولاً در:
Mount میشود.
——————-
3️⃣ ورود به سیستم نصبشده
حالا:
از این لحظه به بعد، انگار وارد سیستم AlmaLinux نصبشده شدهای.
مثلاً:
———————
4️⃣ تغییر پسورد Root
رمز جدید را دو بار وارد کن.
اگر موفق باشد:
————
5️⃣ SELinux
برای اینکه بعد از تغییرات، SELinux هنگام بوت دوباره Contextها را بررسی کند:
—————————-
6️⃣ خروج
بعد سیستم را Restart کن:
ISO/CD را قبل از بوت بعدی از ماشین جدا کن تا دوباره وارد محیط نصب نشود.
——————-
single user mode
اما روی الما 10
———————
1️⃣ بوت از ISO
ISO آلما لینوکس 10 را به ماشین وصل کن و سیستم را از روی آن Boot کن.
در منوی اولیه گزینهای شبیه:
Troubleshooting
را انتخاب کن.
سپس گزینه:
Rescue a AlmaLinux system
را بزن.
———————
2️⃣ پیدا کردن سیستم نصبشده
محیط Rescue سیستم نصبشده را پیدا میکند و معمولاً از تو میپرسد که آیا میخواهی سیستم نصبشده را Mount کند.
گزینه:
1) Continue
را انتخاب کن.
در این حالت سیستم نصبشده معمولاً در:
/mnt/sysroot
Mount میشود.
——————-
3️⃣ ورود به سیستم نصبشده
حالا:
chroot /mnt/sysroot
از این لحظه به بعد، انگار وارد سیستم AlmaLinux نصبشده شدهای.
مثلاً:
passwd root
———————
4️⃣ تغییر پسورد Root
passwd root
رمز جدید را دو بار وارد کن.
اگر موفق باشد:
passwd: all authentication tokens updated successfully.
————
5️⃣ SELinux
برای اینکه بعد از تغییرات، SELinux هنگام بوت دوباره Contextها را بررسی کند:
touch /.autorelabel
—————————-
6️⃣ خروج
exit
بعد سیستم را Restart کن:
reboot
ISO/CD را قبل از بوت بعدی از ماشین جدا کن تا دوباره وارد محیط نصب نشود.
——————-
❤1👏1
فصل پنجم — قسمت پنجاه و چهارم 🐧
systemd
———————
🧠 systemd چیست؟
بعد از اینکه Kernel بالا آمد، سیستم باید بقیه قسمتها را راهاندازی کند؛ مثل:
شبکه
SSH
سرویسها
لاگها
زمان سیستم
سرویسهای مختلف
اینجا Init System وارد عمل میشود.
در لینوکس دو سیستم معروف داریم:
امروزه بیشتر توزیعهای مدرن مثل Debian، Ubuntu، Fedora، RHEL و AlmaLinux از
—————————
🔹 ساختار کلی systemd
نکته مهم:
معمولاً میبینی:
یعنی systemd اولین Process سیستم است.
——————-
🔹 systemctl چیست؟
مهمترین ابزار مدیریت systemd است:
مثلاً:
یا در بعضی سیستمهای Red Hat:
————
🔹 مشاهده Unitها
نمایش Unitهای فعال:
نمایش تمام Unit Fileها:
——————
🔹 Unit چیست؟
در systemd تقریباً همه چیز به صورت Unit مدیریت میشود.
مثلاً:
مثلاً:
——————
دیدن فایل سرویس:
مثلاً:
———————————-
🎯 Target چیست؟
در
در
مثلاً:
مشاهده Target پیشفرض:
مثلاً:
تغییر به حالت متنی:
تغییر به حالت گرافیکی:
——————-
🔥 مدیریت سرویسها
روشن کردن سرویس
خاموش کردن
ریستارت
بررسی وضعیت
بررسی فعال بودن
خروجی مثلاً:
—————-
🔄 اجرا شدن سرویس بعد از روشن شدن سیستم
فعال کردن:
یعنی:
غیرفعال کردن:
—————————
🛑 Power Management
خاموش کردن:
ریبوت:
خاموش کردن با shutdown:
ریبوت با shutdown:
Sleep:
Hibernate:
systemd
———————
🧠 systemd چیست؟
بعد از اینکه Kernel بالا آمد، سیستم باید بقیه قسمتها را راهاندازی کند؛ مثل:
شبکه
SSH
سرویسها
لاگها
زمان سیستم
سرویسهای مختلف
اینجا Init System وارد عمل میشود.
در لینوکس دو سیستم معروف داریم:
SysVinit
systemd
امروزه بیشتر توزیعهای مدرن مثل Debian، Ubuntu، Fedora، RHEL و AlmaLinux از
systemd استفاده میکنند.—————————
🔹 ساختار کلی systemd
BIOS / UEFI
↓
GRUB
↓
Kernel
↓
systemd (PID 1)
↓
Services / Targets / Mounts / ...
نکته مهم:
ps -p 1
معمولاً میبینی:
PID 1
systemd
یعنی systemd اولین Process سیستم است.
——————-
🔹 systemctl چیست؟
مهمترین ابزار مدیریت systemd است:
systemctl
مثلاً:
systemctl status ssh
یا در بعضی سیستمهای Red Hat:
systemctl status sshd
————
🔹 مشاهده Unitها
نمایش Unitهای فعال:
systemctl list-units
نمایش تمام Unit Fileها:
systemctl list-unit-files
——————
🔹 Unit چیست؟
در systemd تقریباً همه چیز به صورت Unit مدیریت میشود.
مثلاً:
.service
.socket
.target
.mount
.timer
.device
مثلاً:
systemctl status sshd.service
——————
دیدن فایل سرویس:
systemctl cat sshd
مثلاً:
[Unit]
Description=OpenSSH server
[Service]
ExecStart=...
[Install]
WantedBy=multi-user.target
———————————-
🎯 Target چیست؟
در
SysVinit چیزی به نام Runlevel داشتیم.در
systemd مفهوم مشابهی با Target داریم.مثلاً:
Runlevel 3
↓
multi-user.target
Runlevel 5
↓
graphical.target
مشاهده Target پیشفرض:
systemctl get-default
مثلاً:
graphical.target
تغییر به حالت متنی:
systemctl set-default multi-user.target
تغییر به حالت گرافیکی:
systemctl set-default graphical.target
——————-
🔥 مدیریت سرویسها
روشن کردن سرویس
systemctl start sshd
خاموش کردن
systemctl stop sshd
ریستارت
systemctl restart sshd
بررسی وضعیت
systemctl status sshd
بررسی فعال بودن
systemctl is-active sshd
خروجی مثلاً:
active
—————-
🔄 اجرا شدن سرویس بعد از روشن شدن سیستم
فعال کردن:
systemctl enable sshd
یعنی:
بعد از Boot سیستم، SSH هم خودکار اجرا شود.
غیرفعال کردن:
systemctl disable sshd
—————————
🛑 Power Management
خاموش کردن:
systemctl poweroff
ریبوت:
systemctl reboot
خاموش کردن با shutdown:
shutdown -h now
ریبوت با shutdown:
shutdown -r now
Sleep:
systemctl suspend
Hibernate:
systemctl hibernate
👏1
فصل پنجم — قسمت پنجاه و پنجم 🐧
send messeage یا ارسال پیام به کاربر
———————
در لینوکس چند روش برای نمایش یا ارسال پیام به کاربر داریم:
———————
1️⃣ پیام قبل از Login — فایل
وقتی کاربر میخواهد از طریق کنسول وارد سیستم شود، محتوای این فایل میتواند نمایش داده شود:
مثلاً:
ویرایش:
🧠 مثال واقعی
میتوانی بنویسی:
———————-
2️⃣ پیام SSH قبل از Login
برای SSH معمولاً از Banner استفاده میکنیم.
یک فایل بساز:
داخلش:
بعد فایل تنظیمات SSH را باز کن:
اضافه کن:
بعد:
حالا وقتی کاربر با SSH وصل شود، قبل از Login این پیام را میبیند.
——————
3️⃣ پیام بعد از Login —
Message Of The Day
یعنی:
در بعضی سیستمها میتوانی:
مثلاً:
بعد از Login نمایش داده میشود.
——————
4️⃣
در سیستمهایی که از
مثلاً:
اگر پیام مربوط به Cockpit را نمیخواهی، میتوانی فایل مربوطه را حذف یا غیرفعال کنی.
مثلاً:
⚠️ اسم و محل فایلهای Cockpit ممکن است بسته به توزیع و نسخه متفاوت باشد؛ قبل از حذف بهتر است محتویات
————————
5️⃣
یکی از مهمترین دستورات این قسمت:
یعنی:
مثلاً:
تمام کاربرانی که در آن لحظه وارد سیستم هستند، پیام را دریافت میکنند.
برای دیدن کاربران:
——————
6️⃣ ارسال پیام به یک کاربر خاص
با
بعد پیام را تایپ کن:
برای پایان:
———————
7️⃣
این دستور برای نمایش Notification گرافیکی در محیط دسکتاپ است.
مثلاً:
یک Notification روی دسکتاپ نمایش داده میشود.
⚠️ این روش برای سرورهای بدون محیط گرافیکی معمولاً کاربردی ندارد.
——————
8️⃣ ارسال Mail
در لینوکس میتوان از ابزارهایی مثل:
برای ارسال ایمیل استفاده کرد.
مثلاً:
اما برای ارسال واقعی ایمیل معمولاً باید یک Mail Transfer Agent (MTA) مثل Postfix تنظیم شده باشد.
send messeage یا ارسال پیام به کاربر
———————
در لینوکس چند روش برای نمایش یا ارسال پیام به کاربر داریم:
قبل از Login
بعد از Login
پیام به یک کاربر خاص
پیام به همه کاربران
پیام از طریق Mail
———————
1️⃣ پیام قبل از Login — فایل
/etc/issueوقتی کاربر میخواهد از طریق کنسول وارد سیستم شود، محتوای این فایل میتواند نمایش داده شود:
cat /etc/issue
مثلاً:
Welcome to Alireza Server
Authorized users only!
ویرایش:
nano /etc/issue
🧠 مثال واقعی
میتوانی بنویسی:
================================
Welcome to My Linux Server
Unauthorized access prohibited
================================
———————-
2️⃣ پیام SSH قبل از Login
برای SSH معمولاً از Banner استفاده میکنیم.
یک فایل بساز:
nano /etc/ssh/banner
داخلش:
********************************
WARNING!
Authorized users only.
********************************
بعد فایل تنظیمات SSH را باز کن:
nano /etc/ssh/sshd_config
اضافه کن:
Banner /etc/ssh/banner
بعد:
systemctl restart sshd
حالا وقتی کاربر با SSH وصل شود، قبل از Login این پیام را میبیند.
——————
3️⃣ پیام بعد از Login —
/etc/motdMOTD یعنی:Message Of The Day
یعنی:
پیام روز برای کاربر.
در بعضی سیستمها میتوانی:
nano /etc/motd
مثلاً:
Welcome Alireza!
This server is managed by IT.
بعد از Login نمایش داده میشود.
——————
4️⃣
/etc/motd.d/در سیستمهایی که از
motd.d پشتیبانی میکنند، میتوان پیامها را به صورت فایلهای جداگانه قرار داد:ls /etc/motd.d/
مثلاً:
nano /etc/motd.d/cockpit
اگر پیام مربوط به Cockpit را نمیخواهی، میتوانی فایل مربوطه را حذف یا غیرفعال کنی.
مثلاً:
rm /etc/motd.d/cockpit
⚠️ اسم و محل فایلهای Cockpit ممکن است بسته به توزیع و نسخه متفاوت باشد؛ قبل از حذف بهتر است محتویات
/etc/motd.d/ را ببینی.————————
5️⃣
wall — پیام به همه کاربرانیکی از مهمترین دستورات این قسمت:
wall
یعنی:
Write ALL → پیام را برای تمام کاربران Login شده ارسال کن.
مثلاً:
echo "Server will reboot in 5 minutes!" | wall
تمام کاربرانی که در آن لحظه وارد سیستم هستند، پیام را دریافت میکنند.
برای دیدن کاربران:
who
——————
6️⃣ ارسال پیام به یک کاربر خاص
با
write میتوانی برای یک کاربر مشخص پیام بفرستی:write ali
بعد پیام را تایپ کن:
Hello Ali
Server will reboot soon.
برای پایان:
Ctrl + D
———————
7️⃣
notify-sendاین دستور برای نمایش Notification گرافیکی در محیط دسکتاپ است.
مثلاً:
notify-send "Warning" "Server will reboot soon!"
یک Notification روی دسکتاپ نمایش داده میشود.
⚠️ این روش برای سرورهای بدون محیط گرافیکی معمولاً کاربردی ندارد.
——————
8️⃣ ارسال Mail
در لینوکس میتوان از ابزارهایی مثل:
برای ارسال ایمیل استفاده کرد.
مثلاً:
echo "Server is down!" | mail -s "Server Alert" admin@example.com
اما برای ارسال واقعی ایمیل معمولاً باید یک Mail Transfer Agent (MTA) مثل Postfix تنظیم شده باشد.
👏1
فصل پنجم — قسمت پنجاه و ششم 🐧
virtualisations مجازی سازی در لینوکس
———————
🧠 مجازیسازی چیست؟
خیلی ساده:
مجازیسازی یعنی یک کامپیوتر فیزیکی را طوری تقسیم کنیم که بتوانیم چند سیستم یا محیط مستقل روی آن اجرا کنیم.
مثلاً یک سرور فیزیکی داریم:
هر VM فکر میکند یک کامپیوتر واقعی دارد.
——————
🔥 دو نوع اصلی مجازیسازی
در آموزشها معمولاً این دو مدل را با Type 1 و Type 2 میشناسیم.
1️⃣ Type 1 — Bare Metal
در این مدل Hypervisor تقریباً مستقیماً روی سختافزار قرار میگیرد.
یعنی سیستمعامل معمولی مثل Windows یا Ubuntu در وسط نیست.
معروفها:
VMware ESXi
Microsoft Hyper-V
Xen
KVM در زیرساختهای لینوکسی
مثلاً:
ESXi را روی یک سرور واقعی نصب میکنی و بعد داخلش چندین VM میسازی.
👉 برای دیتاسنترها بسیار رایج است.
——————
2️⃣ Type 2 — Hosted
اینجا اول یک سیستمعامل معمولی نصب میکنی و بعد نرمافزار مجازیسازی را روی آن نصب میکنی.
معروفها:
VMware Workstation
VirtualBox
VMware Fusion
مثلاً روی لپتاپت Windows داری و:
را اجرا میکنی.
این همان چیزی است که احتمالاً در VMware با آن کار کردهای.
———————
🐳 اما Container چیست؟
اینجا یک تفاوت خیلی مهم داریم.
Container مثل VM یک سیستمعامل کامل جداگانه اجرا نمیکند.
مثلاً:
کانتینرها Kernel سیستم میزبان را Share میکنند.
به همین دلیل معمولاً:
سبکترند
سریعتر بالا میآیند
RAM کمتری مصرف میکنند
برای اجرای Application بسیار مناسباند
معروفترین ابزار:
Docker
و ابزارهای دیگر مثل:
Podman
LXC
containerd
———————
⚔️ VM vs Container
مثلاً میخواهی سه Ubuntu اجرا کنی.
VM:
هر VM معمولاً:
دارد.
Container:
پس Container خیلی سبکتر است.
———————
🧠 یک مثال واقعی
فرض کن یک سرور 64GB RAM داری.
برای ساخت 4 سرور مستقل میتوانی:
با VM:
هرکدام سیستمعامل خودشان را دارند.
با Container:
همه از Kernel میزبان استفاده میکنند.
———————-
⚠️ یک نکته مهم درباره «سطح یک و دو»
Type 1 و Type 2 مربوط به Hypervisor هستند، نه Container.
پس این دستهبندی را قاطی نکن:
🎯 فقط اینو فعلاً حفظ کن:
VM = یک کامپیوتر مجازی کامل
Container = یک محیط ایزوله برای اجرای برنامه
و مهمتر از همه:
virtualisations مجازی سازی در لینوکس
———————
🧠 مجازیسازی چیست؟
خیلی ساده:
مجازیسازی یعنی یک کامپیوتر فیزیکی را طوری تقسیم کنیم که بتوانیم چند سیستم یا محیط مستقل روی آن اجرا کنیم.
مثلاً یک سرور فیزیکی داریم:
Server
CPU: 16 Core
RAM: 64GB
↓
┌───────────────┐
│ VM 1 Ubuntu │
│ VM 2 Debian │
│ VM 3 Windows │
│ VM 4 AlmaLinux│
└───────────────┘
هر VM فکر میکند یک کامپیوتر واقعی دارد.
——————
🔥 دو نوع اصلی مجازیسازی
در آموزشها معمولاً این دو مدل را با Type 1 و Type 2 میشناسیم.
1️⃣ Type 1 — Bare Metal
در این مدل Hypervisor تقریباً مستقیماً روی سختافزار قرار میگیرد.
Hardware
↓
Hypervisor
↓
VM1 VM2 VM3
یعنی سیستمعامل معمولی مثل Windows یا Ubuntu در وسط نیست.
معروفها:
VMware ESXi
Microsoft Hyper-V
Xen
KVM در زیرساختهای لینوکسی
مثلاً:
ESXi را روی یک سرور واقعی نصب میکنی و بعد داخلش چندین VM میسازی.
👉 برای دیتاسنترها بسیار رایج است.
——————
2️⃣ Type 2 — Hosted
اینجا اول یک سیستمعامل معمولی نصب میکنی و بعد نرمافزار مجازیسازی را روی آن نصب میکنی.
Hardware
↓
Windows / Linux
↓
VMware Workstation
↓
Ubuntu VM
Kali VM
Windows VM
معروفها:
VMware Workstation
VirtualBox
VMware Fusion
مثلاً روی لپتاپت Windows داری و:
VMware Workstation
↓
Kali Linux
را اجرا میکنی.
این همان چیزی است که احتمالاً در VMware با آن کار کردهای.
———————
🐳 اما Container چیست؟
اینجا یک تفاوت خیلی مهم داریم.
Container مثل VM یک سیستمعامل کامل جداگانه اجرا نمیکند.
مثلاً:
Hardware
↓
Linux Kernel
↓
Docker
┌──────┬──────┬──────┐
│ App1 │ App2 │ App3 │
└──────┴──────┴──────┘
کانتینرها Kernel سیستم میزبان را Share میکنند.
به همین دلیل معمولاً:
سبکترند
سریعتر بالا میآیند
RAM کمتری مصرف میکنند
برای اجرای Application بسیار مناسباند
معروفترین ابزار:
Docker
و ابزارهای دیگر مثل:
Podman
LXC
containerd
———————
⚔️ VM vs Container
مثلاً میخواهی سه Ubuntu اجرا کنی.
VM:
هر VM معمولاً:
Virtual Hardware
↓
Kernel
↓
OS
↓
Application
دارد.
Container:
Host Kernel
↓
Container
↓
Application
پس Container خیلی سبکتر است.
———————
🧠 یک مثال واقعی
فرض کن یک سرور 64GB RAM داری.
برای ساخت 4 سرور مستقل میتوانی:
با VM:
VM1 → 8GB
VM2 → 8GB
VM3 → 8GB
VM4 → 8GB
هرکدام سیستمعامل خودشان را دارند.
با Container:
Docker
├── Nginx
├── PHP
├── MySQL
└── Redis
همه از Kernel میزبان استفاده میکنند.
———————-
⚠️ یک نکته مهم درباره «سطح یک و دو»
Type 1 و Type 2 مربوط به Hypervisor هستند، نه Container.
پس این دستهبندی را قاطی نکن:
Virtualization
│
├── Type 1
│ ├── ESXi
│ ├── Hyper-V
│ └── Xen
│
├── Type 2
│ ├── VMware Workstation
│ └── VirtualBox
│
└── Containerization
├── Docker
├── Podman
└── LXC
🎯 فقط اینو فعلاً حفظ کن:
VM = یک کامپیوتر مجازی کامل
Container = یک محیط ایزوله برای اجرای برنامه
و مهمتر از همه:
VM معمولاً Kernel جدا دارد؛ Container معمولاً Kernel میزبان را Share میکند.
👏1
فصل پنجم — قسمت پنجاه و هفت 🐧
docker - نصب داکر
———————
🐳 Docker چیست؟
قبل از نصب، خیلی ساده:
Docker ابزاری برای اجرای برنامهها داخل Container است.
مثلاً بهجای اینکه برای اجرای Nginx کل یک VM بسازیم:
با Docker میتوانیم فقط Container مربوط به Nginx را اجرا کنیم.
———————-
🐳 نصب Docker در Ubuntu / Debian
1️⃣ آپدیت مخازن
2️⃣ نصب ابزارهای موردنیاز
3️⃣ اضافه کردن کلید Repository داکر
برای Ubuntu باید مسیر Repository را متناسب با Ubuntu تنظیم کنی؛ روش رسمی Docker از Repository خود Docker استفاده میکند.
———————-
در Debian/Ubuntu بعد از اضافه کردن Repository رسمی:
سپس:
——————
🔍 بررسی نصب
مثلاً:
و:
اگر دیدی:
یعنی Docker در حال اجراست. ✅
—————-
🚀 تست Docker
مهمترین تست:
Docker یک Image کوچک به نام
اگر پیام:
را دیدی، یعنی Docker درست نصب شده. 🎉
——————
👤 اجرای Docker بدون sudo
بهصورت پیشفرض ممکن است مجبور باشی بنویسی:
اگر میخواهی کاربر فعلی بدون
بعد یکبار Logout/Login کن.
سپس:
⚠️ عضویت در گروه
——————-
🐧 نصب روی RHEL / AlmaLinux / Rocky
در سیستمهای Red Hat:
Repository داکر را اضافه میکنیم:
بعد:
سرویس را فعال و اجرا میکنیم:
تست:
و:
——————
🧠 چند دستور اولیه که بعد از نصب لازم داری
کانتینرهای در حال اجرا
همه کانتینرها
Imageهای موجود
دریافت Image
ساخت و اجرای Container
توقف Container
اجرای دوباره Container
——————-
🎯 زنجیره Docker را اینطوری حفظ کن:
مثلاً:
نکته: برای آموزش دوره، بهتر است نصب Docker را روی VM آزمایشگاهی انجام بدهی، نه سرور اصلی؛ مخصوصاً چون Docker دسترسیهای سطح بالایی به سیستم میزبان دارد.
docker - نصب داکر
———————
🐳 Docker چیست؟
قبل از نصب، خیلی ساده:
Docker ابزاری برای اجرای برنامهها داخل Container است.
مثلاً بهجای اینکه برای اجرای Nginx کل یک VM بسازیم:
VM
├── OS
├── Kernel
├── Nginx
└── Config
با Docker میتوانیم فقط Container مربوط به Nginx را اجرا کنیم.
———————-
🐳 نصب Docker در Ubuntu / Debian
1️⃣ آپدیت مخازن
sudo apt update
2️⃣ نصب ابزارهای موردنیاز
sudo apt install ca-certificates curl
3️⃣ اضافه کردن کلید Repository داکر
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg \
-o /etc/apt/keyrings/docker.asc
برای Ubuntu باید مسیر Repository را متناسب با Ubuntu تنظیم کنی؛ روش رسمی Docker از Repository خود Docker استفاده میکند.
———————-
در Debian/Ubuntu بعد از اضافه کردن Repository رسمی:
sudo apt update
سپس:
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
——————
🔍 بررسی نصب
docker --version
مثلاً:
Docker version 28.x.x
و:
systemctl status docker
اگر دیدی:
Active: active (running)
یعنی Docker در حال اجراست. ✅
—————-
🚀 تست Docker
مهمترین تست:
sudo docker run hello-world
Docker یک Image کوچک به نام
hello-world دریافت میکند و یک Container از روی آن اجرا میکند.اگر پیام:
Hello from Docker!
را دیدی، یعنی Docker درست نصب شده. 🎉
——————
👤 اجرای Docker بدون sudo
بهصورت پیشفرض ممکن است مجبور باشی بنویسی:
sudo docker ps
اگر میخواهی کاربر فعلی بدون
sudo از Docker استفاده کند:sudo usermod -aG docker $USER
بعد یکبار Logout/Login کن.
سپس:
docker ps
⚠️ عضویت در گروه
docker عملاً دسترسی بسیار بالایی روی سیستم میدهد؛ روی سرور چندکاربره باید با احتیاط انجام شود.——————-
🐧 نصب روی RHEL / AlmaLinux / Rocky
در سیستمهای Red Hat:
sudo dnf install -y dnf-plugins-core
Repository داکر را اضافه میکنیم:
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
بعد:
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
سرویس را فعال و اجرا میکنیم:
sudo systemctl enable --now docker
تست:
docker --version
و:
sudo docker run hello-world
——————
🧠 چند دستور اولیه که بعد از نصب لازم داری
docker ps
کانتینرهای در حال اجرا
docker ps -a
همه کانتینرها
docker images
Imageهای موجود
docker pull nginx
دریافت Image
docker run nginx
ساخت و اجرای Container
docker stop CONTAINER
توقف Container
docker start CONTAINER
اجرای دوباره Container
——————-
🎯 زنجیره Docker را اینطوری حفظ کن:
Docker
↓
Image
↓
Container
↓
Application
مثلاً:
nginx Image
↓
nginx Container
↓
Web Server
نکته: برای آموزش دوره، بهتر است نصب Docker را روی VM آزمایشگاهی انجام بدهی، نه سرور اصلی؛ مخصوصاً چون Docker دسترسیهای سطح بالایی به سیستم میزبان دارد.
فصل پنجم — قسمت پنجاه و هشت 🐧
KVM - نصب kvm
———————
🧠 KVM چیست؟
KVM = Kernel-based Virtual Machine
یعنی قابلیت مجازیسازی که داخل Kernel لینوکس قرار دارد.
خیلی ساده:
KVM به لینوکس اجازه میدهد ماشین مجازی اجرا کند.
——————
1️⃣ بررسی پشتیبانی CPU
اول ببینیم CPU قابلیت Virtualization دارد:
اگر عددی مثل:
دیدی یعنی CPU قابلیت Virtualization دارد.
همچنین:
—————
2️⃣ نصب KVM در Debian / Ubuntu
ابتدا:
بعد:
برای بررسی:
مثلاً:
یا روی AMD:
—————
3️⃣ فعال کردن Libvirt
بررسی:
اگر:
دیدی، سرویس فعال است.
—————
4️⃣ اضافه کردن کاربر به گروهها
برای اینکه لازم نباشد همیشه با
و:
بعد باید Logout/Login کنی.
——————
🖥 Virt-Manager چیست؟
Virt-Manager یک رابط گرافیکی برای مدیریت ماشینهای مجازی KVM/libvirt است.
یعنی بهجای اینکه همهچیز را با دستور انجام دهی:
Virt-Manager خودش KVM نیست.
خیلی مهم:
—————-
🚀 اجرای Virt-Manager
در محیط دسکتاپ:
پنجره برنامه باز میشود.
معمولاً یک Connection به شکل:
میبینی.
————-
🖥 ساخت VM با Virt-Manager
داخل Virt-Manager:
مثلاً:
بعد VM را Start میکنی.
——————
🧰 چند دستور مهم KVM/libvirt
دیدن VMها:
همه VMها:
روشن کردن:
خاموش کردن:
اجباری خاموش کردن:
ریستارت:
نمایش اطلاعات:
—————
🧠
اگر Virt-Manager رابط گرافیکی باشد، virsh ابزار خط فرمان libvirt است.
مثلاً:
یا از طریق Terminal:
——————
یک مثال واقعی
میخواهی روی Ubuntu یک Windows VM بسازی:
پس Virt-Manager خودش ماشین مجازیساز نیست؛ فقط یک پنل مدیریتی برای زیرساخت KVM/libvirt است.
KVM - نصب kvm
———————
🧠 KVM چیست؟
KVM = Kernel-based Virtual Machine
یعنی قابلیت مجازیسازی که داخل Kernel لینوکس قرار دارد.
خیلی ساده:
Hardware
↓
Linux Kernel
↓
KVM
↓
VM1 VM2 VM3
KVM به لینوکس اجازه میدهد ماشین مجازی اجرا کند.
نکته: خود KVM بیشتر نقش لایه مجازیسازی را دارد و معمولاً در کنار QEMU + libvirt استفاده میشود.
——————
1️⃣ بررسی پشتیبانی CPU
اول ببینیم CPU قابلیت Virtualization دارد:
egrep -c '(vmx|svm)' /proc/cpuinfo
اگر عددی مثل:
8
دیدی یعنی CPU قابلیت Virtualization دارد.
vmx → Intel VT-xsvm → AMD-Vهمچنین:
lscpu | grep Virtualization
—————
2️⃣ نصب KVM در Debian / Ubuntu
ابتدا:
sudo apt update
بعد:
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients virt-manager
برای بررسی:
lsmod | grep kvm
مثلاً:
kvm_intel
kvm
یا روی AMD:
kvm_amd
kvm
—————
3️⃣ فعال کردن Libvirt
sudo systemctl enable --now libvirtd
بررسی:
systemctl status libvirtd
اگر:
Active: active (running)
دیدی، سرویس فعال است.
—————
4️⃣ اضافه کردن کاربر به گروهها
برای اینکه لازم نباشد همیشه با
sudo کار کنی:sudo usermod -aG libvirt $USER
و:
sudo usermod -aG kvm $USER
بعد باید Logout/Login کنی.
——————
🖥 Virt-Manager چیست؟
Virt-Manager یک رابط گرافیکی برای مدیریت ماشینهای مجازی KVM/libvirt است.
یعنی بهجای اینکه همهچیز را با دستور انجام دهی:
KVM
↓
libvirt
↓
Virt-Manager
↓
GUI
Virt-Manager خودش KVM نیست.
خیلی مهم:
KVM → موتور/قابلیت مجازیسازی
QEMU → شبیهسازی و اجرای VM
libvirt → مدیریت VMها
Virt-Manager → رابط گرافیکی
—————-
🚀 اجرای Virt-Manager
در محیط دسکتاپ:
virt-manager
پنجره برنامه باز میشود.
معمولاً یک Connection به شکل:
QEMU/KVM
میبینی.
————-
🖥 ساخت VM با Virt-Manager
داخل Virt-Manager:
Create a new virtual machine
↓
Local install media
↓
ISO File
↓
انتخاب RAM
↓
انتخاب CPU
↓
انتخاب Disk
↓
Network
↓
Finish
مثلاً:
Name: Ubuntu-Test
RAM: 4 GB
CPU: 2 Core
Disk: 30 GB
ISO: ubuntu.iso
بعد VM را Start میکنی.
——————
🧰 چند دستور مهم KVM/libvirt
دیدن VMها:
virsh list
همه VMها:
virsh list --all
روشن کردن:
virsh start ubuntu-test
خاموش کردن:
virsh shutdown ubuntu-test
اجباری خاموش کردن:
virsh destroy ubuntu-test
ریستارت:
virsh reboot ubuntu-test
نمایش اطلاعات:
virsh dominfo ubuntu-test
—————
🧠
virsh چیست؟اگر Virt-Manager رابط گرافیکی باشد، virsh ابزار خط فرمان libvirt است.
مثلاً:
Virt-Manager
↓
libvirt
↓
KVM
↓
Hardware
یا از طریق Terminal:
virsh
↓
libvirt
↓
KVM
——————
یک مثال واقعی
میخواهی روی Ubuntu یک Windows VM بسازی:
Ubuntu
↓
KVM
↓
QEMU
↓
libvirt
↓
Virt-Manager
↓
Windows VM
پس Virt-Manager خودش ماشین مجازیساز نیست؛ فقط یک پنل مدیریتی برای زیرساخت KVM/libvirt است.
👏1
فصل پنجم — قسمت پنجاه و نه 🐧
Proxmox - نصب Proxmox
———————
Proxmox چیست؟
Proxmox یک پلتفرم مدیریت مجازیسازی است که روی یک سرور نصب میشود و به ما اجازه میدهد چندین VM و Container را روی یک سختافزار اجرا و مدیریت کنیم.
مثلاً:
یعنی بهجای اینکه برای هر سیستم یک سرور فیزیکی داشته باشیم، همه را روی یک سرور اجرا میکنیم.
———————
1️⃣ پیشنیازهای نصب
حداقل چیزهایی که لازم داریم:
CPU با قابلیت Virtualization
Intel →
AMD →
RAM مناسب
هارد/SSD
کارت شبکه
فایل ISO مربوط به Proxmox
💡 برای محیط واقعی بهتر است Proxmox روی خود سرور فیزیکی نصب شود، نه داخل VMware یا VirtualBox.
———————
2️⃣ ساخت USB بوت
ISO پروکسموکس را روی فلش Bootable میریزیم.
سپس سرور را با USB بوت میکنیم.
در BIOS/UEFI معمولاً:
—————-
3️⃣ نصب Proxmox
بعد از بوت، صفحه نصب را میبینیم:
انتخابش میکنیم.
سپس:
Target Disk
هاردی که قرار است Proxmox روی آن نصب شود.
مثلاً:
⚠️ انتخاب این هارد معمولاً باعث پاک شدن اطلاعات آن میشود.
——————
Country / Time Zone
کشور، منطقه زمانی و Keyboard را انتخاب میکنیم.
مثلاً:
—————-
Password
برای کاربر:
رمز تعیین میکنیم.
——————
Network
اینجا خیلی مهم است.
مثلاً:
Proxmox برای مدیریت معمولاً با IP ثابت تنظیم میشود.
———————
4️⃣ شروع نصب
در پایان تنظیمات را بررسی میکنیم:
و سیستم شروع به نصب میکند.
بعد از پایان، سرور Reboot میشود.
———————
5️⃣ ورود به پنل Proxmox
بعد از نصب، معمولاً با این آدرس وارد میشویم:
مثلاً:
پورت مهم Proxmox:
———————
6️⃣ ورود
بعد وارد پنل مدیریتی میشویم.
از اینجا میتوانیم:
—————-
🧠 نکته مهم برای دوره
KVM موتور مجازیسازی است.
QEMU وظیفه شبیهسازی/اجرای ماشین را بر عهده دارد.
Proxmox یک لایه مدیریتی روی این تکنولوژیهاست که همهچیز را راحتتر مدیریت میکند.
پس:
و برای Containerها:
خلاصه:
Proxmox - نصب Proxmox
———————
Proxmox چیست؟
Proxmox یک پلتفرم مدیریت مجازیسازی است که روی یک سرور نصب میشود و به ما اجازه میدهد چندین VM و Container را روی یک سختافزار اجرا و مدیریت کنیم.
مثلاً:
سرور فیزیکی
│
└── Proxmox
├── VM 101 → Ubuntu
├── VM 102 → Debian
├── VM 103 → Windows
└── CT 104 → Debian Container
یعنی بهجای اینکه برای هر سیستم یک سرور فیزیکی داشته باشیم، همه را روی یک سرور اجرا میکنیم.
———————
1️⃣ پیشنیازهای نصب
حداقل چیزهایی که لازم داریم:
CPU با قابلیت Virtualization
Intel →
VT-xAMD →
AMD-VRAM مناسب
هارد/SSD
کارت شبکه
فایل ISO مربوط به Proxmox
💡 برای محیط واقعی بهتر است Proxmox روی خود سرور فیزیکی نصب شود، نه داخل VMware یا VirtualBox.
———————
2️⃣ ساخت USB بوت
ISO پروکسموکس را روی فلش Bootable میریزیم.
سپس سرور را با USB بوت میکنیم.
در BIOS/UEFI معمولاً:
Boot Menu
↓
USB
↓
Proxmox Installer
—————-
3️⃣ نصب Proxmox
بعد از بوت، صفحه نصب را میبینیم:
Install Proxmox VE
انتخابش میکنیم.
سپس:
Target Disk
هاردی که قرار است Proxmox روی آن نصب شود.
مثلاً:
/dev/sda 500GB SSD
⚠️ انتخاب این هارد معمولاً باعث پاک شدن اطلاعات آن میشود.
——————
Country / Time Zone
کشور، منطقه زمانی و Keyboard را انتخاب میکنیم.
مثلاً:
Time Zone: Asia/Tehran
Keyboard: US
—————-
Password
برای کاربر:
root
رمز تعیین میکنیم.
——————
Network
اینجا خیلی مهم است.
مثلاً:
Hostname:
pve.example.local
IP:
192.168.1.10
Gateway:
192.168.1.1
DNS:
8.8.8.8
Proxmox برای مدیریت معمولاً با IP ثابت تنظیم میشود.
———————
4️⃣ شروع نصب
در پایان تنظیمات را بررسی میکنیم:
Install
و سیستم شروع به نصب میکند.
بعد از پایان، سرور Reboot میشود.
———————
5️⃣ ورود به پنل Proxmox
بعد از نصب، معمولاً با این آدرس وارد میشویم:
https://IP-SERVER:8006
مثلاً:
https://192.168.1.10:8006
پورت مهم Proxmox:
8006
———————
6️⃣ ورود
Username: root
Password: رمز نصب
بعد وارد پنل مدیریتی میشویم.
از اینجا میتوانیم:
VM بسازیم
Container بسازیم
هارد اضافه کنیم
Network تنظیم کنیم
Backup بگیریم
Snapshot بگیریم
VM را روشن/خاموش کنیم
—————-
🧠 نکته مهم برای دوره
KVM موتور مجازیسازی است.
QEMU وظیفه شبیهسازی/اجرای ماشین را بر عهده دارد.
Proxmox یک لایه مدیریتی روی این تکنولوژیهاست که همهچیز را راحتتر مدیریت میکند.
پس:
Hardware
↓
Proxmox VE
↓
KVM/QEMU
↓
VM
و برای Containerها:
Hardware
↓
Proxmox VE
↓
LXC
↓
Container
خلاصه:
Proxmox خودش «سیستمعامل مهمان» نیست؛ یک پلتفرم مدیریت مجازیسازی است که روی سرور نصب میشود و از طریق پنل وب، VM و Containerهای مختلف را مدیریت میکنیم.
👏1
خب خب رسما
لینوکس الپیک 1 قسمت 101 رو تموم کردیم با اتمام فصل پنج
از فردا فصل شش و شروع میشه و استارت قسمت دوم الپیک یک(102) به امید خدا میخوره
لینوکس الپیک 1 قسمت 101 رو تموم کردیم با اتمام فصل پنج
از فردا فصل شش و شروع میشه و استارت قسمت دوم الپیک یک(102) به امید خدا میخوره
🔥2👏1
فصل ششم — قسمت شصتم 🐧
محیط GUI در لینوکس
————————
در این فصل از محیط متنی (CLI) فاصله میگیریم و وارد محیط گرافیکی (GUI) لینوکس میشویم.
🖥 GUI چیست؟
GUI یعنی:
Graphical User Interface
یعنی محیطی که بهجای اینکه همهچیز را با دستور انجام بدهیم، با پنجره، آیکون، منو و ماوس کار میکنیم.
مثلاً در CLI:
ولی در GUI میتوانیم با کلیک راست و انتخاب New Folder پوشه بسازیم.
———————-
1️⃣ Desktop Environment چیست؟
لینوکس خودش یک محیط دسکتاپ مشخص ندارد.
ما میتوانیم Desktop Environment نصب کنیم.
چند مورد معروف:
GNOME
محیط پیشفرض بسیاری از توزیعها، مخصوصاً Fedora و Ubuntu.
KDE Plasma
ظاهر بسیار قابل تنظیم و شبیهتر به محیطهای کلاسیک دسکتاپ.
XFCE
سبک و کممصرف؛ مناسب سیستمهای ضعیفتر.
Cinnamon
محیطی ساده و شبیه دسکتاپ سنتی.
MATE
سبک و کلاسیک.
LXQt
خیلی سبک و مناسب سیستمهای ضعیف.
مثلاً:
🧠 نکته:
توزیع لینوکس و Desktop Environment یکی نیستند.
مثلاً:
همه Ubuntu هستند ولی ظاهر و محیط دسکتاپشان متفاوت است.
——————
2️⃣ نصب محیط GUI
مثلاً در Debian/Ubuntu میتوانیم GNOME نصب کنیم:
در سیستمهای Red Hat مانند Fedora:
بعد میتوانیم Target گرافیکی را فعال کنیم:
و برای ورود فوری به محیط گرافیکی:
——————————-
3️⃣ Accessibility چیست؟
Accessibility یعنی امکاناتی که استفاده از سیستم را برای افراد با نیازهای متفاوت راحتتر میکند.
مثلاً:
بزرگ کردن نوشتهها
Screen Reader
بزرگنمایی صفحه
کیبورد مجازی
High Contrast
تنظیم سرعت ماوس
تنظیم Sticky Keys
مثلاً فردی که دید ضعیف دارد میتواند:
را فعال کند.
🧠 خیلی ساده:
————————
4️⃣ تنظیم زبان
در محیط GUI میتوانیم زبان سیستم را تغییر دهیم.
مثلاً:
زبان روی مواردی مثل:
منوها
پیامهای سیستم
تاریخ
بعضی برنامهها
تأثیر میگذارد.
——————
5️⃣ تنظیم جغرافیا و Region
Region مشخص میکند سیستم از چه قواعد منطقهای استفاده کند.
مثلاً:
این موارد میتوانند روی:
فرمت تاریخ
فرمت ساعت
واحد پول
فرمت اعداد
اولین روز هفته
تأثیر داشته باشند.
————
6️⃣ تنظیم Time Zone
مثلاً:
برای دیدن وضعیت زمان سیستم.
مثلاً:
و برای دیدن Time Zoneهای موجود:
محیط GUI در لینوکس
————————
در این فصل از محیط متنی (CLI) فاصله میگیریم و وارد محیط گرافیکی (GUI) لینوکس میشویم.
🖥 GUI چیست؟
GUI یعنی:
Graphical User Interface
یعنی محیطی که بهجای اینکه همهچیز را با دستور انجام بدهیم، با پنجره، آیکون، منو و ماوس کار میکنیم.
مثلاً در CLI:
mkdir test
cd test
ولی در GUI میتوانیم با کلیک راست و انتخاب New Folder پوشه بسازیم.
———————-
1️⃣ Desktop Environment چیست؟
لینوکس خودش یک محیط دسکتاپ مشخص ندارد.
ما میتوانیم Desktop Environment نصب کنیم.
چند مورد معروف:
GNOME
محیط پیشفرض بسیاری از توزیعها، مخصوصاً Fedora و Ubuntu.
KDE Plasma
ظاهر بسیار قابل تنظیم و شبیهتر به محیطهای کلاسیک دسکتاپ.
XFCE
سبک و کممصرف؛ مناسب سیستمهای ضعیفتر.
Cinnamon
محیطی ساده و شبیه دسکتاپ سنتی.
MATE
سبک و کلاسیک.
LXQt
خیلی سبک و مناسب سیستمهای ضعیف.
مثلاً:
Linux
├── GNOME
├── KDE Plasma
├── XFCE
├── Cinnamon
├── MATE
└── LXQt
🧠 نکته:
توزیع لینوکس و Desktop Environment یکی نیستند.
مثلاً:
Ubuntu + GNOME
Ubuntu + KDE
Ubuntu + XFCE
همه Ubuntu هستند ولی ظاهر و محیط دسکتاپشان متفاوت است.
——————
2️⃣ نصب محیط GUI
مثلاً در Debian/Ubuntu میتوانیم GNOME نصب کنیم:
sudo apt install task-gnome-desktop
در سیستمهای Red Hat مانند Fedora:
sudo dnf group install "GNOME Desktop Environment"
بعد میتوانیم Target گرافیکی را فعال کنیم:
systemctl set-default graphical.target
و برای ورود فوری به محیط گرافیکی:
systemctl isolate graphical.target
——————————-
3️⃣ Accessibility چیست؟
Accessibility یعنی امکاناتی که استفاده از سیستم را برای افراد با نیازهای متفاوت راحتتر میکند.
مثلاً:
بزرگ کردن نوشتهها
Screen Reader
بزرگنمایی صفحه
کیبورد مجازی
High Contrast
تنظیم سرعت ماوس
تنظیم Sticky Keys
مثلاً فردی که دید ضعیف دارد میتواند:
Settings
↓
Accessibility
↓
Large Text
را فعال کند.
🧠 خیلی ساده:
Accessibility یعنی سیستم را طوری تنظیم کنیم که افراد مختلف راحتتر بتوانند از آن استفاده کنند.
————————
4️⃣ تنظیم زبان
در محیط GUI میتوانیم زبان سیستم را تغییر دهیم.
مثلاً:
Settings
↓
Region & Language
↓
Language
زبان روی مواردی مثل:
منوها
پیامهای سیستم
تاریخ
بعضی برنامهها
تأثیر میگذارد.
——————
5️⃣ تنظیم جغرافیا و Region
Region مشخص میکند سیستم از چه قواعد منطقهای استفاده کند.
مثلاً:
Language → English
Region → Iran
این موارد میتوانند روی:
فرمت تاریخ
فرمت ساعت
واحد پول
فرمت اعداد
اولین روز هفته
تأثیر داشته باشند.
————
6️⃣ تنظیم Time Zone
مثلاً:
timedatectl
برای دیدن وضعیت زمان سیستم.
مثلاً:
timedatectl set-timezone Asia/Tehran
و برای دیدن Time Zoneهای موجود:
timedatectl list-timezones
❤1👏1
فصل ششم — قسمت شصتویکم 🐧
نصب و پیکربندی محیط GUI
——————-
🖥 اول GUI چیست؟
GUI = Graphical User Interface
یعنی محیط گرافیکی که با ماوس، پنجره، آیکون و منو با لینوکس کار میکنیم.
مثلاً بهجای:
در GUI میتوانی با کلیک راست → New Folder پوشه بسازی.
—————-
2️⃣ Window Manager چیست؟
اینجا یک لایه پایینتر داریم.
Window Manager مسئول مدیریت پنجرههاست؛ مثلاً:
برای محیطهای مختلف:
Metacity هم Window Manager قدیمی GNOME بود.
پس خیلی ساده:
——————
3️⃣ XFree86 چیست؟
XFree86 یکی از پیادهسازیهای قدیمی سیستم X Window System بود.
در گذشته وظیفهاش فراهم کردن زیرساخت نمایش گرافیکی در سیستمهای Unix/Linux بود.
بعداً X.Org جایگزین اصلی آن شد.
—————
4️⃣ X.Org چیست؟
X.Org Server یکی از پیادهسازیهای سیستم X Window System است.
به زبان ساده:
ساختار ساده:
—————
5️⃣ Wayland چیست؟
Wayland یک معماری جدیدتر برای سیستم نمایش گرافیکی است که برای بسیاری از سناریوها جایگزین X11/X.Org میشود.
ساختار آن سادهتر است:
مثلاً در GNOME، Mutter میتواند نقش compositor مربوط به Wayland را هم انجام دهد.
🧠 پس تفاوت اصلی را اینطور حفظ کن:
—————-
6️⃣ نصب GUI در Red Hat / Fedora
اگر از سیستمهای مبتنی بر Red Hat استفاده میکنی، ابتدا میتوانی گروههای نرمافزاری را ببینی:
مثلاً برای نصب محیط GUI:
یا در بعضی نسخهها:
⚠️ اسم دقیق Group ممکن است بین نسخههای Fedora/RHEL/AlmaLinux متفاوت باشد؛ اول با
—————
فعال کردن GUI هنگام Boot
بعد از نصب:
بعد:
حالا سیستم بهجای محیط متنی، به محیط گرافیکی میرود.
برای دیدن Target فعلی:
اگر دیدی:
یعنی GUI بهعنوان حالت پیشفرض انتخاب شده.
——————
7️⃣ نصب GUI در Debian / Ubuntu
اول معمولاً Repositoryها باید درست باشند.
برای X.Org:
برای GNOME:
یا بستههای دسکتاپ مناسب نسخه تو، مثلاً:
برای X11 authentication هم:
نکته مهم درباره دستورهای نوشتهشده
اینهایی که نوشتی احتمالاً اشتباه تایپی دارند:
این اسمها به این شکل صحیح نیستند.
مثلاً:
و برای GNOME بسته/Task دقیق را متناسب با توزیع بررسی میکنیم.
———————-
نصب و پیکربندی محیط GUI
——————-
🖥 اول GUI چیست؟
GUI = Graphical User Interface
یعنی محیط گرافیکی که با ماوس، پنجره، آیکون و منو با لینوکس کار میکنیم.
مثلاً بهجای:
mkdir test
در GUI میتوانی با کلیک راست → New Folder پوشه بسازی.
—————-
2️⃣ Window Manager چیست؟
اینجا یک لایه پایینتر داریم.
Window Manager مسئول مدیریت پنجرههاست؛ مثلاً:
پنجره را کجا قرار بده؟
پنجره را Maximize کن
پنجره را Minimize کن
پنجره را ببند
برای محیطهای مختلف:
GNOME → Mutter
KDE → KWin
Cinnamon → Muffin
MATE → Marco
Metacity هم Window Manager قدیمی GNOME بود.
پس خیلی ساده:
Desktop Environment
↓
Window Manager
↓
پنجرهها
——————
3️⃣ XFree86 چیست؟
XFree86 یکی از پیادهسازیهای قدیمی سیستم X Window System بود.
در گذشته وظیفهاش فراهم کردن زیرساخت نمایش گرافیکی در سیستمهای Unix/Linux بود.
بعداً X.Org جایگزین اصلی آن شد.
—————
4️⃣ X.Org چیست؟
X.Org Server یکی از پیادهسازیهای سیستم X Window System است.
به زبان ساده:
برنامهها میخواهند چیزی روی مانیتور نمایش دهند؛ X.Org واسطهای بین برنامهها، ورودیها و سختافزار گرافیکی است.
ساختار ساده:
Application
↓
Desktop Environment
↓
X.Org
↓
GPU / Display
—————
5️⃣ Wayland چیست؟
Wayland یک معماری جدیدتر برای سیستم نمایش گرافیکی است که برای بسیاری از سناریوها جایگزین X11/X.Org میشود.
ساختار آن سادهتر است:
Application
↓
Wayland Compositor
↓
Display
مثلاً در GNOME، Mutter میتواند نقش compositor مربوط به Wayland را هم انجام دهد.
🧠 پس تفاوت اصلی را اینطور حفظ کن:
قدیمیتر:
XFree86 → X.Org / X11
جدیدتر:
Wayland
—————-
6️⃣ نصب GUI در Red Hat / Fedora
اگر از سیستمهای مبتنی بر Red Hat استفاده میکنی، ابتدا میتوانی گروههای نرمافزاری را ببینی:
dnf group list
مثلاً برای نصب محیط GUI:
dnf group install "Server with GUI"
یا در بعضی نسخهها:
dnf group install "Workstation"
⚠️ اسم دقیق Group ممکن است بین نسخههای Fedora/RHEL/AlmaLinux متفاوت باشد؛ اول با
dnf group list بررسی کن.—————
فعال کردن GUI هنگام Boot
بعد از نصب:
systemctl set-default graphical.target
بعد:
reboot
حالا سیستم بهجای محیط متنی، به محیط گرافیکی میرود.
برای دیدن Target فعلی:
systemctl get-default
اگر دیدی:
graphical.target
یعنی GUI بهعنوان حالت پیشفرض انتخاب شده.
——————
7️⃣ نصب GUI در Debian / Ubuntu
اول معمولاً Repositoryها باید درست باشند.
برای X.Org:
apt install xorg
برای GNOME:
apt install gnome
یا بستههای دسکتاپ مناسب نسخه تو، مثلاً:
apt install ubuntu-desktop
برای X11 authentication هم:
apt install xauth
نکته مهم درباره دستورهای نوشتهشده
اینهایی که نوشتی احتمالاً اشتباه تایپی دارند:
apt-get install unmtu-desktop
apt-get install gnome-desktop-environmaent
این اسمها به این شکل صحیح نیستند.
مثلاً:
apt install ubuntu-desktop
و برای GNOME بسته/Task دقیق را متناسب با توزیع بررسی میکنیم.
———————-
👏1
فصل ششم — قسمت شصت و دوم 🐧
قابلیتهای استاندارد در محیط های gui
————————————
حالا که فهمیدیم GUI چیست، ببینیم یک Desktop Environment از چه قسمتهایی تشکیل شده.
————-
🖥 1. Desktop Settings
بخش تنظیمات دسکتاپ.
مثلاً:
یعنی جایی که ظاهر و رفتار سیستم را تنظیم میکنیم.
———————
🖥 2. Display Manager
قبل از ورود به دسکتاپ، صفحه Login را نمایش میدهد.
مثلاً:
نمونهها:
GDM → معمولاً GNOME
SDDM → معمولاً KDE
LightDM → سبک و قابل استفاده با محیطهای مختلف
🧠 Display Manager با Window Manager فرق دارد.
Display Manager → ورود به سیستم
Window Manager → مدیریت پنجرهها
——————-
📁 3. File Manager
برای مدیریت فایل و پوشهها.
مثلاً:
نمونهها:
GNOME → Files / Nautilus
KDE → Dolphin
XFCE → Thunar
Cinnamon → Nemo
MATE → Caja
—————-
🔹 4. Icon
آیکونها میانبرهای گرافیکی برای برنامهها، فایلها و پوشهها هستند.
مثلاً:
———————-
🧩 5. Widget
ابزارهای کوچک روی دسکتاپ یا پنل.
مثلاً:
—————-
⭐️ 6. Favorite Bar / Dock
برنامههای مورد علاقه را سریع در اختیارمان میگذارد.
مثلاً در GNOME میتوانی برنامههای پرکاربرد را در Dash/Dock قرار بدهی.
——————-
🚀 7. Launcher
برای اجرای سریع برنامهها.
مثلاً:
یا جستجو میکنی:
و Terminal را اجرا میکنی.
——————-
📋 8. Menu
منوی برنامهها.
مثلاً:
————-
📊 9. Panel
نوارهایی در بالا یا پایین صفحه که معمولاً اطلاعات و ابزارهای مختلف را نشان میدهند.
مثلاً:
—————-
🪟 10. Window Manager
مسئول مدیریت پنجرههاست.
مثلاً:
———————
🟠 GNOME
GNOME ظاهر مدرن و سادهای دارد.
7
ویژگی مهم:
ساده و تمیز
Activities Overview
جستجوی سریع
مناسب لپتاپ و دسکتاپ
قابلیت گسترش با Extensions
🔵 KDE Plasma
6
KDE خیلی قابل تنظیم است.
مثلاً میتوانی:
پنل را جابهجا کنی
ظاهر را تغییر بدهی
Widget اضافه کنی
رفتار پنجرهها را تغییر بدهی
🧠 اگر GNOME را ساده و مینیمال بدانیم، KDE بیشتر قابل شخصیسازی است.
🟢 Cinnamon
6
ظاهرش برای کسی که از Windows آمده بسیار آشناست:
🟡 XFCE
7
سبک و کممصرف است.
برای:
سیستمهای قدیمی
VMها
سیستمهایی با RAM کم
انتخاب خوبی است.
🟣 MATE
5
MATE هم سبک و کلاسیک است و ساختار سنتی دسکتاپ را حفظ میکند.
—————————-
🧩 GNOME Extensions
یکی از قابلیتهای جذاب GNOME همین Extensions است.
با Extension میتوانیم امکانات جدید به GNOME اضافه کنیم.
مثلاً:
مثلاً:
اضافه کردن پنل
نمایش CPU/RAM
تغییر رفتار پنجرهها
اضافه کردن Dock
تغییر ظاهر Shell
🧠 مثل افزونه مرورگر است؛ ولی برای محیط GNOME.
———————
قابلیتهای استاندارد در محیط های gui
————————————
حالا که فهمیدیم GUI چیست، ببینیم یک Desktop Environment از چه قسمتهایی تشکیل شده.
————-
🖥 1. Desktop Settings
بخش تنظیمات دسکتاپ.
مثلاً:
Settings
├── Display
├── Network
├── Sound
├── Keyboard
├── Mouse
└── Background
یعنی جایی که ظاهر و رفتار سیستم را تنظیم میکنیم.
———————
🖥 2. Display Manager
قبل از ورود به دسکتاپ، صفحه Login را نمایش میدهد.
مثلاً:
Username
Password
↓
Login
↓
Desktop
نمونهها:
GDM → معمولاً GNOME
SDDM → معمولاً KDE
LightDM → سبک و قابل استفاده با محیطهای مختلف
🧠 Display Manager با Window Manager فرق دارد.
Display Manager → ورود به سیستم
Window Manager → مدیریت پنجرهها
——————-
📁 3. File Manager
برای مدیریت فایل و پوشهها.
مثلاً:
Home
├── Documents
├── Downloads
├── Pictures
└── Videos
نمونهها:
GNOME → Files / Nautilus
KDE → Dolphin
XFCE → Thunar
Cinnamon → Nemo
MATE → Caja
—————-
🔹 4. Icon
آیکونها میانبرهای گرافیکی برای برنامهها، فایلها و پوشهها هستند.
مثلاً:
🗑 Trash
📁 Home
🌐 Firefox
———————-
🧩 5. Widget
ابزارهای کوچک روی دسکتاپ یا پنل.
مثلاً:
CPU: 20%
RAM: 45%
Weather: 25°C
Clock: 18:40
—————-
⭐️ 6. Favorite Bar / Dock
برنامههای مورد علاقه را سریع در اختیارمان میگذارد.
مثلاً در GNOME میتوانی برنامههای پرکاربرد را در Dash/Dock قرار بدهی.
——————-
🚀 7. Launcher
برای اجرای سریع برنامهها.
مثلاً:
Super
↓
Firefox
یا جستجو میکنی:
terminal
و Terminal را اجرا میکنی.
——————-
📋 8. Menu
منوی برنامهها.
مثلاً:
Applications
├── Internet
├── Office
├── System
├── Utilities
└── Settings
————-
📊 9. Panel
نوارهایی در بالا یا پایین صفحه که معمولاً اطلاعات و ابزارهای مختلف را نشان میدهند.
مثلاً:
┌──────────────────────────────────────┐
│ Applications Network 🔊 🔋 18:40│
└──────────────────────────────────────┘
—————-
🪟 10. Window Manager
مسئول مدیریت پنجرههاست.
مثلاً:
باز کردن پنجره
بستن
Minimize
Maximize
جابجایی
Resize
———————
🟠 GNOME
GNOME ظاهر مدرن و سادهای دارد.
7
ویژگی مهم:
ساده و تمیز
Activities Overview
جستجوی سریع
مناسب لپتاپ و دسکتاپ
قابلیت گسترش با Extensions
🔵 KDE Plasma
6
KDE خیلی قابل تنظیم است.
مثلاً میتوانی:
پنل را جابهجا کنی
ظاهر را تغییر بدهی
Widget اضافه کنی
رفتار پنجرهها را تغییر بدهی
🧠 اگر GNOME را ساده و مینیمال بدانیم، KDE بیشتر قابل شخصیسازی است.
🟢 Cinnamon
6
ظاهرش برای کسی که از Windows آمده بسیار آشناست:
┌─────────────────────────┐
│ │
│ Desktop │
│ │
├─────────────────────────┤
│ Menu Apps Clock │
└─────────────────────────┘
🟡 XFCE
7
سبک و کممصرف است.
برای:
سیستمهای قدیمی
VMها
سیستمهایی با RAM کم
انتخاب خوبی است.
🟣 MATE
5
MATE هم سبک و کلاسیک است و ساختار سنتی دسکتاپ را حفظ میکند.
—————————-
🧩 GNOME Extensions
یکی از قابلیتهای جذاب GNOME همین Extensions است.
با Extension میتوانیم امکانات جدید به GNOME اضافه کنیم.
مثلاً:
GNOME
↓
Extension
↓
قابلیت جدید
مثلاً:
اضافه کردن پنل
نمایش CPU/RAM
تغییر رفتار پنجرهها
اضافه کردن Dock
تغییر ظاهر Shell
🧠 مثل افزونه مرورگر است؛ ولی برای محیط GNOME.
———————
❤1👏1🙏1
فصل ششم — قسمت شصت و سوم 🐧
Accessibility - برای افراد با مشکلات بینایی
——————-
Accessibility یعنی قابلیتهایی که کمک میکنند افراد دارای محدودیتهای بینایی، شنوایی یا حرکتی راحتتر با کامپیوتر کار کنند.
اینجا تمرکز ما روی Keyboard Accessibility است.
—————-
⌨️ Keyboard Accessibility چیست؟
فرض کن کسی نمیتواند بهراحتی چند کلید را همزمان فشار دهد.
مثلاً برای:
باید سه کلید را با هم بگیرد.
Accessibility میتواند این کار را راحتتر کند.
—————
1️⃣ Sticky Keys
یکی از مهمترین قابلیتهاست.
با Sticky Keys لازم نیست کلیدهای ترکیبی را همزمان نگه داری.
مثلاً بهجای:
میتوانی:
را جداگانه فشار بدهی.
سیستم متوجه میشود که Ctrl و Alt همچنان در ترکیب هستند.
🧠 مثال واقعی:
——————-
2️⃣ Slow Keys
Slow Keys باعث میشود سیستم فشارهای خیلی سریع یا اتفاقی روی کلیدها را نادیده بگیرد.
مثلاً اگر دستت روی کیبورد کشیده شود:
سیستم میتواند تنظیم شود که کلید باید مدت مشخصی نگه داشته شود تا ثبت شود.
مناسب افرادی است که کنترل حرکتی دست برایشان سخت است.
——————-
3️⃣ Bounce Keys
اگر یک کلید را چند بار پشت سر هم بهصورت ناخواسته فشار بدهی، Bounce Keys میتواند فشارهای تکراری سریع را نادیده بگیرد.
مثلاً:
به دلیل چند بار لرزش انگشت ایجاد شده؛ سیستم میتواند جلوی ثبت همه آنها را بگیرد.
—————
4️⃣ Toggle Keys
وقتی کلیدهایی مثل:
را فشار میدهی، Toggle Keys میتواند با صدای متفاوت فعال یا غیرفعال شدن آنها را اعلام کند.
مثلاً:
این برای کسی که نمیتواند وضعیت چراغهای کیبورد را ببیند مفید است.
———————
🔄 5️⃣ Switch / Switching
در Accessibility مفهوم Switch Access هم وجود دارد.
یعنی کاربر میتواند بهجای استفاده از ماوس و کیبورد معمولی، با یک یا چند کلید یا وسیله ورودی ساده بین گزینهها جابهجا شود.
مثلاً:
سیستم گزینهها را یکییکی Highlight میکند و کاربر با فشار یک کلید انتخاب میکند.
—————
🌍 اول یک نکته مهم: تغییر زبان Accessibility نیست
تغییر زبان کیبورد معمولاً در بخش Keyboard / Input Sources تنظیم میشود، نه Accessibility.
مثلاً میخواهی بین:
سوییچ کنی.
در GNOME معمولاً از:
زبان فارسی و انگلیسی را اضافه میکنی.
بعد معمولاً با:
بین زبانها جابهجا میشوی.
در بعضی محیطها میانبر میتواند متفاوت باشد.
—————-
👁 1. قابلیتهای مربوط به بینایی
Screen Reader
صفحه را برای کاربر میخواند.
مثلاً کاربر روی یک آیکون میرود:
Screen Reader اعلام میکند:
در GNOME معمولاً ابزار معروف آن Orca است.
—————
🔍 Zoom / Magnification
قسمتی از صفحه را بزرگ میکند.
مثلاً:
برای افرادی که دید ضعیف دارند بسیار کاربردی است.
——————-
📝 Large Text
اندازه نوشتهها را بزرگ میکند.
🎨 High Contrast
تضاد رنگها را بیشتر میکند تا نوشتهها و عناصر صفحه راحتتر دیده شوند.
——————
👂 2. قابلیتهای مربوط به شنوایی
برای افرادی که مشکل شنوایی دارند، بعضی سیستمها میتوانند بهجای تکیه بر صدا، نمایش بصری ارائه کنند.
مثلاً:
یعنی اتفاقی که با صدا اعلام میشد، بهصورت تصویری هم مشخص شود.
—————-
🖱 4. قابلیتهای مربوط به Mouse
مثلاً Mouse Keys اجازه میدهد با صفحهکلید، نشانگر ماوس را کنترل کنی.
یعنی بهجای حرکت دادن فیزیکی ماوس:
همچنین میتوان سرعت حرکت ماوس و مدت نگهداشتن کلیک را تنظیم کرد.
————-
🧠 5. Switch Access
برای افرادی که نمیتوانند بهراحتی از ماوس و کیبورد معمولی استفاده کنند.
سیستم گزینهها را یکییکی انتخاب میکند:
و کاربر با یک Switch یا ورودی ساده گزینه موردنظر را انتخاب میکند.
—————-
🖥 6. Accessibility در محیطهای مختلف
ممکن است اسم و محل این گزینهها در:
کمی متفاوت باشد.
ولی مفهوم کلی یکی است:
——————
Accessibility - برای افراد با مشکلات بینایی
——————-
Accessibility یعنی قابلیتهایی که کمک میکنند افراد دارای محدودیتهای بینایی، شنوایی یا حرکتی راحتتر با کامپیوتر کار کنند.
اینجا تمرکز ما روی Keyboard Accessibility است.
—————-
⌨️ Keyboard Accessibility چیست؟
فرض کن کسی نمیتواند بهراحتی چند کلید را همزمان فشار دهد.
مثلاً برای:
Ctrl + Alt + Delete
باید سه کلید را با هم بگیرد.
Accessibility میتواند این کار را راحتتر کند.
—————
1️⃣ Sticky Keys
یکی از مهمترین قابلیتهاست.
با Sticky Keys لازم نیست کلیدهای ترکیبی را همزمان نگه داری.
مثلاً بهجای:
Ctrl + Alt + T
میتوانی:
Ctrl
↓
Alt
↓
T
را جداگانه فشار بدهی.
سیستم متوجه میشود که Ctrl و Alt همچنان در ترکیب هستند.
🧠 مثال واقعی:
اگر فردی مشکل حرکتی داشته باشد، بهجای اینکه سه انگشتش را همزمان روی کیبورد بگذارد، کلیدها را یکییکی میزند.
——————-
2️⃣ Slow Keys
Slow Keys باعث میشود سیستم فشارهای خیلی سریع یا اتفاقی روی کلیدها را نادیده بگیرد.
مثلاً اگر دستت روی کیبورد کشیده شود:
aaaaaaaaaaaa
سیستم میتواند تنظیم شود که کلید باید مدت مشخصی نگه داشته شود تا ثبت شود.
مناسب افرادی است که کنترل حرکتی دست برایشان سخت است.
——————-
3️⃣ Bounce Keys
اگر یک کلید را چند بار پشت سر هم بهصورت ناخواسته فشار بدهی، Bounce Keys میتواند فشارهای تکراری سریع را نادیده بگیرد.
مثلاً:
aaaaaaaa
به دلیل چند بار لرزش انگشت ایجاد شده؛ سیستم میتواند جلوی ثبت همه آنها را بگیرد.
—————
4️⃣ Toggle Keys
وقتی کلیدهایی مثل:
Caps Lock
Num Lock
Scroll Lock
را فشار میدهی، Toggle Keys میتواند با صدای متفاوت فعال یا غیرفعال شدن آنها را اعلام کند.
مثلاً:
Caps Lock ON → 🔊
Caps Lock OFF → 🔊
این برای کسی که نمیتواند وضعیت چراغهای کیبورد را ببیند مفید است.
———————
🔄 5️⃣ Switch / Switching
در Accessibility مفهوم Switch Access هم وجود دارد.
یعنی کاربر میتواند بهجای استفاده از ماوس و کیبورد معمولی، با یک یا چند کلید یا وسیله ورودی ساده بین گزینهها جابهجا شود.
مثلاً:
[Firefox] [Terminal] [Files]
↓
Switch
[Terminal] انتخاب شد
سیستم گزینهها را یکییکی Highlight میکند و کاربر با فشار یک کلید انتخاب میکند.
—————
🌍 اول یک نکته مهم: تغییر زبان Accessibility نیست
تغییر زبان کیبورد معمولاً در بخش Keyboard / Input Sources تنظیم میشود، نه Accessibility.
مثلاً میخواهی بین:
🇮🇷 فارسی
🇺🇸 English
سوییچ کنی.
در GNOME معمولاً از:
Settings
↓
Keyboard
↓
Input Sources
↓
Add Input Source
زبان فارسی و انگلیسی را اضافه میکنی.
بعد معمولاً با:
Super + Space
بین زبانها جابهجا میشوی.
در بعضی محیطها میانبر میتواند متفاوت باشد.
—————-
👁 1. قابلیتهای مربوط به بینایی
Screen Reader
صفحه را برای کاربر میخواند.
مثلاً کاربر روی یک آیکون میرود:
Firefox
Screen Reader اعلام میکند:
Firefox، application
در GNOME معمولاً ابزار معروف آن Orca است.
—————
🔍 Zoom / Magnification
قسمتی از صفحه را بزرگ میکند.
مثلاً:
عادی:
[ Settings ]
Zoom:
[ SETTINGS ]
برای افرادی که دید ضعیف دارند بسیار کاربردی است.
——————-
📝 Large Text
اندازه نوشتهها را بزرگ میکند.
🎨 High Contrast
تضاد رنگها را بیشتر میکند تا نوشتهها و عناصر صفحه راحتتر دیده شوند.
——————
👂 2. قابلیتهای مربوط به شنوایی
برای افرادی که مشکل شنوایی دارند، بعضی سیستمها میتوانند بهجای تکیه بر صدا، نمایش بصری ارائه کنند.
مثلاً:
Notification Sound
↓
Visual Flash
یعنی اتفاقی که با صدا اعلام میشد، بهصورت تصویری هم مشخص شود.
—————-
🖱 4. قابلیتهای مربوط به Mouse
مثلاً Mouse Keys اجازه میدهد با صفحهکلید، نشانگر ماوس را کنترل کنی.
یعنی بهجای حرکت دادن فیزیکی ماوس:
Keyboard
↓
Mouse Pointer
همچنین میتوان سرعت حرکت ماوس و مدت نگهداشتن کلیک را تنظیم کرد.
————-
🧠 5. Switch Access
برای افرادی که نمیتوانند بهراحتی از ماوس و کیبورد معمولی استفاده کنند.
سیستم گزینهها را یکییکی انتخاب میکند:
Firefox
↓
Terminal
↓
Files
↓
Settings
و کاربر با یک Switch یا ورودی ساده گزینه موردنظر را انتخاب میکند.
—————-
🖥 6. Accessibility در محیطهای مختلف
ممکن است اسم و محل این گزینهها در:
GNOME
KDE
XFCE
Cinnamon
MATE
کمی متفاوت باشد.
ولی مفهوم کلی یکی است:
👁 Vision
👂 Hearing
⌨️ Keyboard
🖱 Mouse
🗣 Speech / Reading
——————
❤1👏1
فصل ششم — قسمت شصت و چهارم 🐧
مفهوم localization
——————-
Localization یا بومیسازی یعنی سیستمعامل بداند کاربر در چه زبان، کشور و منطقهای کار میکند و اطلاعات را متناسب با آن نمایش دهد.
مثلاً:
—————
🌍 Locale چیست؟
Locale مجموعهای از تنظیمات مربوط به زبان و منطقه کاربر است.
در لینوکس این اطلاعات معمولاً از طریق Environment Variableها مشخص میشوند.
برای دیدن Locale فعلی:
مثلاً ممکن است ببینی:
——————
🧠 مهمترین متغیرها
LANG
تنظیم پیشفرض Locale سیستم/کاربر است.
مثلاً:
یعنی:
—————
LC_ALL
اگر مقدار داشته باشد، میتواند تنظیمات سایر
مثلاً:
معمولاً بهتر است برای تنظیم دائمی بیدلیل از آن استفاده نکنیم.
———————
LC_TIME
فرمت نمایش زمان و تاریخ:
LC_NUMERIC
فرمت اعداد:
LC_MONETARY
فرمت پول:
LC_MESSAGES
زبان پیامهای برنامهها:
—————-
🔤 حالا Encoding چیست؟
اینجا باید یک تفاوت مهم را بفهمی:
Locale ≠ Encoding
Locale میگوید:
Encoding میگوید:
————-
1️⃣ ASCII
قدیمیترین ساختار معروف برای نمایش کاراکترهاست.
مثلاً:
ASCII عمدتاً برای حروف انگلیسی، اعداد و تعدادی علامت طراحی شده.
❌ مشکل:
فارسی، عربی، چینی و بسیاری زبانهای دیگر را پوشش نمیدهد.
2️⃣ ISO-8859
برای گسترش ASCII مجموعههایی از استانداردهای 8 بیتی ایجاد شدند.
مثلاً:
برای بسیاری از کاراکترهای زبانهای اروپای غربی استفاده میشد.
اما هر نسخه مجموعه متفاوتی از کاراکترها را پوشش میدهد.
پس هنوز مشکل چندزبانه بودن کامل وجود داشت.
3️⃣ Unicode
Unicode آمد تا برای تقریباً تمام زبانهای دنیا یک استاندارد واحد برای کاراکترها داشته باشیم.
مثلاً:
همگی میتوانند در Unicode تعریف شوند.
🧠 خیلی ساده:
4️⃣ UTF
اینجا یک نکته خیلی مهم:
Unicode و UTF یکی نیستند.
Unicode مشخص میکند چه کاراکتری چه کدی دارد.
UTF مشخص میکند این اطلاعات چطور در حافظه/فایل به صورت بایت ذخیره یا منتقل شود.
معروفترین آن:
مثلاً:
یعنی Locale انگلیسی آمریکا با Encoding مبتنی بر UTF-8.
——————
🔍 در لینوکس چطور ببینیم؟
مهمترین دستور:
برای دیدن Localeهای موجود:
مثلاً:
و برای دیدن مقدار یک متغیر:
یا:
مفهوم localization
——————-
Localization یا بومیسازی یعنی سیستمعامل بداند کاربر در چه زبان، کشور و منطقهای کار میکند و اطلاعات را متناسب با آن نمایش دهد.
مثلاً:
زبان: فارسی
کشور: ایران
تقویم/فرمت تاریخ: متناسب با تنظیمات منطقه
فرمت عدد: متناسب با Locale
کیبورد: فارسی / انگلیسی
—————
🌍 Locale چیست؟
Locale مجموعهای از تنظیمات مربوط به زبان و منطقه کاربر است.
در لینوکس این اطلاعات معمولاً از طریق Environment Variableها مشخص میشوند.
برای دیدن Locale فعلی:
locale
مثلاً ممکن است ببینی:
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_ALL=
——————
🧠 مهمترین متغیرها
LANG
تنظیم پیشفرض Locale سیستم/کاربر است.
echo $LANG
مثلاً:
en_US.UTF-8
یعنی:
en → English
US → United States
UTF-8 → Encoding
—————
LC_ALL
اگر مقدار داشته باشد، میتواند تنظیمات سایر
LC_*ها را override کند.مثلاً:
echo $LC_ALL
معمولاً بهتر است برای تنظیم دائمی بیدلیل از آن استفاده نکنیم.
———————
LC_TIME
فرمت نمایش زمان و تاریخ:
echo $LC_TIME
LC_NUMERIC
فرمت اعداد:
echo $LC_NUMERIC
LC_MONETARY
فرمت پول:
echo $LC_MONETARY
LC_MESSAGES
زبان پیامهای برنامهها:
echo $LC_MESSAGES
—————-
🔤 حالا Encoding چیست؟
اینجا باید یک تفاوت مهم را بفهمی:
Locale ≠ Encoding
Locale میگوید:
«سیستم از چه زبان و منطقهای استفاده کند؟»
Encoding میگوید:
«کاراکترها را چطور به داده قابل ذخیره در کامپیوتر تبدیل کنیم؟»
————-
1️⃣ ASCII
قدیمیترین ساختار معروف برای نمایش کاراکترهاست.
مثلاً:
A → 65
B → 66
C → 67
ASCII عمدتاً برای حروف انگلیسی، اعداد و تعدادی علامت طراحی شده.
❌ مشکل:
فارسی، عربی، چینی و بسیاری زبانهای دیگر را پوشش نمیدهد.
2️⃣ ISO-8859
برای گسترش ASCII مجموعههایی از استانداردهای 8 بیتی ایجاد شدند.
مثلاً:
ISO-8859-1
برای بسیاری از کاراکترهای زبانهای اروپای غربی استفاده میشد.
اما هر نسخه مجموعه متفاوتی از کاراکترها را پوشش میدهد.
پس هنوز مشکل چندزبانه بودن کامل وجود داشت.
3️⃣ Unicode
Unicode آمد تا برای تقریباً تمام زبانهای دنیا یک استاندارد واحد برای کاراکترها داشته باشیم.
مثلاً:
A
ش
中
😀
همگی میتوانند در Unicode تعریف شوند.
🧠 خیلی ساده:
ASCII یک محله بود؛ Unicode یک شهر خیلی بزرگ برای کاراکترهای زبانهای مختلف است. 😄
4️⃣ UTF
اینجا یک نکته خیلی مهم:
Unicode و UTF یکی نیستند.
Unicode مشخص میکند چه کاراکتری چه کدی دارد.
UTF مشخص میکند این اطلاعات چطور در حافظه/فایل به صورت بایت ذخیره یا منتقل شود.
معروفترین آن:
UTF-8
مثلاً:
LANG=en_US.UTF-8
یعنی Locale انگلیسی آمریکا با Encoding مبتنی بر UTF-8.
——————
🔍 در لینوکس چطور ببینیم؟
مهمترین دستور:
locale
برای دیدن Localeهای موجود:
locale -a
مثلاً:
C
C.utf8
en_US.utf8
و برای دیدن مقدار یک متغیر:
echo $LANG
یا:
echo $LC_ALL
👏1
فصل ششم — قسمت شصت و پنجم 🐧
Remote Desktop — اتصال گرافیکی از راه دور به لینوکس
——————-
در این قسمت میخواهیم یاد بگیریم چطور از یک کامپیوتر دیگر به محیط گرافیکی لینوکس وصل شویم.
مثلاً:
————-
Remote Desktop چیست؟
یعنی بهجای اینکه جلوی خود سرور باشیم، از کامپیوتر خودمان به آن وصل شویم و محیط گرافیکی آن را ببینیم و کنترل کنیم.
مثلاً:
——————
2️⃣ X11 چیست؟
X11 یکی از سیستمهای قدیمی و معروف Linux/Unix برای نمایش GUI است.
نکته مهم:
مثلاً روی سرور:
و پنجره برنامه روی کامپیوتر کلاینت نمایش داده شود.
—————
3️⃣ X11 Forwarding چیست؟
یعنی اتصال گرافیکی یک برنامه را از طریق SSH منتقل کنیم.
ساختار:
مثلاً:
بعد روی سرور:
اگر X11 Forwarding درست تنظیم شده باشد، پنجره
—————-
4️⃣ فعال کردن X11 Forwarding در SSH
روی سرور فایل:
را باز کن.
دنبال این گزینه بگرد:
اگر
به:
تغییر بده.
بعد:
—————-
نصب X11 روی سیستم
در Debian/Ubuntu ممکن است نیاز داشته باشی:
بعد از کلاینت:
یا در بعضی شرایط:
🧠 تفاوت ساده:
——————
5️⃣ Remmina چیست؟
Remmina یک برنامه GUI برای اتصال Remote به سیستمهای دیگر است.
میتواند با پروتکلهایی مثل:
کار کند.
مثلاً در Ubuntu:
بعد Remmina را باز میکنی:
——————-
6️⃣ Remote Desktop واقعی با RDP
اگر میخواهی کل Desktop لینوکس را از راه دور ببینی، X11 Forwarding انتخاب مناسبی نیست.
برای این کار میتوانی از RDP استفاده کنی.
مثلاً روی بعضی سیستمهای Linux میتوانی
سپس:
بعد از Windows میتوانی برنامه:
را باز کنی و IP لینوکس را وارد کنی.
——————-
7️⃣ X11 Forwarding vs Remote Desktop
این تفاوت را حتماً بفهم:
X11 Forwarding
فقط یک یا چند برنامه گرافیکی را اجرا میکنی:
Remote Desktop
کل محیط دسکتاپ را میبینی:
——————-
Remote Desktop — اتصال گرافیکی از راه دور به لینوکس
——————-
در این قسمت میخواهیم یاد بگیریم چطور از یک کامپیوتر دیگر به محیط گرافیکی لینوکس وصل شویم.
مثلاً:
Windows / Linux
│
│ Network
↓
Linux Server
│
└── GUI
————-
Remote Desktop چیست؟
یعنی بهجای اینکه جلوی خود سرور باشیم، از کامپیوتر خودمان به آن وصل شویم و محیط گرافیکی آن را ببینیم و کنترل کنیم.
مثلاً:
PC خودت
↓
Remote Connection
↓
Linux Server
↓
GNOME / KDE / XFCE
——————
2️⃣ X11 چیست؟
X11 یکی از سیستمهای قدیمی و معروف Linux/Unix برای نمایش GUI است.
نکته مهم:
X11 خودش «Remote Desktop» نیست؛ ولی قابلیت اجرای برنامههای گرافیکی از راه دور را دارد.
مثلاً روی سرور:
gedit
و پنجره برنامه روی کامپیوتر کلاینت نمایش داده شود.
—————
3️⃣ X11 Forwarding چیست؟
یعنی اتصال گرافیکی یک برنامه را از طریق SSH منتقل کنیم.
ساختار:
Client
│
│ SSH
↓
SSH Server
│
↓
X11 Application
مثلاً:
ssh -X ali@192.168.1.10
بعد روی سرور:
xclock
اگر X11 Forwarding درست تنظیم شده باشد، پنجره
xclock روی سیستم کلاینت نمایش داده میشود.—————-
4️⃣ فعال کردن X11 Forwarding در SSH
روی سرور فایل:
nano /etc/ssh/sshd_config
را باز کن.
دنبال این گزینه بگرد:
X11Forwarding yes
اگر
# اولش بود:#X11Forwarding yes
به:
X11Forwarding yes
تغییر بده.
بعد:
systemctl restart sshd
—————-
نصب X11 روی سیستم
در Debian/Ubuntu ممکن است نیاز داشته باشی:
apt install xauth
بعد از کلاینت:
ssh -X user@server-ip
یا در بعضی شرایط:
ssh -Y user@server-ip
🧠 تفاوت ساده:
-X → X11 Forwarding معمولی
-Y → Trusted X11 Forwarding
——————
5️⃣ Remmina چیست؟
Remmina یک برنامه GUI برای اتصال Remote به سیستمهای دیگر است.
میتواند با پروتکلهایی مثل:
RDP
SSH
VNC
SPICE
کار کند.
مثلاً در Ubuntu:
sudo apt install remmina
بعد Remmina را باز میکنی:
Remmina
↓
New Connection
↓
Protocol: RDP
↓
Server: 192.168.1.10
↓
Username
↓
Password
↓
Connect
——————-
6️⃣ Remote Desktop واقعی با RDP
اگر میخواهی کل Desktop لینوکس را از راه دور ببینی، X11 Forwarding انتخاب مناسبی نیست.
برای این کار میتوانی از RDP استفاده کنی.
مثلاً روی بعضی سیستمهای Linux میتوانی
xrdp نصب کنی:sudo apt install xrdp
سپس:
systemctl enable --now xrdp
بعد از Windows میتوانی برنامه:
Remote Desktop Connection
را باز کنی و IP لینوکس را وارد کنی.
——————-
7️⃣ X11 Forwarding vs Remote Desktop
این تفاوت را حتماً بفهم:
X11 Forwarding
فقط یک یا چند برنامه گرافیکی را اجرا میکنی:
SSH
↓
xclock
↓
پنجره xclock روی Client
Remote Desktop
کل محیط دسکتاپ را میبینی:
RDP
↓
Linux Desktop
├── Files
├── Terminal
├── Browser
└── Settings
——————-
❤2👏1
فصل ششم —قسمت اخر - قسمت شصت و ششم 🐧
time and printer - زمان و پرینتر
——————-
در این قسمت دو موضوع مهم داریم:
🕐 مدیریت زمان در لینوکس
🖨 مدیریت پرینتر در لینوکس
———————
🕐 بخش اول — زمان در لینوکس
1️⃣
برای نمایش تاریخ و ساعت فعلی سیستم:
مثلاً:
یعنی سیستم تاریخ، ساعت و Time Zone را نشان میدهد.
——————-
2️⃣
این یکی خیلی مهم است.
یک عدد بزرگ میدهد، مثلاً:
این عدد Unix Timestamp است.
یعنی تعداد ثانیههایی که از:
گذشته است.
🧠 چرا 1970؟
سیستمهای Unix یک نقطه شروع استاندارد برای شمارش زمان انتخاب کردند که به آن:
Unix Epoch
میگوییم.
مثلاً:
به همین دلیل در برنامهنویسی و سیستمها خیلی زیاد Timestamp میبینی.
مثلاً:
یا در PHP:
———-
3️⃣ دستور
اینجا یک اشتباه رایج وجود دارد:
با
مثلاً:
خروجی ممکن است چیزی شبیه این باشد:
یعنی میگوید اجرای
مثال واقعی
اگر بخواهی ببینی یک اسکریپت چقدر طول میکشد:
🧠 پس:
——————-
4️⃣
یکی از مهمترین ابزارهای مدیریت زمان در Linux است.
اطلاعاتی مثل:
را نمایش میدهد.
———————
تغییر Time Zone
اول Time Zoneهای موجود:
مثلاً:
بعد:
را بزن.
————
🌍 Local Time و UTC
در لینوکس معمولاً چند مفهوم زمانی داریم:
Local Time
زمان محلی سیستم.
مثلاً:
UTC
زمان استاندارد جهانی.
مثلاً:
RTC
Real-Time Clock
ساعتی است که در سختافزار سیستم وجود دارد و حتی وقتی سیستمعامل خاموش است، زمان را نگه میدارد.
—————-
🧠 5️⃣ NTP چیست؟
NTP = Network Time Protocol
وظیفهاش این است که ساعت سیستم را با یک Time Server هماهنگ کند.
مثلاً:
چرا مهم است؟
چون ساعت اشتباه میتواند باعث مشکلاتی مثل:
اشتباه بودن زمان Logها
مشکل Certificate
مشکل Authentication
مشکل Kerberos
مشکل هماهنگی سرورها
شود.
برای دیدن وضعیت NTP:
ممکن است ببینی:
——————
🖨 بخش دوم — Printer در Linux
حالا برویم سراغ پرینتر.
در لینوکس سیستم معروفی برای مدیریت پرینتر وجود دارد:
CUPS
CUPS = Common UNIX Printing System
CUPS سیستم اصلی چاپ در بسیاری از توزیعهای Linux و Unix است.
ساختار ساده:
مثلاً Firefox میخواهد یک صفحه را چاپ کند:
—————-
🖨 نصب CUPS
در Debian/Ubuntu:
فعال کردن سرویس:
بررسی:
———
📋 دیدن پرینترها
یکی از ابزارهای مهم CUPS:
مثلاً:
برای دیدن Printerهای موجود.
و:
برای دیدن Printerهایی که درخواستهای چاپ را قبول میکنند.
—————
دستور:
یعنی فایل را برای چاپ ارسال کن.
مثلاً:
—————
❌ حذف یک Job چاپ
اگر اشتباهی فایل بزرگی را برای چاپ فرستادی:
مثلاً:
برای دیدن Jobها:
—————
🌐 پنل گرافیکی CUPS
CUPS یک Web Interface هم دارد.
معمولاً:
در آن میتوانی:
Printer اضافه کنی
Printer حذف کنی
Jobها را ببینی
Printer پیشفرض تعیین کنی
وضعیت Printer را بررسی کنی
time and printer - زمان و پرینتر
——————-
در این قسمت دو موضوع مهم داریم:
🕐 مدیریت زمان در لینوکس
🖨 مدیریت پرینتر در لینوکس
———————
🕐 بخش اول — زمان در لینوکس
1️⃣
dateبرای نمایش تاریخ و ساعت فعلی سیستم:
date
مثلاً:
Mon Aug 24 20:10:30 +0330 2026
یعنی سیستم تاریخ، ساعت و Time Zone را نشان میدهد.
——————-
2️⃣
date +%sاین یکی خیلی مهم است.
date +%s
یک عدد بزرگ میدهد، مثلاً:
1787582430
این عدد Unix Timestamp است.
یعنی تعداد ثانیههایی که از:
1970-01-01 00:00:00 UTC
گذشته است.
🧠 چرا 1970؟
سیستمهای Unix یک نقطه شروع استاندارد برای شمارش زمان انتخاب کردند که به آن:
Unix Epoch
میگوییم.
مثلاً:
1970
↓
شروع شمارش
↓
1 ثانیه
2 ثانیه
3 ثانیه
...
به همین دلیل در برنامهنویسی و سیستمها خیلی زیاد Timestamp میبینی.
مثلاً:
date +%s
یا در PHP:
time();
———-
3️⃣ دستور
timeاینجا یک اشتباه رایج وجود دارد:
time
با
date فرق دارد.time برای اندازهگیری مدت زمان اجرای یک دستور است.مثلاً:
time ls
خروجی ممکن است چیزی شبیه این باشد:
real 0m0.005s
user 0m0.001s
sys 0m0.004s
یعنی میگوید اجرای
ls چقدر زمان برده.مثال واقعی
اگر بخواهی ببینی یک اسکریپت چقدر طول میکشد:
time ./backup.sh
🧠 پس:
date → الان ساعت چند است؟
time → این برنامه چقدر طول کشید؟
——————-
4️⃣
timedatectlیکی از مهمترین ابزارهای مدیریت زمان در Linux است.
timedatectl
اطلاعاتی مثل:
Local time
Universal time
RTC time
Time zone
NTP
را نمایش میدهد.
———————
تغییر Time Zone
اول Time Zoneهای موجود:
timedatectl list-timezones
مثلاً:
sudo timedatectl set-timezone Asia/Tehran
بعد:
timedatectl
را بزن.
————
🌍 Local Time و UTC
در لینوکس معمولاً چند مفهوم زمانی داریم:
Local Time
UTC
RTC
Local Time
زمان محلی سیستم.
مثلاً:
20:30
UTC
زمان استاندارد جهانی.
مثلاً:
17:00 UTC
RTC
Real-Time Clock
ساعتی است که در سختافزار سیستم وجود دارد و حتی وقتی سیستمعامل خاموش است، زمان را نگه میدارد.
—————-
🧠 5️⃣ NTP چیست؟
NTP = Network Time Protocol
وظیفهاش این است که ساعت سیستم را با یک Time Server هماهنگ کند.
مثلاً:
Linux Server
│
│ NTP
↓
Time Server
│
↓
زمان صحیح
چرا مهم است؟
چون ساعت اشتباه میتواند باعث مشکلاتی مثل:
اشتباه بودن زمان Logها
مشکل Certificate
مشکل Authentication
مشکل Kerberos
مشکل هماهنگی سرورها
شود.
برای دیدن وضعیت NTP:
timedatectl
ممکن است ببینی:
System clock synchronized: yes
NTP service: active
——————
🖨 بخش دوم — Printer در Linux
حالا برویم سراغ پرینتر.
در لینوکس سیستم معروفی برای مدیریت پرینتر وجود دارد:
CUPS
CUPS = Common UNIX Printing System
CUPS سیستم اصلی چاپ در بسیاری از توزیعهای Linux و Unix است.
ساختار ساده:
Application
↓
CUPS
↓
Printer
مثلاً Firefox میخواهد یک صفحه را چاپ کند:
Firefox
↓
CUPS
↓
Printer
—————-
🖨 نصب CUPS
در Debian/Ubuntu:
sudo apt install cups
فعال کردن سرویس:
sudo systemctl enable --now cups
بررسی:
systemctl status cups
———
📋 دیدن پرینترها
یکی از ابزارهای مهم CUPS:
lpstat
مثلاً:
lpstat -p
برای دیدن Printerهای موجود.
و:
lpstat -a
برای دیدن Printerهایی که درخواستهای چاپ را قبول میکنند.
—————
دستور:
lp file.txt
یعنی فایل را برای چاپ ارسال کن.
مثلاً:
lp report.pdf
—————
❌ حذف یک Job چاپ
اگر اشتباهی فایل بزرگی را برای چاپ فرستادی:
cancel JOB-ID
مثلاً:
cancel printer-123
برای دیدن Jobها:
lpstat -o
—————
🌐 پنل گرافیکی CUPS
CUPS یک Web Interface هم دارد.
معمولاً:
http://localhost:631
در آن میتوانی:
Printer اضافه کنی
Printer حذف کنی
Jobها را ببینی
Printer پیشفرض تعیین کنی
وضعیت Printer را بررسی کنی
❤2👏2
خب خب فصل شش کاملا و کلا امروز تموم شد.
از فردا به امید خدا فصل هفت رو استارت میزنیم
از فردا به امید خدا فصل هفت رو استارت میزنیم
👏3🕊2❤1