
uname -a מציגה את גרסת הקרנל, שם השרת והארכיטקטורה, למשל x86_64./proc מציגה את מה שהקרנל רואה, למשל /proc/cpuinfo ו-/proc/meminfo.lsmod מציגה את המודולים הטעונים, כלומר הדרייברים. כשמחברים דיסק עם ext3, המודול של ext3 נטען אוטומטית./boot, ואת קובץ ה-initramfs, שמכיל את הדרייברים הדרושים לעלייה. את initramfs יוצרים מחדש בעזרת הפקודה mkinitrd, לדוגמה אחרי שינוי בקובץ של ה-LVM./proc/sys/kernel/tainted.מבנה ושמות דיסקים ומחיצות בלינוקס:

הטקסט המלא של הדקות הראשונות בהרצאה «KERNEL מיסודות ועד לעדכונים ידניים» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום וברוכים הבאים לסרטון בנושא הקרנל. אני הולך לספר לכם בסרטון הזה מה זה הקרנל של לינוקס. אני הולך לספר לכם איך מעדכנים קרנל של לינוקס, איך עובדים עם קרנל של לינוקס.
אבל אני רוצה להתחיל בהתחלה קודם כל, שבהתחלה במערכות בכלל לא היה קרנל. החומרה הייתה ישירות מפעילה את הברזלים. החומרה הייתה פונה לכל התקן והתקן. התוכנה הייתה מריצה את הפקודות שלה ישר על הברזל, ולא היה צריך קרנל כשהתוכנה רצתה לקרוא קובץ היא קראה איזה שהם נתונים מהארדיסק או מהכרטיס כשהתוכנה רצתה להדפיס במדפסת אז התוכנה פנתה
למדפסת והדפיסה שמה והכל היה טוב ויפה עד שבעצם ראו שהצורת עבודה הזאת היא מאוד מאוד לא יעילה למשל כאשר היה צריך להדפיס כמויות גדולות של מידע במדפסות ובזמנו למחשבים לא היו מסכים אז כל הפלט יצא דרך המדפסת.
המעבד בעצם לא היה עושה שום פעולה חיונית בזמן שהמדפסת הייתה מדפיסה את החומר. ופה בעצם בשלב הזה אמרו, רגע, יש לנו הרבה משאבים שמחוברים למחשב שלנו, את המעבדים, את ההארדיסקים, את המדפסות, את הזיכרון.
בואו נחלק את המשאבים בין כמה תוכנות, שבזמן שתוכנה אחת צורכת משאב מסוים, תוכנה אחרת תוכל לצרוך משאב אחר, וזה בעצם הגיע לעידן המולטי טאסק. עכשיו, מה האתגר כאשר רצים לנו כמה וכמה תוכנות במקביל?
האתגר הוא שהם לא ישתמשו באותם משאבים בצורה לא מבוקרת. נגיד אם שתי תוכנות במקביל שלחו את הפלט שלהם למדפסת יצא לנו במדפסת קשקוש שורה מפה שורה משם אולי כמה תווים מפה כמה תווים משם ולכן צריך מישהו שינהל את התוכנות האלה ולא לאפשר להם להפריע אחד לשנייה לעבוד בצורה תקינה
ובעצם להרוס ככה את הפעולה התקינה של המערכת כל תוכנה צריכה לקבל את טווח הזיכרון שהיא רצה בו, צריכה לקבל את הגישה לאזורים הנכונים בארדיסק, את הגישה למדפסות או להתקנים לפי תורה.
פתרו את זה על ידי כך שהדבר הראשון שעולה במערכת זוהי תוכנה שקוראים לה קרנל והתוכנה הזאת היא מנהלת את משאבי החומרה והיא בעצם מהווה את הקישור של בין החומרה של המחשבים, כמו מעבדים, זיכרון והתקנים, לבין האפליקציות.
כלומר, אפליקציה לא ניגשת ישר לזיכרון וכותבת איפה שבא לה, אלא היא מבקשת מהקרנל את כמות הזיכרון שהיא רוצה, והקרנל יודע איפה נמצא הזיכרון הפנוי ונותן אותו לאפליקציה, האפליקציה יכולה להשתמש בזיכרון הזה.
אנחנו נדבר תכף על דוגמאות נוספות. מטרה נוספת של הקרנל היא לעשות הפרדה בין האפליקציות ולגרום בעצם על ידי כך לייצר אבטחת מידע שאפליקציה אחת לא תוכל לקרוא את הזיכרון שאפליקציה אחרת קיבלה ובטח שלא תוכל לכתוב לזיכרון של אפליקציה אחרת.
תחשבו אם היו שתי משתמשים בעצם מריצים אפליקציות על השרת, כל אחד עם המידע הפיננסי שלו, עם הסיסמאות שלו, עם הנתונים שלו, והאפליקציות היו יכולות לקבל גישה לכל הזיכרון של המערכת, לא היה ניתן לאבטח את התוכנות.
וגם אם תוכנה אחת עושה איזושהי פעולה לא חוקית במערכת, מנסה לעשות משהו לא טוב או שהיא נופלת, שהתוכנה הזאת לא תפיל את כל המערכת, אלא בעצם היא יכולה רק להפיל את עצמה.
הקרנל הוא רכיב שכתוב ב-C וב-C++, הוא הראשון שניתן והוא קיים בכל מערכת הפעלה. גם ב-Windows קיים הקרנל. עכשיו כשפותחים Shell כבר אפשר לראות את הגרסה של הקרנל, וגם אם רושמים את ההודה Ver מקבלים את הגרסה של הקרנל.
אני מזמין אתכם לבדוק עם איזה קרנל הווינדוס שלכם רץ. בלינוקס, כדי לדעת עם איזה קרנל המחשב עובד, השרת עובד, אני עושה את זה בעזרת פקודת U-NAME.
U-NAME מינוס A תראה לי את הגרסה המדויקת של הקרנל ביחד עם השם של השרת וביחד עם הארכיטקטורה עם סוג המעבד שהקרנל רץ אליו. הקרנל הוא בעצם נבנה כדי לעבוד על סוג מעבד מסוים וככה הוא יודע לנצל בצורה המיטבית את היכולות של אותו המעבד ולהעביר את היכולות האלה לאפליקציה.
כמו שאמרתי, הקרנל שולט על המשאבים של המערכת. הקרנל הוא רואה את כל הזיכרון, את כל ההתקנים, ואפשר להציץ למה שקורה בתוך הקרנל דרך מערכת קבצים מיוחדת שנקראת slashproc.
אני אעשה למשל ls על slashproc ואני אוכל לראות פה כל מיני דברים מעניינים. למשל, אני יכול לראות proc, אני רוצה רגע cut על קבצים שנמצאים, cut proc cpu info, כאן אני אוכל לראות את המידע על המעבדים שיש לי במערכת, כמו שהקרנל רואה אותם, אוקיי?
כאן אני רואה שיש לי בעצם במערכת הזאת מעבד אחד, אני רואה את הסוג של המעבד, אני רואה את המהירות של המעבד, אני רואה את המהירות הנוכחית של המעבד.
המהירות, אגב, של המעבד במכונות המודרניות היא משתנית בהתאם לעומס. הקרנל, כדי לחסוך בחשמל, כאשר אין לו משימות, מוריד את המהירות של המעבד, וככה מתקבלות מערכות שצורכות פחות חשמל ולכן הסוללה בלפטופ יכולה להספיק ליותר זמן ושרתים אשר צריכת החשמל שלהם יכולה להגיע לאלפי דולרים
בחודש יכולים בעצם לעבוד בצורה יותר יעילה ותסכונית. הנושא קריטי במיוחד בגלל שעל כל וואט של חשמל שהשרת צורך צריך גם להשקיע בקירור של אותו שרת בערך עוד ואט ולכן הנושא של ניהול צריכת חשמל הוא קריטי וזה אחת מהמשימות של הקרנל.
כאן אפשר לראות את הפלגים בעצם, את היכולות שיש לקרנל. למשל ה-MMX שזאת יכולת של מולטימדיה שפותחה בארץ, קולות כמו קולות של וירטואליזציה של ניהול זיכרון וכדומה על כל אחד מהפלגים האלה אפשר להסתכל בוויקיפדיה ולראות בדיוק מה איזה סוג של אופטימיזציה ואיזה סוג של טכנולוגיה הפלג הזה מאפשר לעשות.
במקרה של שרתים עם כמה וכמה מעבדים אני נראה כאן כמה וכמה רשומות כאלה כאשר בעצם שם הן מפרטות את המספר core של השרת, את המספר מעבד, כדומה, ואנחנו פשוט נראה רשימה יותר ארוכה של מעבדים, אוקיי?
כאן, בקובץ הזה, למשל, אנחנו רואים את המידע על מערך הזיכרון, כמו שהקרנל רואה אותו, אוקיי? אנחנו רואים כמה זיכרון יש סך הכל במערכת, כמה זיכרון פנוי, מה הגודל של הבאפרים, קאש, אני מזמין אתכם לראות סרטון שמפרט את זה, סרטון בנושא ניהול זיכרון בלינוקס,
שם אנחנו נתייחס יותר בעומק על כל אחד מהפרמטרים ואיך הוא שימושי ואיך הוא משפיע על המערכת. בתחילת דרכם של הקרנלים, הקרנלים היו מונוליטיים, כלומר היו מורכבים מחתיכה אחת.
בתוך הקרנל היו נמצאים כל הפונקציונליות שהייתה יכולה להימצא בתוך הקרנל הזה. איזה מין פונקציונליות יכולה להימצא בתוך הקרנל?
למשל דרייברים, דרייבר של בקר דיסק, דרייבר של כרטיס רשת, בעצם דרייבר של מנהל זיכרון כזה או אחר. חיסרון היה שהיה צריך לבנות את הקרנל מההתחלה עם כל היכולות, ולכן הגודל של הקרנל היה גדול.
בהמשך הדרך בעצם התפתח קרנל שאפשר להכניס לתוך הקרנל הזה מודולים שמאפשרים להפעיל פונקציונליות שונה של הקרנל. בעזרת הפקודה אלס מוד אני יכול לראות את רשימת המודולים שטעונים בתוך הקרנל.
המודולים האלה למעשה הם דרייברים שאחרי שהקרנל הבסיסי נטען הם מצטרפים לתוך הקרנל ויודעים לספק פונקציונליות כמו למשל כאן את ה-E-1000 זה הדרייבר של הכרטיס רשת.
ext4 זה בעצם הדרייבר של הפייל סיסטם ext4. עכשיו אני הולך להראות דוגמה של הוספה של מודול לקרנל. כרגע אני מכבה את השרת.
כדי להוסיף לו דיסק, השרת יורד. אני הולך למכונה הווירטואלית, אז ל-settings, storage, ומוסיף דיסק חדש, דיינמיקה ליאלוקטד, נגיד בגודל של 1 ג'יגה בייט, מעולה.
הוספנו דיסק, עכשיו אני מעלה את השרת, אוקיי? כרגע הוא ניסה לעלות מהדיסק שהוספתי, אני הולך לשנות את ההגדרות, כנראה בגלל שהוספתי אותו על הבקר הראשון ולא על הבקר השני,