אי אפשר להחליף קרנל. פשוט אי אפשר.
kexec נראה, מבחינת מערכת ההפעלה, כמו ריבוט. ההבדל היחידי הוא שלא צריכים לעבור דרך שלבי ה–boot של המחשב, מה שמאפשר החלפה קצרה יותר (כמו גם סוגים מסויימים של מערכות וירטואליות, כפי שאמרו פה). עדיין, מדובר בסגירת כל הליכי ה–user space הקיימים ופתיחתם מחדש. לכל צורך ועניין, מדובר באיתחול.
לגבי live patching: כאן אמנם אין איתחול, אבל גם אין פה החלפת קרנל. יש פה החלפה של רכיבים מסויימים בקרנל מבלי להשפיע על רכיבים אחרים. בשורה התחתונה אפשר לטעון שזה בדיוק אותו הדבר, אבל אני בספק. רכיבים שאי אפשר לכבות בלי איתחול פשוט אי אפשר להחליף בשיטה הזו. בכל מקרה, מדובר בהזרקת תיקונים לקרנל רץ, ולא בהחלפה של הקרנל.
לגבי למה אי אפשר לעשות את זה, התשבה היא, במילה אחת, חומרה. אחד התפקידים המרכזיים של הקרנל הוא תפעול של החומרה. כדי להשיג את זה, הקרנל, בעליה, חייב לאתחל את החומרה. ללא איתחול כזה, הוא לא יודע באיזה מצב הוא קיבל אותה. בגלל זה אי אפשר להעלות קרנל חדש בזמן שהישן רץ: הקרנל החדש יאתחל את החומרה שהקרנל הישן משתמש בה.
יש גם את כל הבעיות האחרות שצפריר תאר, אבל הן דווקא פתירות אם מישהו יחליט שזה מספיק חשוב. אפשר לעקוב אחרי משאבים ולהעביר אותם לקרנל החדש, או לדרוש מהרכיבים שרצים שיספקו פונקציית סיראליזציה. כל זה לא רלוונטי, אבל, אם אי אפשר להריץ את החדש בלי לאתחל את החומרה.
שחר
_________________ שחר שמש
|