Kernel (فارسی)

Related articles
Kernel modules
Compile kernel module
sysctl
بر اساس ویکی پدیا:
کرنل لینوکس یک کرنل سیستم عامل کامپیوتر یکپارچه متن باز یونیکس مانند است.
آرچ لینوکس بر پایه کرنل لینوکس است. کرنل های لینوکس جایگزین مختلفی برای آرچ لینوکس علاوه بر آخرین کرنل پایدار موجود است. این مقاله فهرستی از برخی از گزینه های موجود در مخازن را با شرح مختصری از هر یک  است . همچنین توصیفی از پچ ها وجود دارد که میتوانند روی کرنل سیستم اعمال شوند. مقاله با یک مرور کلی از کامپایل کرنل سفارشی با پیوندهایی به روشهای مختلف به پایان میرسد.
بسته های کرنل در  مسیر /usr/lib/modules/ نصب می شوند و سپس  برای کپی کردن تصویر (image) اجرایی vmlinuz به /boot/ استفاده میشوند. هنگام نصب یک کرنل متفاوت یا تعویض بین چندین کرنل، باید بوت لودر خود را تنظیم کنید تا تغییرات را اعمال کند. برای انتقال کرنل به یک نسخه قدیمی تر، ببینید
کرنل های با پشتیبانی رسمی
Stable
— کرنل پیش فرظ لینوکس و ماژول ها، با چند پچ اعمال شده است.
https://www.kernel.org/
||
linux
Hardened
— یک کرنل لینوکس متمرکز بر امنیت که مجموعه ای از وصله های سخت افزاری را برای کاهش سوء استفاده های کرنل و فضای کاربر اعمال می کند. همچنین ویژگی های سخت افزاری کرنل بالادست بیشتری را نسبت به لینوکس امکان پذیر می کند.
linux
.
https://github.com/anthraxx/linux-hardened
||
linux-hardened
Longterm
— پشتیبانی طولانی مدته (LTS) کرنل لینوکس و ماژول ها. مفید در هنگام استفاده از ماژول های خارج از درخت (out-of-tree) که ممکن است انتشار به موقع سازگار با آخرین کرنل پایدار را منتشر نمی کند.
https://www.kernel.org/
||
linux-lts
Realtime kernel
— توسط گروه کوچکی از توسعه دهندگان کرنل به رهبری اینگو مولنار نگهداری میشود. این پچ اجازه می دهد تا تقریبا تمام کرنل پیش گرفته شود، به استثنای چند منطقه بسیار کوچک از کد ("raw_spinlock مناطق بحرانی"). این کار با جایگزینی اکثر اسپینل های کرنل با موتیکس هایی که از وراثت اولویت پشتیبانی می کنند و همچنین حرکت دادن تمام وقفه ها و وقفه های نرم افزاری به موضوعات کرنل انجام می شود. threads.
https://wiki.linuxfoundation.org/realtime/start
||
linux-rt
,
linux-rt-lts
Note
پشتیبانی از کرنل Real-Time در لینوکس 6.12 اضافه شد
Zen Kernel
— نتیجه تلاش مشترک هکرهای کرنل برای ارائه بهترین کرنل لینوکس ممکن برای سیستمهای روزمره.
For more details see
FAQ
and
Detailed Feature List
.
https://github.com/zen-kernel/zen-kernel
||
linux-zen
کمپایل کردن
روش های زیر را می توان برای کامپایل هسته خود استفاده کرد:
Arch build system
استفاده میکند از کیفیت بالای وجود
linux
PKGBUILD
و ویژگی های مثبت
package management
.
Traditional compilation
شامل دانلود دستی یک تاربال سورس، و کامپایل در دایرکتوری خانه خود را به عنوان یک کاربر عادی.
Warning
هشدار
استفاده از کرنل های شخصی سازی (کاستوم) شده ممکن است باعث ایجاد انواع مشکلات ثبات و قابلیت اطمینان شود ، از جمله از دست دادن داده ها شود.
پشتیبان گیری
به شدت توصیه می شود.
آرچ لینوکس فقط به صورت رسمی از
کرنل های رسمی
پشتیبانی میکند. هنگام استفاده از یک کرنل متفاوت، لطفا در درخواست های پشتیبانی ذکر کنید.
Tip
بهترین راه برای افزایش سرعت سیستم شما این است که ابتدا  پیکربندی کرنل خود را به معماری و نوع پردازنده خود متناسب کنید.
شما می توانید اندازه کرنل خود را (و در نتیجه زمان ساخت) را با عدم پشتیبانی از چیزهایی که ندارید یا استفاده نمی کنید، کاهش دهید. به عنوان مثال پشتیبانی از چیزهایی مانند بلوتوث، video4linux، اترنت 1000 مگابیت و غیره.
فایل پیکربندی (
config
) برای بسته کرنل ارچ فایل بسته سورس ارچ هستند (برای مثال
1
لینک شده برای
لینوکس
[
dead link
2025-11-17—HTTP 404]
). فایل کانفیگ کرنلی که در حال حاضر در حال اجرای ان هستید احتمال دارد که در فایل سیستم شما در
/proc/config.gz
موجود باشد اگر گزینه کرنل
CONFIG_IKCONFIG_PROC
روشن باشد .
برخی از بسته های ذکر شده نیز ممکن است به عنوان بسته های باینری از طریق مخازن غیر رسمی کاربر در دسترس باشند.
کرنل های kernel.org
Git
— کرنل لینوکس و ماژول های ساخته شده با استفاده از منابع مخزن گیت لایتس توروالت .
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
||
linux-git
AUR
Mainline
— کرنل هایی که در آن تمام ویژگی های جدید معرفی می شوند، هر 2-3 ماه منتشر می شوند.
https://www.kernel.org/
||
linux-mainline
AUR
Next
— کرنل هایی بسیار به روز با ویژگیهایی قرار است به انتشار کرنل mainline بعدی اضافه شوند.
https://www.kernel.org/doc/man-pages/linux-next.html
||
linux-next-git
AUR
DRM
— کرنل لونکس با اخرین به روز رسانی هایی درایور کارت گرافیک
https://gitlab.freedesktop.org/drm
||
linux-drm-tip-git
AUR
,
linux-drm-next-git
AUR
Longterm
— پشتیبانی طولانی مدت (LTS) کرنل لینوکس و ماژول هایش.
https://www.kernel.org/
||
linux-lts66
AUR
,
linux-lts61
AUR
,
linux-lts515
AUR
,
linux-lts510
AUR
,
linux-lts54
AUR
[
broken link
: package not found]
کرنل های غیر رسمی
Clear
—  پچ هایی از پروژه لینوکس clear اینتل. ارائه بهینه سازی عملکرد و امنیت.
https://github.com/clearlinux-pkgs/linux
||
linux-clear
AUR
[
broken link
: package not found]
Libre
— بدون درایورهای دستگاه اختصاصی ( غیر متن باز ) یا مبهم.
https://www.fsfla.org/ikiwiki/selibre/linux-libre/
||
linux-libre
AUR
Liquorix
— جایگزینی کرنل ساخته شده با استفاده از پیکربندی هدفمند دبیان و منابع کرنل Zen . طراحی شده برای  دسکتاپ، چند رسانه ای و بازی، اغلب به عنوان یک کرنل جایگزین با عملکرد بالا لینوکس دبیان استفاده می شود. Damentz، مینتینیر پچ های Liquorix، یک توسعه دهنده برای پچ های Zen نیز هست.
https://liquorix.net
||
linux-lqx
AUR
pf-kernel
—   تعداد انگشت شماری از ویژگی های جذاب را فراهم می کند که در کرنل mineline ادغام نشده است. توسط یک مهندس کرنل مینتین می شود. اگر پورت برای پچ گنجانده شده برای هسته های جدید به طور رسمی منتشر نشود، پچ پچ پورت های پچ را به هسته های جدید فراهم می کند و پشتیبانی می کند. برجسته ترین تکه های لینوکس-PF در حال حاضر UKSM، DDCCI، v4l2loopback و BBRv3 هستند.
https://pfkernel.natalenko.name
|| Packages:
Project C
— کرنل با مجموعه پچ های پروژه C آلفرد چن (برنامه های BMQ و PDS).
https://gitlab.com/alfredchen/projectc
||
linux-prjc
AUR
Nitrous
— کرنل لینوکس اصلاح شده بهینه شده برای اسکای لیک ( Skylake ) و جدیدتر.
https://gitlab.com/xdevs23/linux-nitrous
||
linux-nitrous
AUR
tkg
—  یک سیستم ساخت کرنل بسیار قابل تنظیم است که مجموعه ای از تکه ها و ترفندها را با هدف عملکرد بهتر دسک تاپ و بازی فراهم می کند. توسط اتین جوینی مینتین میشود. در میان پچ های دیگر، برنامه های مختلف CPU را ارائه می دهد: CFS، پروژه C PDS، پروژه C BMQ، MuQSS و CacULE.
https://github.com/Frogging-Family/linux-tkg
|| available in
chaotic-aur
.
VFIO
— کرنل لینوکس و چند پچ نوشته شده توسط الکس ویلیامسون (acs override و i915) برای فعال کردن توانایی انجام PCI Passtrough با KVM در برخی از سیستم ها .
https://lwn.net/Articles/499240/
||
linux-vfio
AUR
,
linux-vfio-lts
AUR
XanMod
— با هدف استفاده کامل از ورک استیشن ها با بازدهی ( پرفورمنس ) بالا، دسکتاپ های بازی، مراکز رسانه ای و دیگران و ساخته شده برای ارائه یک تجربه دسکتاپ بی نقص، سریع و نرم. این کرنل از زمانبند BFQ I/O، کنترل ازدحام TCP BBRv3، پشتیبانی از مجموعه دستورالعمل پیشرفته x86_64، بخصوص پچهای Clear لینوکس  و سایر تغییرات پیش فرض استفاده می کند.
https://xanmod.org/
||
linux-xanmod
AUR
,
linux-xanmod-lts
AUR
,
linux-xanmod-rt
AUR
,
linux-xanmod-bore
AUR
linux-cachyos
— کرنل لینوکس SCHED-EXT + BORE + Cachy sauce توسط CachyOS با پچ های دیگر و بهبود کرنل و ماژول ها.
https://github.com/CachyOS/linux-cachyos
||
linux-cachyos
AUR
بسیاری از این کرنل های غیر رسمی حاوی ویژگی هایی هستند که باید به صورت دستی فعال شوند. سعی کنید مستندات را در پچ های خود بخوانید (بسیاری از آنها در حال حاضر شامل تغییرات در دایرکتوری
/Documentation
در منبع کرنل هستند) یا نام پچ را در وب جستجو کنید.
عیب یابی
پنیک کرنل
پنیک کرنل زمانی رخ میدهد که هسته لینوکس وارد حالت شکست غیرقابل بازیابی شود. این حالت به طور معمول از درایورهای سخت افزاری ناشی می شود که منجر به قفل شدن دستگاه، عدم پاسخ و نیاز به راه اندازی مجدد مسشود . Just prior to deadlock, a diagnostic message is generated, consisting of: the machine state when the failure occurred, a call trace leading to the kernel function that recognized the failure, and a listing of currently loaded modules. Thankfully, kernel panics do not happen very often using mainline versions of the kernel--such as those supplied by the official repositories--but when they do happen, you need to know how to deal with them.
Note
کرنل پنیک ها گاهی اوقات به عنوان
oops
یا
kernel oops
نامیده می شود. در حالی که هر دو حالت پنیک و
oops
به عنوان نتیجه یک حالت عدم موفقیت رخ میدهد،
opps
از این نظر عمومی تر است که لزوماً منجر به قفل شدن سیستم نمی شود: گاهی اوقات کرنل میتواند با به پایان دادن یک کار متخلف و انجام کار، از  حالت
opps
بازیابی کند.
Tip
متغیر کرنل
oops=panic
در فرایند بوت قرار دهید یا برای اجبار یک oops قابل بازیابی به ایجاد یک کرنل پنیک در
/proc/sys/kernel/panic_on_oops
عدد
1
را بنویسید. این قابل توصیه است اگر شما در مورد احتمال کمی از بی ثباتی سیستم ناشی از بازیابی OOPS نگران هستید که ممکن است ارورهای آینده را دشوار برای تشخیص کند .
بررسی پیام کرنل پنیک
اگر یک کرنل پنیک در اوایل فرآیند بوت رخ دهد، شما ممکن است یک پیام در کنسول حاوی
Kernel panic - not syncing:
اما هنگامی که
systemd
در حال اجرا است، پیام های هسته به طور معمول دریافت و نوشته شده به ورود به سیستم. با این حال، هنگامی که یک کرنل پنیک رخ میدهد، خروجی پیام تشخیصی توسط کرنل تقریباً هرگز به فایل لاگ بر روی دیسک نوشته نمیشود زیرا ماشین قبل از این که
system-journald
شانسی برای نوشتن لاگ داشته باشد، قفل میشود.
QR کد در صفحه ای ابی
از
لینوکس
6.10 (برای
drm_panic
) ، هسته پنیک را به عنوان یک
کد QR
(به طور پیش فرض) در یک صفحه آبی نمایش می دهد. stack ردیابی  در URL داده شده توسط کد QR قابل مشاهده است. URL شامل اطلاعات مختلف و ردیابی پشته فشرده شده توسط gzip و کد گذاری شده در قطعه URL است که به سرور منتقل نمی شود (در سمت کاربر پردازش می شود).
شما می توانید با استفاده از متغیر
panic_screen=kmsg
به ماژول کرنل
drm
به رفتار قدیمی بازگردید.(یا
drm.panic_screen=kmsg
به عنوان
متغیر کرنل
) برای نمایش ردیابی پشته در یک کنسول.
یک  مثال پنیک را می توان با یک تصویر در یک پست مروم مشاهده کرد.
روش کنسول
روش سبک "قدیمی" برای مشاهده کرش در کنسول درحالی که اتفاق می افتد هنوز در دسترس است (بدون توسل به راه اندازی یک crashkernel kdump). بوت با متغیرهای کرنل زیر و تلاش برای بازتولید پنیک در tty1:
systemd.journald.forward_to_console=1 console=tty1
Tip
در صورتی که پیام پنیک  بیش از حد سریع برای بررسی حرکت می کند، سعی کنید متغیر کرنل
pause_on_oops=
seconds
را در بوت امتحان کنید.
سناریو مثال : ماژول بد
میتوان به بهترین نحو حدس زد که چه ساب سیستم یا ماژول با استفاده از اطلاعات موجود در پیام تشخیصی باعث ایجاد کرنل میشود. در این سناریو، ما در هنگام بوت شدن یک پنیک بر روی برخی از ماشین های خیالی داریم. به خطوط برجسته شده به صورت پررنگ توجه کنید:
kernel: BUG: unable to handle kernel NULL pointer dereference at (null)
1
kernel: IP: fw_core_init+0x18/0x1000 [firewire_core]
2
kernel: PGD 718d00067
kernel: P4D 718d00067
kernel: PUD 7b3611067
kernel: PMD 0
kernel:
kernel: Oops: 0002 [#1] PREEMPT SMP
kernel: Modules linked in: firewire_core(+) crc_itu_t cfg80211 rfkill ipt_REJECT nf_reject_ipv4 nf_log_ipv4 nf_log_common xt_LOG nf_conntrack_ipv4 ...
3
kernel: CPU: 6 PID: 1438 Comm: modprobe Tainted: P           O    4.13.3-1-ARCH #1
kernel: Hardware name: Gigabyte Technology Co., Ltd. H97-D3H/H97-D3H-CF, BIOS F5 06/26/2014
kernel: task: ffff9c667abd9e00 task.stack: ffffb53b8db34000
kernel: RIP: 0010:fw_core_init+0x18/0x1000 [firewire_core]
kernel: RSP: 0018:ffffb53b8db37c68 EFLAGS: 00010246
kernel: RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000
kernel: RDX: 0000000000000000 RSI: 0000000000000008 RDI: ffffffffc16d3af4
kernel: RBP: ffffb53b8db37c70 R08: 0000000000000000 R09: ffffffffae113e95
kernel: R10: ffffe93edfdb9680 R11: 0000000000000000 R12: ffffffffc16d9000
kernel: R13: ffff9c6729bf8f60 R14: ffffffffc16d5710 R15: ffff9c6736e55840
kernel: FS:  00007f301fc80b80(0000) GS:ffff9c675dd80000(0000) knlGS:0000000000000000
kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
kernel: CR2: 0000000000000000 CR3: 00000007c6456000 CR4: 00000000001406e0
kernel: Call Trace:
kernel:  do_one_initcall+0x50/0x190
4
kernel:  ? do_init_module+0x27/0x1f2
kernel:  do_init_module+0x5f/0x1f2
kernel:  load_module+0x23f3/0x2be0
kernel:  SYSC_init_module+0x16b/0x1a0
kernel:  ? SYSC_init_module+0x16b/0x1a0
kernel:  SyS_init_module+0xe/0x10
kernel:  entry_SYSCALL_64_fastpath+0x1a/0xa5
kernel: RIP: 0033:0x7f301f3a2a0a
kernel: RSP: 002b:00007ffcabbd1998 EFLAGS: 00000246 ORIG_RAX: 00000000000000af
kernel: RAX: ffffffffffffffda RBX: 0000000000c85a48 RCX: 00007f301f3a2a0a
kernel: RDX: 000000000041aada RSI: 000000000001a738 RDI: 00007f301e7eb010
kernel: RBP: 0000000000c8a520 R08: 0000000000000001 R09: 0000000000000085
kernel: R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000c79208
kernel: R13: 0000000000c8b4d8 R14: 00007f301e7fffff R15: 0000000000000030
kernel: Code: <c7> 04 25 00 00 00 00 01 00 00 00 bb f4 ff ff ff e8 73 43 9c ec 48
kernel: RIP: fw_core_init+0x18/0x1000 [firewire_core] RSP: ffffb53b8db37c68
kernel: CR2: 0000000000000000
kernel: ---[ end trace 71f4306ea1238f17 ]---
kernel: Kernel panic - not syncing: Fatal exception
5
kernel: Kernel Offset: 0x80000000 from 0xffffffff810000000 (relocation range: 0xffffffff800000000-0xfffffffffbffffffff
kernel: ---[ end Kernel panic - not syncing: Fatal exception
نوع خطایی را که باعث پنیک شده است نشان می دهد. در این مورد  اشکال برنامه نویسی بود.
نشان می دهد که پکین در یک تابع به نام fw_core_init در ماژول firewire_core اتفاق افتاده است.
نشان می دهد که firewire_core آخرین ماژول بارگذاری شده بوده است.
نشان می دهد که تابعی که function fw_core_init نامیده می شود do_one_initcall بوده است.
نشان می دهد که این پیام OOPS در واقع یک کرنل پنیکی است و سیستم در حال حاضر قفل شده است.