יצירת שירות שלא ניתן לעצירה בלינוקס
-
@nigun לא משנים דברים בקרנל, מודול קרנל זה ספרייה שנטענת על ידי הקרנל ומשתמשת ב-API של הקרנל להוסיף יכולות או התנהגויות שונות לקרנל.
דרייברים הם סוג של מודול קרנל, שמוסיפים יכולות לקרנל לתקשר מול התקנים שונים
ווייפרי הוא "מודול קרנל" בווינדוס שמשתשמת ב-API של הקרנל שמיועד עבור סינון תעבורה, (וגם הגנת הרכיבים הנחוצים ממחיקה)
מן הסתם יש משהו מקביל בלינוקס.
לעניינך אתה רוצה להשתמש ב-API של הקרנל עבור דבר אחד ויחיד - מניעת הריגת תהליך. כל השאר אין צורך ולא מומלץ לעשות בתוך הקרנל, תעשה ב-userland (מרחב ה-user לעומת מרחב הקרנל).
פה יש תחילת מהלך.
אבל שים לב לכמה דברים:- מודול קרנל צריך לכתוב ב-C.
- גם אם אתה מכיר את שפת C, יש קשיים והגבלות מיוחדים בתכנות קרנל שלא קיימים ב-userland
- שגיאה בקוד של המודול יגרום ל-kernel panic (המקביל של מסך כחול בלינוקס)
- בד"כ צריך להתאים אותו לגירסת הקרנל, (ה-API שפנימי של הקרנל לא יציב ומשתנה כל הזמן), אם זה לא מתקבל כחלק מהקוד של הקרנל, תצטרך לשדרג אותו בכל שחרור חדש של הקרנל או לחילופין לא לשדרג את גירסת הקרנל שלך.
(סוף דבר, תשקול פתרון לא טכנולוגי...)
-
המשפט הזה
נ.ב. אולי זה לא נושא טוב לדיון ציבורי כי נטפרי מנסים לבנות תוכנת וופרי ללינוקס ולא רוצים שידברו על המאחורי הקלעים
בכלל לא נכון. נטפרי לא עובדים על זה בינתיים בכלל,
וכשיעשו את זה זה יהיה די דומה למה שיש היום בwindows כלומר הרעיון אותו דבר והיעדר הביצוע אינו מהצורך לחשוב איך אלא פשוט מעיסוק במשימות אחרות. -
@dovid אמר ביצירת שירות שלא ניתן לעצירה בלינוקס:
המשפט הזה
נ.ב. אולי זה לא נושא טוב לדיון ציבורי כי נטפרי מנסים לבנות תוכנת וופרי ללינוקס ולא רוצים שידברו על המאחורי הקלעים
בכלל לא נכון. נטפרי לא עובדים על זה בינתיים בכלל,
התכוונתי שמתכננים לבנות, כי זה מופיע ברשימת דברים לפיתוח בנטפרי.
-
@nigun הדיון שם על כתיבת קרנל שלם ב-GO. לכתוב מודול עבור קרנל לינוקס נראה לי שכולי עלמא מודים שאי אפשר, כי תוכנות GO חייבים את ה-runtime של GO, וב-runtime של GO יש יותר מדי דברים שתלויים על ההנחה שהקוד רצה ב-userspace.
כתבתי מסברא, יכול להיות שאני טועה, או שיש runtime חילופי ל-GO שירוץ בתוך הקרנל, או שאפשר לכתוב אחד כזה.