موضوع مقاله: هسته لینوکس | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # هسته لینوکس | مقدمه: هسته لینوکس، آزاد و متن باز، یکپارچه، ماژولار (modular) و شبه یونیکس و بسیار قابل تنظیم است. | ## بخش 1: هسته لینوکس | هسته لینوکس بر روی طیف گسترده‌ای از سیستم‌های محاسباتی، مانند سیستم‌های توکار، دستگاه‌های تلفن همراه (از جمله استفاده از آن در سیستم عامل اندروید)، رایانه‌های شخصی، سرورها، حافظه‌های اصلی و ابر رایانه‌ها مستقر شده است. هسته لینوکس در سال ۱۹۹۱ توسط لینوس توروالدز برای رایانه شخصی خود طراحی و ساخته شد، اما از آن زمان به طیف گسترده‌ای از معماری‌های رایانه منتقل شده است. با وجود این، هسته لینوکس با استفاده از دستورالعمل‌های خاص معماری (ISA) بسیار بهینه شده است، بنابراین قابلیت حمل آن به آسانی مانند سایر هسته‌ها آسان نیست (به عنوان مثال، با NetBSD، که از سال ۲۰۱۹ از ۵۹ پلتفرم سخت‌افزاری پشتیبانی می‌کند). لینوکس به سرعت به‌عنوان هسته سیستم عامل GNU پذیرفته شد، که به عنوان یک نرم‌افزار متن باز و نرم‌افزار آزاد ایجاد شده بود، و براساس UNIX به‌عنوان محصول فرعی از جنگ یونیکس‌ها استفاده شد. از آن زمان، تعداد گسترده‌ای از توزیع سیستم عامل، که معمولاً به آن لینوکس نیز گفته می‌شود، ایجاد شده است، اگرچه، به‌طور رسمی، اصطلاح «لینوکس» فقط به هسته اشاره دارد. به‌طور کلی لینوکس تحت مجوز عمومی همگانی گنو نسخه 2 (GPLv2) منتشر می‌شود، اما همچنین شامل چندین پرونده تحت مجوزهای سازگار دیگر و یک معافیت موقت برای پرونده‌های سربرگ API فضای کاربر (UAPI) است. لینوکس یکی از پراستفاده‌ترین کرنل‌های سیستم‌عامل در جهان است، که سیستم عامل گنو/لینوکس مبتنی بر آن بوده و با تعدادی میان افزار (Firmware) تحت پروانه‌های غیر آزاد گوناگون منتشر می‌شود. لینوکس، توسط شرکت‌کنندگان جهانی توسعه یافته است، که یک مثال برجسته از نرم‌افزارهای آزاد و متن باز است. در ۲۵ اوت ۱۹۹۱، توروالدز موارد زیر را به یک گروه خبری در Usenet با نام “comp.os.minix”، ارسال کرد:من در حال انجام ساخت یک سیستم عامل رایگان (فقط برای سرگرمی و از روی علاقه، و بزرگ و حرفه‌ای مانند گنو نخواهد شد) برای هم نوع‌های 386(486)AT هستم. من هر بازخوردی در Minix بر روی چیزهایی که مردم می‌پسندند یا نمی‌پسندند را می‌خواهم، با این وجود سیستم عامل من هم تا حدی به این شباهت دارد (بعضی از آرایش‌های فیزیکی فایل‌های سیستم در میان اشیا دیگر) من در حال حاضر (bash (1.08 و (۱٫۴۰) gcc را انتقال داده‌ام، و هم‌چنین بخش‌هایی که بنظر می‌رسند که کار کنند. حتی از آنجایی که کد آن هنوز به Minix برای تدوین و بازی نیاز داشت حتی قابل اجرا نبود. در آن زمان، پروژه گنو بسیاری از مؤلفه‌های مورد نیاز برای یک سیستم عامل رایگان را ایجاد کرده بود، اما هسته آن، GNU Hurd، ناقص و در دسترس نبود. با وجود عملکرد محدود نسخه‌های اولیه، لینوکس به سرعت توسعه دهندگان و کاربران را به دست آورد. توروالدز نسخه ۰ را به هسته اختصاص داد تا نشان دهد که این عمدتاً برای آزمایش بوده و برای کاربردی در نظر گرفته نشده است. هنگامی که توروالدز در فوریه ۱۹۹۲ نسخه ۰٫۱۲ را منتشر کرد، وی مجوز عمومی GNU نسخه 2 (GPLv2) را نسبت به پروانه ساخت قبلی خود که مجوز مجدد توزیع تجاری را نداد، پذیرفت. برخلاف یونیکس، تمام فایلهای منبع هسته لینوکس به‌طور رایگان در دسترس هستند از جمله درایور دستگاه. موفقیت اولیه هسته لینوکس با حمایت برنامه نویسان و آزمایش کنندگان در سراسر جهان انجام شد. با ساختن هسته هسته لینوکس مطابق با استانداردهای POSIX، با طیف وسیعی از نرم‌افزارها و برنامه‌های رایگان که برای دانشگاه‌ها تهیه شده بود سازگار بود. این واقعیت که لینوکس یک هسته یکپارچه است و نه یک ریزگرد، موضوع بحث و گفتگو بین اندرو S. این یک سیستم نسخه سازی برای هسته را با سه یا چهار عدد از هم جدا با نقاط شروع کرد که در آن اولین نسخه اصلی انتشار، دومین نسخه جزئی و سوم نسخه تجدید نظر بود. در آن زمان نسخه‌های عجیب و غریب با شماره‌های عجیب و غریب برای توسعه نرم‌افزار و آزمایش‌ها بودند، در حالی که حتی نسخه‌های جزئی حتی برای تولید نیز وجود داشت. در حالی که بازه زمانی برای توسعه اصلی بعدی باز است، از پسوند -rcN برای شناسایی نامزد انتشار نسخه n برای نسخه بعدی استفاده می‌شود. پس از نسخه ۱٫۳ هسته، توروالدز تصمیم گرفت که لینوکس به اندازه کافی تکامل یافته است تا تعداد اصلی جدید را تضمین کند، بنابراین نسخه ۲٫۰٫۰ را در ژوئن ۱۹۹۶ منتشر کرد. جامعه توسعه دهندگان مشارکت کننده در لینوکس این مهم را تصور کرده‌اند که هسته ای که توروالدز برای رایانههای شخصی Intel نوشته بود از معماری مجموعه‌های مختلف دستورالعمل (ISA) پشتیبانی می‌کند. با شروع نسخه ۲٫۰، لینوکس شامل کلیه مؤلفه‌ها برای پیکربندی هسته قبل از تهیه آن برای اهداف سخت‌افزاری خاص است. در دسامبر ۲۰۰۳، با انتشار هسته نسخه ۲٫۶٫۰، توروالدز هسته‌های لینوکس را چنان پایدار دانست که او چرخه انتشار 2.6.x.y را آغاز کرد. هر نسخه ۲٫۶ هسته ای برای تولید بود، نسخه‌های توسعه با -rc ("نامزد انتشار") به شماره نسخه پیوست شده‌اند. نسخه‌های هسته ای ۲٫۶ پایدار شروع به نمایش در برنامه منظم هر ۲–۳ ماه، از طریق ۲٫۶٫۳۹ در ماه مه ۲۰۱۱. چرخه انتشار کوتاه‌تر نتیجه بحث در بین توسعه دهندگان هسته در مورد انتشار و نسخه طرح در سال ۲۰۰۴ بود. در ماه دسامبر ۲۰۰۵، آدریان بانک در پاسخ به عدم وجود درخت هسته پایدار که در آن مردم می‌توانند مجموعه‌های رفع اشکال را هماهنگ کنند، اعلام کرد که وقتی تیم پایدار به ۲٫۶٫۱۷ حرکت می‌کند، هسته‌های 2.6.16.y خود را آزاد می‌کند. از آن زمان، «تیم پایدار» تشکیل شده بود و نسخه‌های هسته پایدار را با رفع اشکال به روز می‌کند. در فوریه سال ۲۰۰۸ استفان روتول درخت زیر بنایی را ایجاد کرد تا مکانی باشد که تکه‌هایی با هدف ادغام در چرخه توسعه بعدی جمع شوند. چندین نگهدارنده زیر سیستم همچنین پسوند -next برای درختانی را که حاوی کد هستند تصویب کردند که قرار است برای ورود به چرخه انتشار بعدی ارسال شود. این نرم‌افزار به صورت رایگان در دسترس توروالدز و چند نفر دیگر قرار گرفت اما نرم‌افزار رایگان نبود. سیستم جدید طی چند هفته نوشته شد و طی دو ماه اولین نسخه رسمی هسته با استفاده از Git ساخته شد. بیستمین سالگرد هسته لینوکس در ژوئیه ۲۰۱۱ با انتشار نسخه هسته ۳٫۰٫۰ توسط توروالدز برگزار شد. بنیاد لینوکس در نسخه ۲۰۱۱ مطالعه توسعه هسته خود، بیستمین سالگرد هسته را جشن گرفت. کرنل ۳٫۰ دارای ۱۵ میلیون خط کد بود و بیش از ۱۳۰۰ توسعه دهنده مجزا در این نسخه از هسته لینوکس مشارکت داشتند. توسعه دهندگان داوطلب در سال ۲۰۱۱ ۱۶ درصد از کل تغییرات هسته را به خود اختصاص داده‌اند. سایر تغییرات مربوط به توسعه دهندگان نرم‌افزار حرفه ای بود که توسط یک شرکت برای ارسال کد به هسته پرداخت می‌شدند. در حالی که نوکیا تا آن زمان سیستم عامل هوشمند MeeGo مبتنی بر هسته لینوکس خود را رها کرده بود، در سال ۲۰۱۱ توسعه دهندگان نوکیا هنوز کدهای بیشتری را در مقایسه با توسعه دهندگان شاغل در گوگل، که اندروید در سال ۲۰۰۷ و سیستم عامل Chrome در سال ۲۰۰۹ منتشر کرده بودند، به کد بیشتر کمک می‌کردند. توسعه دهندگان آن برای اولین بار در سال ۲۰۰۹ برای بهبود عملکرد دستگاه‌های مجازی لینوکس که در راس Hyper-V ویندوز Hyper-V قرار داشتند، به همکاری با هسته پرداختند. هسته‌های پایدار 3.x.y تا فوریه ۲۰۱۵ با انتشار نسخه‌های توسعه از مارس 3.r.y تا ۳٫۱۹ در بازار آزاد شدند. برای حساب کردن نسخه ویژه وصله گاه به گاه، سری نسخه ۳ هسته یک رقم چهارم را به شماره گذاری نسخه اضافه می‌کند. تا فوریه ۲۰۱۵، هسته لینوکس از نزدیک به ۱۲۰۰۰ برنامه‌نویس از بیش از ۱۲۰۰ شرکت، از جمله برخی از بزرگ‌ترین فروشندگان نرم‌افزار و سخت‌افزار در جهان، کمک دریافت کرده بود. نسخه ۴٫۱ هسته لینوکس، که در ژوئن سال ۲۰۱۵ منتشر شد، حاوی بیش از ۱۹٫۵ میلیون خط کد است که تقریباً ۱۴٬۰۰۰ برنامه نویسان در آن مشارکت دارند. برنامه‌ریزی (در زمان کامپایل) و تنظیم (تنظیم زمان کار) تنظیم کننده اجازه می‌دهد تا وظیفه‌های مقدماتی را انجام دهید (هر دو در حالت کاربر و از سری ۲٫۶، در حالت هسته). برنامه زمانبندی کاملاً عادلانه (CFS) برنامه زمانبندی پیش فرض لینوکس از سال ۲۰۰۷ است و از یک درخت قرمز-سیاه استفاده می‌کند که می‌تواند داده‌های مربوط به فرایندهای (ساختار وظیفه) درون O را در مدت زمان (log n) جستجو، درج و حذف کند، جایی که n تعداد وظایف موجود در درخت را نشان می‌دهد. درایورهای دستگاه و پسوندهای هسته در فضای هسته (حلقه ۰ در بسیاری از معماری‌های CPU) اجرا می‌شوند، با دسترسی کامل به سخت‌افزار، اگرچه برخی از استثنائات در فضای کاربر وجود دارد، به عنوان مثال، سیستم‌های پرونده ای مبتنی بر FUSE / CUSE و بخش‌هایی از UIO. برخلاف هسته‌های یکپارچه استاندارد، درایورهای دستگاه به راحتی به عنوان ماژول پیکربندی می‌شوند و در حین کار سیستم بارگیری یا تخلیه می‌شود. همچنین، برخلاف هسته‌های یکپارچه استاندارد، درایورهای دستگاه تحت شرایط خاص می‌توانند از پیش ساخته شوند. این ویژگی برای کنترل صحیح وقفه‌های سخت‌افزاری و پشتیبانی بهتر از پردازش متقارن اضافه شده است. به دلخواه، هسته لینوکس هیچ رابط کاربری باینری برنامه پایدار درایور دستگاه ندارد. لینوکس به‌طور معمول از حافظه و حافظه مجازی استفاده می‌کند و همچنین می‌تواند به حافظه غیر یکنواخت دسترسی داشته باشد، با این حال این پروژه μClinux را جذب کرده است که باعث می‌شود لینوکس را بر روی میکروکنترلرها بدون حافظه مجازی نیز اجرا کنید. درایورهای دستگاه از طریق ورودی در فهرستهای sys/ یا dev/ یا برنامه‌های کاربردی کاربر رابط می‌کند. به‌علاوه، از آنجا که لینوکس یونیکس نیست، هسته مکالمه‌های اضافی سیستم و رابط‌های دیگر که مخصوص لینوکس هستند فراهم می‌کند. برای درج در هسته رسمی، کد باید با مجموعه ای از قوانین صدور مجوز تعریف شده کاملاً مطابقت داشته باشد. زیر مجموعه API هسته لینوکس که واسطهای در معرض برنامه‌های کاربر را در نظر می‌گیرد، اساساً توسط مکالمات سیستمی مخصوص UNIX و لینوکس تشکیل شده است. اکثر برنامه‌های افزودنی باید با تعریف ماکرو _GNU_SOURCE در یک پرونده سرصفحه یا هنگام تهیه کد کاربر کاربر فعال شوند. تماس‌های سیستم فقط با استفاده از دستورالعمل‌های مونتاژ امکان‌پذیر است که امکان انتقال از فضای کاربر غیر شخصی به فضای هسته ممتاز در حلقه ۰ را فراهم می‌کند، برای مثال با استفاده از دستورالعمل "int 0x80" بعد از کپی کردن شناسه تماس سیستم و پارامترهای آن به برخی از ثبات‌های CPU. به همین دلیل، کتابخانه استاندارد C (libC) با در معرض توابع C که تنها در صورت نیاز، می‌تواند به صورت شفاف وارد هسته شود که به نمایندگی از فرایند فراخوانی، به صورت شفاف در بسیاری از تماسهای سیستم لینوکسی عمل می‌کند. فضای هسته به کاربر ABI به دلیل اختلافات موجود بین صدها پیاده‌سازی مختلف سیستم عامل لینوکس، اشیاء اجرایی، حتی اگر آنها برای اجرا در یک معماری سخت‌افزاری خاص کامپایل، مونتاژ و پیوند شده باشند (یعنی آنها از ISA سخت‌افزار هدف استفاده می‌کنند)، اغلب نمی‌توانند در توزیع‌های مختلف لینوکس اجرا شوند. این مسئله عمدتاً به دلیل تنظیمات خاص توزیع و مجموعه ای از تکه‌های اعمال شده بر روی کد هسته لینوکس، تفاوت در کتابخانه‌های سیستم، خدمات (Daemons)، سلسله مراتب سیستم فایلها و متغیرهای محیطی است. استاندارد اصلی در مورد کاربرد و سازگاری باینری توزیع‌های لینوکس، پایگاه استاندارد لینوکس (LSB) است. با این حال، LSB فراتر از آنچه مربوط به هسته لینوکس است، می‌باشد زیرا همچنین مشخصات دسک تاپ، کتابخانه‌های X و Qt را که ارتباط چندانی با آن ندارند، تعریف می‌کند. از آنجا که هیچ ABI در هسته پایدار وجود ندارد، AMD مجبور بود دائم دودویی قبلی را که توسط کاتالیزور استفاده می‌شد، سازگار کند.|جایگزین= چندین API داخلی هسته وجود دارد که بین زیر سیستم‌های مختلف مورد استفاده قرار می‌گیرد. برخی از آنها فقط در زیر سیستم‌های هسته موجود است، در حالی که مجموعه ای محدود از نمادهای درون هسته (به عنوان مثال متغیرها، ساختار داده‌ها و عملکردها) در معرض ماژول‌های بارگذاری پویا نیز قرار می‌گیرند. برخی از APIهای هسته لینوکس در چندین نسخه ثابت نگه داشته شده‌اند، برخی دیگر اینگونه نیستند. | ## بخش 2: هسته لینوکس | نگهبانان و مشارکت کنندگان می‌توانند هر زمان که بخواهند تقویت کنند یا آنها را تغییر دهند. با این وجود، APIهای درون هسته وجود دارند که ساختار داده‌ها را دستکاری می‌کنند (به عنوان مثال، لیست‌ها، درختان، صف‌ها) یا کارهای روزمره را انجام می‌دهند (به عنوان مثال کپی کردن داده‌ها از و به فضای کاربر، اختصاص حافظه، خطوط چاپی به سیستم سیستم و غیره) که حداقل از نسخه ۲٫۶ لینوکس پایدار مانده‌اند. مدیر مستقیم ارائه دهنده (DRM) و تنظیم حالت کرنل (KMS) - برای ارتباط با GPUها و پشتیبانی از نیازهای سخت‌افزاری ویدیویی مدرن با سرعت سه بعدی، و برای تنظیم وضوح صفحه، عمق رنگ و سرعت تازه سازی بافرهای DMA (dma_buf) - برای به اشتراک گذاری بافرها برای دسترسی مستقیم به حافظه سخت‌افزاری در درایورها و زیر سیستمهای مختلف دستگاه Video4Linux - برای سخت‌افزار ضبط ویدیو معماری پیشرفته صدا لینوکس (ALSA) - برای کارت‌های صدا API جدید - برای کنترل‌کننده‌های رابط شبکه mac80211 - برای کنترل‌کننده‌های رابط شبکه بی‌سیم درون هسته ای ABI توسعه دهندگان لینوکس تصمیم می‌گیرند که یک ABI در هسته پایدار را حفظ نکنند. به‌طور پیش فرض هسته از یک مکانیزم زمانبندی به نام برنامه زمانبندی کاملاً عادلانه استفاده می‌کند که در نسخه ۲٫۶٫۲۳ از هسته معرفی شده است. آن را مطابق الگوریتم CFS (به ویژه آنکه از متغیری به نام vruntime برای مرتب‌سازی فرایندها استفاده می‌کند)، به سیاست برنامه زمانبندی فعال و اولویت‌های نسبی پردازش‌ها تبدیل می‌کند. با پیشگیری هسته، هسته می‌تواند خود را در هنگام بازگشت یک دستگیرنده وقفه، وقتی وظایف هسته بسته می‌شود، مقدم کند، و هر زمان که یک سیستم فرعی صریحاً برنامه را فراخوانی کند. یکپارچه سازی خط اصلی جزئی از تکه‌های لینوکس در زمان واقعی، برخی عملکردها را به خط اصلی هسته منتقل کرده است. اولین درگاه فراتر از معماری اصلی ۳۸۶ لینوکس بر روی پلت فرم موتورولا ۶۸۰۰۰ توسط کاربران آمیگا انجام شد که این کار را با جایگزینی بخش‌های اصلی هسته انجام داد. تغییرات در هسته آنقدر اساسی بود که توروالدز نسخه موتورولا را به عنوان یک چنگال و یک سیستم عامل شبیه به لینوکس مشاهده کرد و نه به عنوان یک درگاه واقعی. با این وجود انگیزه ای بود که توروالدز برای بازگرداندن عمده کد هسته به منظور تسهیل در انتقال به معماری‌های محاسباتی رقیب، نیاز به بازسازی عمده ای از هسته داشت. DEC مسئول تأمین سخت‌افزار لازم برای توروالدز بود تا در همان سال بتواند درگاه لینوکس را به ۶۴ بیت برساند. از اکتبر سال ۲۰۱۹، همه ۵۰۰ سریعترین رایانه در جهان انواع مختلفی از لینوکس را اجرا می‌کنند، یک تغییر بزرگ از سال ۱۹۹۸ که اولین ابر رایانه لینوکس به لیست اضافه شد و سپس به رتبه ۱۱۳ رسید. انواع هسته انواع خاصی از هسته لینوکس وجود دارد که قابلیت‌های اضافی را ارائه می‌دهند اما به خط اصلی هسته لینوکس تعلق ندارند. در سال ۲۰۱۰، جامعه هسته لینوکس از Google به دلیل شروع مؤثر درخت هسته خود انتقاد کرد:این بدان معنی است که هر درایوری که برای سیستم عامل‌های سخت‌افزاری اندرویدی نوشته شده است، نمی‌تواند در درخت اصلی هسته ادغام شود، زیرا آنها به کدی وابسته هستند که فقط در درخت هسته گوگل زندگی می‌کند، و باعث عدم موفقیت آن در ساخت درخت kernel.org می‌شود. به همین دلیل، گوگل اکنون مانع از ادغام تعداد زیادی از درایورهای سخت‌افزاری و کد پلتفرم در درخت اصلی هسته شده است. به‌طور مؤثر ایجاد یک شاخه هسته که تعدادی از فروشندگان مختلف اکنون به آن اعتماد دارند. - گرگ کروه-هارتمن، 2010امروزه اندروید از هسته کمی سفارشی لینوکس استفاده می‌کند که تغییراتی در درایورهای دستگاه انجام می‌شود به طوری که کمی یا بدون تغییر در کد هسته اصلی لازم است. توسعه دهندگان اندرویدی همچنین تکه‌هایی را به هسته اصلی لینوکس ارسال می‌کنند و هسته اصلی می‌تواند سیستم عامل اندروید را بوت کند. هسته وحشت و اووپس در لینوکس، «وحشت» یک خطای غیرقابل بازیابی سیستم است که توسط هسته شناسایی می‌شود، برخلاف خطاهای مشابه کشف شده توسط کد فضای کاربر. با این حال، بسیاری از وحشتها نتیجه استثناء پردازنده بدون کنترل در کد هسته مانند ارجاع به آدرس‌های حافظه نامعتبر است. آنها همچنین می‌توانند از خرابی سخت‌افزار مانند سلول رم خراب یا خطاهای عملکردهای حسگر در پردازنده ناشی از یک اشکال پردازنده، پردازش گرمای بیش از حد / آسیب دیده یا یک خطای نرم نشان دهند. چنین انحراف از رفتار صحیح هسته لینوکس ممکن است امکان ادامه کار را با قابلیت اطمینان به خطر بیندازد. پیام وحشت هسته ممکن است در بعضی شرایط، مانند استفاده از یک میز گرافیکی، قابل مشاهده نباشد. برای اشکال زدایی در چنین شرایطی می‌توان از روش‌های دیگری مانند اتصال یک کنسول پورت سریال استفاده کرد. پایه‌های حداقلی برای وصله هسته زنده در هسته هسته لینوکس در نسخه هسته ۴٫۰ که در تاریخ ۱۲ آوریل ۲۰۱۵ منتشر شد ادغام شدند. با این حال، هسته مشترک موجود در هسته لینوکس ۴٫۰ تنها از معماری x86 پشتیبانی می‌کند و هیچ مکانیزمی را برای اطمینان از سازگاری سطح عملکرد در حین استفاده از تکه‌های گرم فراهم نمی‌کند. امنیت امنیت رایانه موضوعی است که بسیار گسترده در رابطه با هسته لینوکس است زیرا بخش بزرگی از اشکالات هسته دارای نقص امنیتی احتمالی است. به عنوان مثال، آنها ممکن است امکان افزایش امتیاز را داشته باشند یا بردارهای حمله ای برای انکار خدمات ایجاد کنند. لینوکس مکانیسم‌های زیادی را برای کاهش سطح حمله هسته و بهبود امنیت که در مجموع به عنوان ماژول‌های امنیتی لینوکس (LSM) شناخته می‌شوند، ارائه می‌دهد. منتقدان توسعه دهندگان هسته را متهم کردند که نقص‌های امنیتی را پوشش می‌دهند یا حداقل آنها را اعلام نمی‌کنند. در سال ۲۰۰۸، لینوس توروالدز به این سؤال پاسخ داد:من شخصاً اشکالات امنیتی را فقط «اشکالات عادی» می‌دانم. من آنها را تحت پوشش قرار نمی‌دهم، اما هیچ دلیلی هم ندارم که تا به حال فکر کنم ایده خوبی برای ردیابی آنها و اعلام آنها به عنوان چیز خاصی است … یک دلیل من حاضر به زحمت کشیدن با تمام امنیت نیستم سیرک این است که من فکر می‌کنم آن را ستایش می‌کند - و به همین ترتیب باعث تشویق رفتار نادرست می‌شود. این باعث می‌شود که «قهرمانان» از افراد امنیتی خارج نشوند، به نظر می‌رسد که افرادی که فقط اشکالات عادی را برطرف نمی‌کنند اهمیتی ندارند. در حقیقت، تمام اشکالات طبیعی خسته کننده از اهمیت بیشتری برخوردار هستند، فقط به این دلیل که تعداد بیشتری از آنها وجود دارد. من فکر نمی‌کنم برخی از سوراخ‌های امنیتی دیدنی و جذاب باید مورد تجلیل و مراقبت قرار بگیرند که از این تصادف‌های تماشایی تصادفی به دلیل قفل بد بودن، «ویژه تر» هستند.توزیع‌های لینوکس به‌طور معمول به روزرسانی‌های امنیتی را برای رفع آسیب‌پذیری‌های موجود در هسته لینوکس منتشر می‌کنند. بسیاری از آنها نسخه‌های پشتیبانی طولانی مدت را ارائه می‌دهند که به روزرسانی‌های امنیتی برای نسخه هسته خاص لینوکس را برای مدت زمان طولانی دریافت می‌کنند. این نسخه از هسته لینوکس تنها از سیستم‌های رایانه ای مبتنی بر تک پردازنده i386 پشتیبانی می‌کند. قابلیت حمل و نقل دغدغه ای شد و به همین ترتیب نسخه ۱٫۲ (منتشر شده در ۷ مارس ۱۹۹۵) پشتیبانی از سیستم‌های رایانه ای با استفاده از پردازنده‌های مبتنی بر معماری Alpha , SPARC و MIPS را به‌دست‌آورد. ویژگی اصلی ۲٫۰ پشتیبانی از پردازش متقارن متقارن (SMP) و پشتیبانی از انواع بیشتری از پردازنده‌ها است. [۱۵۴] در سال ۱۹۹۹، IBM تکمیل‌های خود را برای پشتیبانی از معماری S / 390 کد لینوکس ۲٫۲٫۱۳ منتشر کرد. مطمئن شوید که ما واقعاً نسخه بعدی را نه فقط یک عدد براق جدید، بلکه یک هسته خوب نیز تولید خواهیم کرد.» پس از هفت– ۶–۷ مورد انتظار از روند توسعه، آن منتشر می‌شود. در ۱۱ دسامبر ۲۰۱۲، توروالدز تصمیم گرفت با از بین بردن پشتیبانی از پردازنده‌های i386، پیچیدگی هسته را کاهش دهد، و این سری ۳٫۷ هسته را به عنوان آخرین نسخه پردازنده اصلی پشتیبانی کند. توسعه </div> جامعه توسعه دهنده به‌طور کلی فرض بر این است که جامعه توسعه دهندگان هسته لینوکس ۵۰۰۰ یا ۶۰۰۰ عضو دارد. با توجه به "وضعیت توسعه هسته لینوکس ۲۰۱۷"، یک مطالعه صادر شده توسط بنیاد لینوکس، که شامل تعهدات نسخه‌های ۴٫۸ تا ۴٫۱۳ است، حدود ۱۵۰۰ توسعه دهنده به‌طور متوسط از حدود ۲۰۰–۲۵۰ شرکت کمک می‌کنند. از نظر شرکت‌ها، بیشترین مشارکت کنندگان اینتل (۱۳٫۱٪) و (Red Hat (7.2%، لینارو (۵٫۶٪)، (IBM (4.1% هستند، مکان‌های دوم و پنجم توسط "هیچ کس" (۸٫۲٪) و دسته‌های "ناشناخته" (۴٫۱٪). لینوس توروالدز در ابتدا این سیستم کنترل نسخه را با سرعت در ذهن و به عنوان یک سیستم توزیع شده توسعه داد. کاربران Git می‌توانند آخرین نسخه هل شده درخت توروالدز را به‌دست آورند و با استفاده از کشش git، هسته رسمی هسته را به روز کنید. کمک‌های کد منبع توسط توسعه دهندگان به صورت تکه‌ها ارائه می‌شوند و تغییرات افزایشی در کد منبع هسته به این معنی است که توسعه دهندگان می‌توانند یکپارچه از یک نسخه هسته لینوکس به نسخه بعدی منتقل شوند. ارسال کد به هسته توسعه دهنده ای که می‌خواهد هسته لینوکس را تغییر دهد، با توسعه و آزمایش آن تغییر شروع می‌کند. بسته به اینکه چقدر تغییر قابل توجه است و چند سیستم فرعی آن را تغییر می‌دهد، این تغییر یا به صورت یک پچ منفرد یا در تکه‌های مختلف کد منبع ارائه می‌شود. در صورت وجود سیستم فرعی منفرد که توسط یک نگهدارنده منفرد نگهداری می‌شود، این لک‌ها به صورت ایمیل به نگهدارنده زیر سیستم با لیست پستی مناسب در سی سی ارسال می‌شوند. نگهدارنده و خوانندگان لیست پستی، تکه‌ها را مرور کرده و بازخورد را ارائه می‌دهند. پس از اتمام روند بررسی، نگهدارنده سیستم فرعی تکه‌های موجود در درخت هسته Git مربوط را می‌پذیرد. اگر تغییرات در هسته لینوکس رفع اشکال باشد که به اندازه کافی مهم تلقی می‌شوند، درخواست برداشت برای وصله‌ها طی چند روز به توروالدز ارسال می‌شود. پنجره ادغام معمولاً دو هفته طول می‌کشد و بلافاصله پس از انتشار نسخه هسته قبلی شروع می‌شود. زبان برنامه‌نویسی و سبک برنامه‌نویسی هسته لینوکس در نسخه زبان برنامه‌نویسی C پشتیبانی شده توسط GCC (که تعدادی پسوند و تغییر در استاندارد C را معرفی کرده است)، همراه با تعدادی بخش کوتاه از کد که به زبان اسمبلی نوشته شده است (به زبان ATC و GCC) نوشته شده است. GCC به دلیل برنامه افزودنی در C که پشتیبانی می‌کند، مدت طولانی بود که تنها کامپایلری بود که قادر به ساخت صحیح هسته لینوکس بود. از سال ۲۰۰۲، کلیه کدها باید به ۲۱ قانونی که شامل سبک کدگذاری هسته Linux است، رعایت کنند. سازگاری کامپایلر در سال ۲۰۰۴، اینتل ادعا کرد که هسته را تغییر داده است به طوری که کامپایلر C آن نیز قادر به تهیه آن است. از سال ۲۰۱۰، تلاش شده است هسته هسته لینوکس با Clang، یک کامپایلر جایگزین برای زبان C ساخته شود. LLVMLinux هدف این نیست که هسته هسته لینوکس یا LLVM را چنگ بزند، بنابراین این یک متا پروژه است که متشکل از تکه‌هایی است که در نهایت به پروژه‌های بالادست ارسال می‌شوند. با فعال کردن هسته لینوکس توسط Clang که علاوه بر سایر مزایای آن، در مقایسه سریعتر از GCC برای کامپایل سریعتر شناخته شده است، توسعه دهندگان هسته ممکن است به دلیل زمان کوتاه‌تر از تدوین از گردش کار سریعتر بهره‌مند شوند. اشکال زدایی هسته اولاً به دلیل تعامل هسته با فضای کاربری و سخت‌افزار و در مرحله دوم کشف و رفع اشکالات لینوکس بسیار دشوار است، و دوم اینکه به دلیل دلایل گسترده‌تری از دلایلی است که می‌تواند بر برنامه‌های کاربر تأثیر بگذارد. چند نمونه از دلایل اساسی عبارتند از: خطاهای معنایی در کد، استفاده نادرست از ابتدای همگام سازی و مدیریت نادرست سخت‌افزار. چنین انحرافاتی از رفتار صحیح هسته لینوکس ممکن است با قابلیت اطمینان به کار گرفته شده ادامه کار دهد. یکی از رایج‌ترین تکنیک‌هایی که برای کشف اشکالات کد استفاده می‌شود، اشکال زدایی با چاپ است. این برنامه برای نظارت و اشکال زدایی لینوکس در زمان اجرا استفاده می‌شود و همچنین می‌تواند تأخیر فضای کاربر را به دلیل رفتار نامناسب هسته تجزیه و تحلیل کند. به‌علاوه، ftrace به کاربران امکان می‌دهد تا در زمان راه اندازی لینوکس را ردیابی کنند. | ## بخش 3: هسته لینوکس | برای هر زیر سیستم هسته نگهدارنده ای وجود دارد که وظیفه بازنگری تکه‌های موجود در برابر استانداردهای کد هسته را بر عهده دارد و صف تکه‌هایی را که می‌تواند در یک پنجره ادغام چند هفته به لینوس توروالدز ارسال شود، نگه می‌دارد. تکه‌ها توسط توروالدز در کد منبع انتشار هسته پایدار لینوکس ادغام می‌شوند، و نامزدی برای انتشار -rc را برای هسته پایدار بعدی ایجاد می‌کنند. نسخه هسته توسعه هسته از آزمایش‌ها رگرسیون عبور می‌کند و به محض اینکه ثبات توسط توروالدز قضاوت شود و سیستم‌های نگهباننده زیر سیستم هسته یک هسته جدید لینوکس منتشر می‌شود و روند توسعه دوباره از سر گرفته می‌شود. توسعه دهندگان که با آنها رفتار ناعادلانه ای دارند می‌توانند این موضوع را به هیئت مشاوره فنی بنیاد لینوکس گزارش دهند. در ژوئیه ۲۰۱۳، نگهدارنده درایور USB 3.0، سارا شارپ از توروالدز خواست تا در مورد تفسیر توهین آمیز در جامعه توسعه هسته صحبت کند. در سال ۲۰۱۴، شارپ از توسعه هسته لینوکس خودداری کرد و گفت: "تمرکز بر تعالی فنی، در کنار نگهدارنده‌های بیش از حد بار، و افرادی که دارای هنجارهای فرهنگی و اجتماعی مختلف هستند، بدان معنی است که نگهدارنده‌های هسته لینوکس غالباً بی پروا، بی ادب یا وحشیانه هستند. دانیل وتر، نگهدارنده درایور گرافیکی Intel drm / i915، اظهار داشت که "زبان و بحث نسبتاً خشونت آمیز" در جامعه هسته کاهش یافته یا ناپدید شده است. لوران پینچارت از توسعه دهندگان خواست تا بازخورد خود را در مورد تجربه خود با جامعه هسته در کنفرانس لینوکس اروپا ۲۰۱۷ جاسوسی شده بازخورد کنند. نگرانی از عدم سازگاری در نحوه پاسخ دهی به نگهدارندگان به تکه‌های ارسال شده توسط توسعه دهندگان توسط شواه خان، نگهدار چارچوب خودآزمایی هسته ابراز شد. توروالدز اظهار داشت که هیچگاه سازگاری در اداره پچ‌ها وجود نخواهد داشت زیرا زیر سیستم‌های مختلف هسته به مرور زمان فرایندهای مختلف توسعه را اتخاذ کرده‌اند؛ بنابراین، توافق شد که هر نگهدارنده زیر سیستم هسته ای قوانین مربوط به پذیرش پچ را مستند سازد. چنگالهای لینوکس انجمن‌های خاصی وجود دارند که هسته‌ها را بر اساس لینوکس رسمی توسعه می‌دهند. به همین دلیل، گوگل در حال حاضر از ادغام تعداد زیادی از درایورهای سخت‌افزار و کد پلتفرم در درخت هسته اصلی جلوگیری کرده است. ایجاد یک شاخه هسته به‌طور مؤثر که تعدادی از فروشندگان مختلف اکنون به آن اعتماد می‌کنند.- Greg Kroah-Hartman، 2010امروز اندروید از لینوکس کمی سفارشی استفاده می‌کند که در آن تغییراتی در درایورهای دستگاه اعمال می‌شود، بنابراین تغییر کمی در کد هسته وجود دارد. توسعه دهندگان اندروید همچنین تکه‌هایی را به لینوکس رسمی ارسال می‌کنند که در نهایت می‌توانند سیستم عامل اندروید را بوت کنند. درگیری‌های جامعه توسعه چندین درگیری برجسته بین توسعه دهندگان هسته لینوکس وجود داشته است. نمونه‌هایی از چنین درگیری‌ها عبارتند از: در ژوئیه ۲۰۰۷، کن کولیواس اعلام کرد که او تمایل به توقف توسعه هسته لینوکس خواهد داشت. وی در مورد دلایل خود در مصاحبه، ابراز ناامیدی از جنبه‌های روند اصلی توسعه هسته، که احساس می‌کند اولویت کافی به تعامل دسک تاپ نمی‌دهد، علاوه بر هک کردن، بر سلامت، کار و خانواده خود نیز تأثیر گذاشت. در ژوئیه ۲۰۰۹، آلن کاکس پس از عدم توافق با لینوس توروالدز در مورد دامنه کار مورد نیاز برای رفع خطا در آن زیر سیستم، از نقش خود به عنوان نگهدارنده لایه TTY کناره‌گیری کرد. در ژوئن سال ۲۰۱۲، توروالدز با نشان دادن ژست انگشت میانی موافقت نکرد که NVIDIA درایور خود را به عنوان درایور منبع بسته آزاد کند. در آوریل ۲۰۱۴، توروالدز کی Sievers را به دلیل عدم برخورد با ایراداتی که باعث تعامل منفی سیستم با هسته می‌شود، از ارسال تکه‌هایی به هسته لینوکس منع کرد. در اکتبر سال ۲۰۱۴، لنارت پواترینگ توروالدز را متهم کرد که تحمل شیوه بحث و جدل در لیست‌های پستی مربوط به هسته لینوکس و تحمل الگوی نقش بد را دارد. در مارس ۲۰۱۵، کریستوف هلویگ به دلیل نقض کپی رایت در هسته لینوکس شکایتی علیه VMware انجام داد. لینوس توروالدز با فراخواندن وکلا به یک بیماری لکه دار، اظهار داشت که او با این و ابتکارات مشابه موافق نیست. توسعه دهندگان برجسته هسته لینوکس از اهمیت اجتناب از درگیری بین توسعه دهندگان آگاه بوده‌اند. به دلیل مخالفت لینوس توروالدز مدت طولانی است که هیچ کد رفتاری برای توسعه دهندگان هسته وجود ندارد. در تاریخ ۳۰ نوامبر ۲۰۱۸، مطابق با آیین‌نامه رفتار، Jarkko Sakkinen از اینتل تکه‌هایی را جایگزین نمونه‌های «فاک» که در کامنت‌های منبع منبع با نسخه‌های مناسب متمرکز بر کلمه 'آغوش' ارسال شده است. کد پایه از سال ۲۰۲۱، نسخه ۵٫۱۲ هسته لینوکس حدود ۳۰٫۵۵ میلیون خط کد داشت، تقریباً ۱۴٪ کد بخشی از «هسته» است در حالی که ۶۰٪ درایور هستند. - لینوس توروالدز، ۲۰۰۵ برآورد هزینه برای توسعه مجدد هزینه بازسازی هسته هسته لینوکس نسخه ۲٫۶٫۰ در یک برنامه توسعه اختصاصی سنتی ۶۱۲ میلیون دلار (۴۶۷ میلیون یورو، ۳۹۴ میلیون پوند) در سال ۲۰۰۴ با استفاده از مدل تخمین مرد COCOMO محاسبه شده است. در سال ۲۰۰۶، مطالعه ای که توسط اتحادیه اروپا تأمین شده بود، هزینه بازسازی هسته نسخه ۲٫۶٫۸ هسته را با ۸۸۲ میلیون یورو بیشتر (۱٫۱۴ میلیارد دلار، ۷۴۴ میلیون پوند) بیشتر کرد. ویلر، تخمین زدند که بازسازی هسته ۲٫۶٫۲۵ هسته در حال حاضر ۱٫۳ میلیارد دلار (بخشی از ۱۰٫۸ میلیارد دلار برای توسعه مجدد فدورا ۹) هزینه دارد. باز هم، گارسیا-گارسیا و آلونسو د مگدالنو از دانشگاه اوویدو (اسپانیا) تخمین می‌زنند که ارزش سالانه به کرنل اضافه می‌شود بین سال‌های ۲۰۰۵ تا ۲۰۰۷ حدود ۱۰۰ میلیون یورو و ۲۲۵ میلیون یورو در سال ۲۰۰۸ بود، این هزینه نیز بیش از ۱ میلیارد یورو (حدود ۱٫۴ میلیارد دلار) از فوریه ۲۰۱۰) برای توسعه در اتحادیه اروپا. از تاریخ ۷ مارس ۲۰۱۱، با استفاده از LOC فعلی (خطوط کد) هسته 2.6.x لینوکس و شماره‌های دستمزد با محاسبات دیوید ویلر، تقریباً ۳ میلیارد دلار (حدود ۲٫۲ میلیارد یورو) برای بازسازی هسته لینوکس هزینه می‌شود. بزرگتر می‌شود یک محاسبه به روز شده از تاریخ ۲۶ سپتامبر ۲۰۱۸، با استفاده از ۲۰٬۰۸۸،609 LOC فعلی (خط کد) برای هسته هسته 4.14.14 Linux و میانگین برنامه نویسان فعلی ملی ایالات متحده ۷۵۵۰۶ دلار، نشان می‌دهد که این مقدار تقریباً ۱۴٬۷۲۵٬۴۴۹٬۰۰۰ دلار (۱۱٬۱۹۱٬۳۴۱٬۰۰۰ پوند) به کد موجود را بازنویسی کنید. تعمیر و نگهداری و پشتیبانی طولانی مدت آخرین نسخه هسته و نسخه‌های قدیمی تر هسته به‌طور جداگانه نگهداری می‌شوند. انجمن توسعه دهنده هسته لینوکس با استفاده از اصلاحاتی برای اشکالات نرم‌افزاری که در طی توسعه هسته پایدار بعدی کشف شده است هسته پایدار را حفظ می‌کند؛ بنابراین، همیشه دو هسته پایدار را فهرست می‌کند. هسته پایدار بعدی لینوکس اکنون فقط ۸ تا ۱۲ هفته بعد منتشر شد؛ بنابراین، نگهدارنده‌های هسته لینوکس برخی از نسخه‌های هسته پایدار را به عنوان طولانی مدت تعیین کرده‌اند، این هسته‌های پشتیبانی طولانی مدت لینوکس با دو رفع اشکال به مدت دو یا چند سال به روز می‌شوند. در نوامبر ۲۰۱۹ پنج هسته طولانی مدت لینوکس وجود داشت: ۴٫۱۹٫۸۴، ۴٫۱۴٫۱۵۴، ۴٫۹٫۲۰۱، ۴٫۴٫۲۰۱ و ۳٫۱۶٫۷۶. ارتباط با توزیع‌های لینوکس اکثر کاربران لینوکس هسته ای را تهیه می‌کنند که توسط توزیع لینوکس آنها تهیه شده است. با این حال، چندین توزیع کننده توزیع لینوکس (مانند رد هت و دبیان) مجموعه دیگری از شاخه‌های هسته لینوکس را که در محصولات آنها ادغام شده‌اند، حفظ می‌کنند. این موارد معمولاً در مقایسه با شاخه «وانیل» با سرعت کمتری به روز می‌شوند و معمولاً کلیه اصلاحات از شاخه «پایدار» مربوط را شامل می‌شوند، اما در همان زمان می‌توانند پشتیبانی از درایورها یا ویژگیهایی را که هنوز منتشر نشده‌اند نیز اضافه کنند. جنبه‌های حقوقی شرایط صدور مجوز GPLv2 هسته لینوکس تحت مجوز عمومی GNU نسخه 2 (GPLv2) منتشر شده است، با برخی از تصاویر سیستم عامل تحت مجوزهای مختلف غیر آزاد منتشر می‌شود. در ابتدا، توروالدز لینوکس را تحت مجوز منتشر کرد که هرگونه استفاده تجاری را ممنوع می‌کرد. این مجوز امکان توزیع و فروش نسخه‌های احتمالاً تغییر یافته و اصلاح نشده از لینوکس را فراهم می‌کند اما مستلزم آن است که تمام این نسخه‌ها با همان مجوز منتشر شوند و با کد منبع کامل مربوط همراه شوند. توروالدز مجوز لینوکس تحت GPLv2 را «بهترین کاری که من تا به حال انجام داده‌ام» توصیف کرده است. هسته لینوکس صریحاً تحت نسخه 2 GPL مجاز است، بدون ارائه مجوز گزینه برای انتخاب «هر نسخه بعدی»، که یک پسوند رایج GPL است. بحث قابل توجهی در مورد چگونگی تغییر مجوز برای استفاده از نسخه‌های بعدی GPL (از جمله نسخه ۳) وجود دارد، و اینکه آیا این تغییر حتی مطلوب است یا خیر. توروالدز خود به‌طور خاص پس از انتشار نسخه ۲٫۴٫۰ اعلام کرد که کد شخصی وی فقط تحت نسخه ۲ منتشر می‌شود. با این حال، شرایط GPL بیان می‌کند که اگر نسخه ای مشخص نشده باشد، ممکن است از هر نسخه استفاده شود و آلن کاکس خاطرنشان کرد. در سپتامبر ۲۰۰۶، بررسی ۲۹ برنامه‌نویس هسته اصلی نشان داد که 28 GPLv2 را به پیش نویس GPLv3 آن زمان ترجیح می‌دهند. لینوس توروالدز، که تصمیم به اتخاذ GPLv3 برای هسته لینوکس را نگرفت، حتی سالها بعد انتقادهای خود را دوباره تکرار کرد. ماژول‌های هسته قابل بارگیری بحث می‌شود که آیا ماژول‌های هسته قابل بارگذاری (LKMs) طبق قانون کپی رایت در نظر گرفته می‌شوند و از این طریق تحت شرایط GPL قرار می‌گیرند. توروالدز عقیده خود را ابراز کرد که LKMهایی که فقط از زیر مجموعه‌های «عمومی» محدود از رابط‌های هسته استفاده می‌کنند، بعضی اوقات می‌توانند آثار غیر مشتق شده باشند، بنابراین برخی از درایورهای باینری فقط و سایر LKMهایی که تحت GPL مجوز ندارند مجاز می‌شوند. مثال خوبی برای این کار استفاده از dma_buf توسط درایورهای اختصاصی گرافیک انویدیا است. dma_buf یکی از ویژگی‌های هسته اخیر است (مانند بقیه هسته‌ها، تحت مجوز GPL مجوز می‌یابد)، که به چندین GPU اجازه می‌دهد تا به سرعت داده‌ها را در قاب‌های یکدیگر کپی کنند. اما، انویدیا نمی‌تواند از این زیرساخت‌ها استفاده کند زیرا از یک ابزار فنی برای اجرای این قاعده استفاده می‌کند که فقط توسط LKMهایی که GPL نیز هستند قابل استفاده هستند. آلن کاکس در LKML پاسخ داد، درخواست یکی از مهندسان آنها را برای حذف این اجرای فنی از API رد کرد. با این حال، همه همکاران هسته لینوکس با این تفسیر موافق نیستند، و با این وجود حتی توروالدز موافق است که بسیاری از LKMها به‌طور واضح تولید شده‌اند، و در واقع او می‌نویسد که «ماژول‌های هسته به‌طور پیش فرض مشتق شده‌اند». از طرف دیگر، توروالدز همچنین گفته است که: "یک قسمت خاکستری مخصوصاً چیزی شبیه به درایور است که در ابتدا برای سیستم عامل دیگری نوشته شده است (یعنی به‌طور واضح یک اثر مشتق از لینوکس نیست). این یک منطقه خاکستری است، و _that_ منطقه ای است که من شخصاً معتقدم ممکن است برخی از ماژول‌ها به دلیل اینکه برای لینوکس طراحی نشده‌اند و به هیچ رفتار ویژه لینوکس وابسته نیستند، به نظر نمی‌رسد که تولید نشوند. حباب‌های باینری سیستم عامل یک نکته بحث‌برانگیز قابلیت هسته لینوکس برای جستجوی، بارگیری و پیوند فریمور «حباب‌های باینری» برای پشتیبانی از چندین دستگاه سخت‌افزاری است. این پرونده‌ها دارای مجوزهای مختلفی هستند که از این تعداد بسیاری محدود کننده هستند و کد منبع اصلی آنها معمولاً ناشناخته است. هسته رسمی، یعنی شعبه git Linus در مخزن kernel.org، هیچ نوع کد اختصاصی ندارد؛ با این وجود لینوکس می‌تواند سیستم‌های فایل را برای یافتن سیستم عامل اختصاصی، درایورها و سایر ماژول‌های اجرایی جستجو کند، سپس می‌تواند آنها را به فضای هسته بارگذاری و پیوند دهد. هرگاه ماژول‌های اختصاصی به لینوکس بارگذاری می‌شوند، هسته خود را «لکه دار» می‌کند و بنابراین گزارش‌های مربوط به اشکالات هسته‌های رنگی اغلب توسط توسعه دهندگان نادیده گرفته می‌شوند. این که آیا مورد نیاز است (برای مثال، برای دسترسی به دستگاه‌های بوت یا سرعت) می‌تواند به هسته هسته تبدیل شود، این به معنی ساختن سیستم عامل به vmlinux است. با این حال، این همیشه گزینه ای مناسب برای مسائل فنی یا حقوقی نیست (به عنوان مثال، اجازه نمی‌دهد سیستم عامل‌هایی که غیر GPL سازگار باشند) مجاز باشند. علامت تجاری لینوکس یک علامت تجاری ثبت شده از لینوس توروالدز در ایالات متحده، اتحادیه اروپا و برخی کشورهای دیگر است. این نتیجه حادثه ای است که در آن ویلیام دلا کروسی، جونیور، که درگیر پروژه لینوکس نبود، نام این مارک تجاری را صادر کرد و متعاقباً برای استفاده از آن حق تقاضای حق امتیاز گرفت. | ## جمع‌بندی | این موضوع در اوت ۱۹۹۷ هنگامی که مارک تجاری به لینوس توروالدز واگذار شد، حل و فصل شد.