לאחר חודשיים של פיתוח, לינוס טורוואלדס שחרור ליבה . בין השינויים הבולטים ביותר: תמיכה במעבדי AMD Navi, מעבדי Zhaoxi וטכנולוגיית ניהול צריכת החשמל של Intel Speed Select, היכולת להשתמש בהוראות umwait להמתנה ללא שימוש במחזורים,
מצב 'הידוק ניצול' שמגביר את האינטראקטיביות למעבדים אסימטריים, קריאת המערכת pidfd_open, היכולת להשתמש בכתובות IPv4 מרשת המשנה 0.0.0.0/8, אפשרות להאצת חומרה של nftables, תמיכה ב-HDR בתת-מערכת ה-DRM, שילוב ה-ACRN היפרוויזר.
В מהדורה חדשה, Linus הזכיר לכל המפתחים את הכלל העיקרי של פיתוח ליבה - שמירה על אותה התנהגות עבור רכיבי מרחב משתמש. שינויים בקרנל לא אמורים בשום אופן לשבור יישומים שכבר פועלים או להוביל לרגרסיות ברמת המשתמש. במקרה זה, הפרת התנהגות יכולה לגרום לא רק לשינוי ב-ABI, להסרת קוד מיושן או להופעת שגיאות, אלא גם להשפעה עקיפה של שיפורים שימושיים שפועלים כהלכה. כדוגמה להמחשה הייתה שימושי בקוד Ext4, שמפחית את מספר הגישה לכונן על ידי השבתת קריאה מוקדמת של טבלת האינוד עבור בקשות קלט/פלט קטנות.
האופטימיזציה הובילה לכך שבעקבות ירידה בפעילות הדיסק, האנטרופיה עבור מחולל המספרים האקראיים getrandom() החלה להצטבר לאט יותר ובתצורות מסוימות, בנסיבות מסוימות, ניתן היה להבחין בקפיאות במהלך הטעינה עד למאגר האנטרופיה. מְמוּלָא. מכיוון שהאופטימיזציה ממש שימושית, התעורר דיון בין מפתחים בו הוצע לתקן את הבעיה על ידי השבתת מצב החסימה המוגדר כברירת מחדל של הקריאה getrandom() והוספת דגל אופציונלי להמתנה לאנטרופיה, אך שינוי כזה ישפיע על איכות המספרים האקראיים בשלב הטעינה הראשוני.
הגרסה החדשה כוללת 15794 תיקונים מ-1974 מפתחים,
גודל תיקון - 92 מגה-בייט (השינויים השפיעו על 13986 קבצים, נוספו 258419 שורות קוד,
599137 שורות הוסרו). כ-39% מכלל הוצגו ב-5.3
שינויים קשורים למנהלי התקנים, בערך 12% מהשינויים
גישה לעדכון קוד ספציפי לארכיטקטורות חומרה, 11%
קשור לערימת הרשת, 3% למערכות קבצים ו-3% למערכת הפנימית
תת-מערכות ליבה.
:
- שירותי זיכרון ומערכת
- המשך פיתוח של פונקציונליות 'pidfd' כדי לסייע בטיפול במצבי שימוש חוזר ב-PID (pidfd משויך לתהליך ספציפי ואינו משתנה, בעוד ש-PID יכול להיות משויך לתהליך אחר לאחר שהתהליך הנוכחי המשויך לאותו PID מסתיים). זה נוסף בעבר לקרנל
קריאת המערכת pidfd_send_signal() והדגל CLONE_PIDFD בקריאה clone() לקבלת pidfd לשימוש ב-idfd_send_signal(). שימוש ב-clone() עם הדגל CLONE_PIDFD עלול לגרום לבעיות עם מנהלי שירות או מערכת סיום כוח סיום מחוץ לזיכרון של פלטפורמת Android. במקרה זה, קריאה ל-fork() או clone() ללא CLONE_PIDFD משמשת כדי להתחיל.Kernel 5.3 הציג את קריאת המערכת , המאפשר לך לקבל pidfd שניתן לבדוק עבור תהליך קיים שרירותי שלא נוצר על ידי קריאה ל-clone() עם הדגל CLONE_PIDFD. כמו כן, נוספה תמיכה ב-pidfd polling באמצעות poll() ו-epoll(), המאפשרת למנהלי תהליכים לעקוב אחר סיום תהליכים שרירותיים ללא חשש ממצב מירוץ אם PID מוקצה לתהליך חדש. מנגנון ההודעה כאשר תהליך הקשור ל-pidfd הסתיים דומה להודעה כאשר התהליך הצאצא שלו הסתיים;
- תמיכה במנגנון הצמדת העומס נוספה למתזמן המשימות (), המאפשר לך לדבוק בטווחי התדרים המינימליים או המקסימליים, בהתאם למשימות הפעילות במעבד. המנגנון המוצג מזרז משימות המשפיעות ישירות על איכות חווית המשתמש על ידי הפעלת המשימות הללו לפחות בקצה התחתון של התדר ה"מבוקש". משימות בעדיפות נמוכה שאינן משפיעות על עבודת המשתמש מופעלות באמצעות הגבול העליון של התדר ה"מותר". מגבלות נקבעות באמצעות התכונות sched_uclamp_util_min ו-sched_uclamp_util_max בקריאה למערכת sched_setattr() .
- נוספה תמיכה בטכנולוגיית ניהול אנרגיה , זמין בשרתים נבחרים עם מעבדי Intel Xeon. טכנולוגיה זו מאפשרת לך להגדיר ביצועים ותפוקת מחיצות עבור ליבות CPU שונות, מה שמאפשר לך לתעדף ביצועים עבור משימות הפועלות על ליבות מסוימות, תוך הקרבת ביצועים בליבות אחרות;
- תהליכים במרחב המשתמש היכולת להמתין זמן קצר מבלי להשתמש בלולאות באמצעות הוראת umwait. הוראה זו, יחד עם הוראות umonitor ו-tpause, יוצעו בשבבי "Tremont" הקרובים של אינטל, ותאפשר הטמעת השהיות חסכוניות באנרגיה ואינן משפיעות על הביצועים של שרשורים אחרים בעת שימוש ב-Hyper Threading;
- עבור ארכיטקטורת RISC-V, נוספה תמיכה בדפי זיכרון גדולים;
- מנגנון המעקב של kprobes הוסיף את היכולת להפנות מצביעי ליבה למרחב המשתמש, שניתן להשתמש בהם, למשל, כדי להעריך את התוכן של מבנים המועברים לקריאות מערכת. כמו כן נוספה היכולת להתקין צ'קים בשלב האתחול.
- אפשרות PREEMPT_RT נוספה לקובץ התצורה לפעולה בזמן אמת. הקוד עצמו לתמיכה במצב בזמן אמת טרם התווסף לקרנל, אך הופעת האופציה היא סימן טוב לכך שהאפי לטווח ארוך תיקוני מקדימה בזמן אמת מתקרבים לסיום;
- נוספה קריאת המערכת clone3() עם יישום גרסה ניתנת להרחבה יותר של ממשק clone() המאפשרת לציין מספר גדול יותר של דגלים;
- הוסיף bpf_send_signal(), המאפשר לתוכניות BPF לשלוח אותות לתהליכים שרירותיים;
- עבור אירועי perf בסביבת KVM hypervisor, נוסף מנגנון סינון אירועים חדש, המאפשר למנהל לקבוע את סוגי האירועים המותרים או אסורים לניטור בצד המערכת האורחת;
- היכולת לעבד תוכניות עם לולאות נוספה למנגנון אימות היישום eBPF אם ביצוע הלולאה מוגבל ואינו יכול להוביל לחרוג מהמגבלה על מספר ההוראות המרבי;
- המשך פיתוח של פונקציונליות 'pidfd' כדי לסייע בטיפול במצבי שימוש חוזר ב-PID (pidfd משויך לתהליך ספציפי ואינו משתנה, בעוד ש-PID יכול להיות משויך לתהליך אחר לאחר שהתהליך הנוכחי המשויך לאותו PID מסתיים). זה נוסף בעבר לקרנל
- תת-מערכת דיסק, קלט/פלט ומערכות קבצים
- מערכת הקבצים XFS תומכת כעת במעקף אינוד מרובה הליכי (לדוגמה, בעת בדיקת מכסות). נוספו ioctls חדשים BULKSTAT ו-INUMBERS, המספקים גישה לתכונות שהופיעו במהדורה החמישית של פורמט FS, כגון זמן הלידה של האינודה והיכולת להגדיר את הפרמטרים BULKSTAT ו-INUMBERS עבור כל קבוצת AG (קבוצות הקצאה);
- ב-Ext4 חללים בספריות (בלוקים לא מקושרים).
דגל "i" (בלתי ניתן לשינוי) עבור קבצים פתוחים (הכתיבה אסורה במצב אם הדגל נקבע בזמן שהקובץ כבר היה פתוח); - Btrfs מספק הגדרה של יישום מהיר של crc32c בכל הארכיטקטורות;
- ב-CIFS, הקוד לתמיכה ב-smbdirect הוסר כפיתוח ניסיוני. SMB3 הוסיף את היכולת להשתמש באלגוריתמים קריפטוגרפיים במצב GCM. נוספה אפשרות הרכבה חדשה כדי לחלץ פרמטרים של מצב מערכי ACE (Access Control Entry). אופטימיזציה של הביצועים של הקריאה () open;
- נוספה אפשרות ל-F2FS להגביל את אוסף האשפה בעת הפעלה במצב checkpoint=disable. נוסף ioctl להסרת טווחי בלוקים מ-F2FS, המאפשר התאמות של גודל המחיצה תוך כדי תנועה. נוספה את היכולת למקם קובץ החלפה ב-F2FS כדי לספק קלט/פלט ישיר. נוספה תמיכה בהצמדת קובץ והקצאת בלוקים לקבצים דומים לכל המשתמשים;
- נוספה תמיכה בפעולות אסינכרוניות sendmsg() ו- recvmsg() לממשק עבור io_uring קלט/פלט אסינכרוני;
- תמיכה בדחיסה באמצעות אלגוריתם zstd והיכולת לאמת תמונות FS חתומות נוספו למערכת הקבצים UBIFS;
- Ceph FS תומך כעת בתוויות אבטחה של SELinux עבור קבצים;
- עבור NFSv4, הוטמעה אפשרות הרכבה חדשה "nconnect=", שקובעת את מספר החיבורים שנוצרו עם השרת. התנועה בין החיבורים תחולק באמצעות איזון עומסים. בנוסף, שרת NFSv4 יוצר כעת ספרייה /proc/fs/nfsd/clients עם מידע על לקוחות נוכחיים, כולל מידע על הקבצים שהם פתחו;
- וירטואליזציה ואבטחה
- הליבה כוללת hypervisor עבור התקנים משובצים , שנכתב מתוך עין למוכנות למשימות בזמן אמת והתאמה לשימוש במערכות קריטיות למשימה. ACRN מספק תקורה מינימלית, מבטיח חביון נמוך והיענות נאותה בעת אינטראקציה עם ציוד. תומך בווירטואליזציה של משאבי מעבד, קלט/פלט, תת-מערכת רשת, פעולות גרפיקה וסאונד. ניתן להשתמש ב-ACRN להפעלת מספר מכונות וירטואליות מבודדות ביחידות בקרה אלקטרוניות, לוחות מחוונים, מערכות מידע לרכב, התקני IoT לצרכנים וטכנולוגיה משובצת אחרת;
- במצב משתמש לינוקס מצב מסע בזמן, המאפשר לך להאט או להאיץ את הזמן בסביבת UML וירטואלית כדי להקל על ניפוי באגים בקוד הקשור לזמן. בנוסף, נוסף פרמטר
זמן-מסע-התחלה, המאפשר לשעון המערכת להתחיל מרגע מוגדר בפורמט עידן; - אפשרויות שורת פקודה הליבה החדשות "init_on_alloc" ו-"init_on_free" נוספו, כאשר צוין, מתאפשר אפס של אזורי זיכרון שהוקצו ומשוחררו (מילוי אפסים עבור malloc ו-free), מה שמאפשר אבטחה מוגברת עקב תקורה נוספת של אתחול;
- נהג חדש נוסף עם יישום של התקן para-virtualized המאפשר לך לשלוח בקשות IOMMU כגון ATTACH, DETACH, MAP ו-UNMAP על גבי התעבורה הוירטואלית מבלי לחקות טבלאות דפי זיכרון;
- נהג חדש נוסף , המייצג גישה להתקני אחסון הממופים למרחב כתובות פיזי, כגון NVDIMMs;
- הטמיע את היכולת לצרף מפתחות קריפטוגרפיים למרחב שמות של משתמש או רשת (מפתחות הופכים בלתי נגישים מחוץ למרחב השמות הנבחר), כמו גם להגן על מפתחות באמצעות ACLs;
- אל תת-מערכת ההצפנה תמיכה באלגוריתם גיבוב מהיר מאוד שאינו קריפטוגרפי , שמהירותו תלויה בביצועי הזיכרון;
- תת מערכת רשת
- אפשר עיבוד של כתובות IPv4 בטווח 0.0.0.0/8, אשר בעבר לא היה זמין לשימוש. הקדמה של רשת המשנה הזו להפיץ עוד 16 מיליון כתובות IPv4;
- ב-Netfilter עבור nftables תמיכה במנגנוני האצת חומרה לסינון מנות באמצעות שימוש בדרייברים נוספים . ניתן להציב טבלאות כללים שלמות עם כל השרשראות בצד של מתאמי רשת. ההפעלה מתבצעת על ידי קשירת הדגל NFT_TABLE_F_HW לטבלה. תומך במטא נתונים פשוטים של פרוטוקול שכבה 3 ושכבה 4, קבל/דחה פעולות, מיפויים לפי IP ויציאות רשת שולח/מקבל וסוג פרוטוקול;
- תמיכה מובנית במעקב אחר חיבורים עבור גשרי רשת, שאינה מצריכה שימוש בשכבת הדמיית br_netfilter;
- ב-nf_tables מיושמת גם תמיכה במודול SYNPROXY, המשכפל פונקציונליות דומה מ-iptables, והיכולת לבצע צ'ק-אין של כללים עבור אפשרויות בודדות בכותרת IPv4;
- נוספה את היכולת לצרף תוכניות BPF לקריאות המערכת setsockopt() ו-getsockopt(), אשר, למשל, מאפשרת לך לצרף מטפלי גישה משלך לקריאות אלו. בנוסף, נוספה נקודת קריאה חדשה (הוק), שבאמצעותה ניתן לארגן קריאה לתוכנית BPF פעם אחת עבור כל מרווח RTT (זמן הלוך ושוב, זמן פינג);
- עבור IPv4 ו- IPv6 מנגנון אחסון נתונים חדש לניתוב Nexthop שמטרתו להגביר את המדרגיות של טבלאות ניתוב. בדיקות הראו כי בעת שימוש במערכת החדשה, סט של 743 אלף מסלולים נטען לתוך הקרנל תוך 4.3 שניות בלבד;
- עבור בלוטות' פונקציונליות הנדרשת לתמיכה ב-LE ping;
- Оборудование
- תמיכה במעבדים התואמים x86 של החברה , שפותח כתוצאה מפרויקט משותף בין VIA Technologies ועיריית שנגחאי. משפחת ה-ZX CPU בנויה על ארכיטקטורת ה-X86-64 Isaiah, ממשיכה בפיתוח הטכנולוגיה ;
- תת-מערכת ה-DRM (מנהל עיבוד ישיר), כמו גם מנהלי ההתקן הגרפיים amdgpu ו-i915, הוסיפו תמיכה בניתוח, עיבוד ושליחה של מטא נתונים של HDR (טווח דינמי גבוה) דרך יציאת ה-HDMI, מה שמאפשר שימוש בלוחות ומסכי HDR המסוגלים לבצע הצגת טווחי בהירות נוספים;
- מנהל ההתקן של amdgpu הוסיף תמיכה ראשונית ל-AMD NAVI GPU (RX5700), הכולל את מנהל ההתקן הבסיסי, קוד אינטראקציית מסך (DCN2), GFX ותמיכה במחשוב (GFX10),
SDMA 5 (System DMA0), ניהול צריכת חשמל ומקודדים/מפענחים מולטימדיה (VCN2). amdgpu גם משפרת תמיכה בכרטיסים המבוססים על Vega12 ו- Vega20 GPUs, שעבורם נוספו יכולות זיכרון וניהול צריכת חשמל נוספות; - נוספה תמיכה בכרטיסים המבוססים על VegaM GPUs למנהל ההתקן amdkfd (עבור GPUs נפרדים, כגון פיג'י, טונגה, פולאריס);
- במנהל התקן DRM עבור כרטיסי מסך של אינטל עבור שבבי Icelake מצב חדש לתיקון גמא מרובה מקטעים. נוספה יכולת פלט דרך DisplayPort בפורמט YCbCr4:2:0. נוספה קושחה חדשה עבור SKL, BXT, KBL, GLK ו-ICL. הוטמעה היכולת לכבות את מתח המסך במצב אסינכרוני. תמיכה בשמירה ושיחזור הקשר העיבוד עבור שבבי Ironlake (gen5) ו-gen4 (Broadwater - Cantiga), המאפשרת לך לשחזר את מצב ה-GPU ממרחב המשתמש בעת מעבר מפעולת אצווה אחת לאחרת;
- מנהל ההתקן של נובו מספק זיהוי של ערכת השבבים NVIDIA Turing TU116;
- היכולות של מנהל ההתקן DRM/KMS עבור מאיצי מסך ARM Komeda (Mali D71) הורחבו, תמיכה בשינוי קנה מידה, פיצול/מיזוג שכבות, סיבוב, כתיבה דחויה, AFBC, SMMU ופורמטים של קידוד צבע Y0L2, P010, YUV420_8/10BIT נוסף;
- מנהל ההתקן של MSM מוסיף תמיכה לסדרת A540 GPU Adreno המשמשת במעבדי קוואלקום, כמו גם תמיכה בבקר MSM8998 DSI עבור Snapdragon 835;
- נוספו מנהלי התקנים עבור לוחות LCD Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS,
Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6 ו-VXT VL050-8048NT-C01; - מנהל התקן להפעלת כלי האצת פענוח
סרטונים זמינים ב-Amlogic Meson SoC; - במנהל ההתקן v3d (עבור Broadcom Video Core V GPU המשמש ב-Raspberry Pi) הופיע שיגור הצללות מחשוב;
- מנהל התקן עבור מקלדות SPI ומשטחי עקיבה המשמשים בדגמים מודרניים של מחשבים ניידים של Apple MacBook ו-MacBookPro;
- הגנה נוספת עבור קריאות ioctl הקשורות לדרייבר התקליטון, והדרייבר עצמו מסומן כלא מתוחזק
("יתום"), מה שמרמז על הפסקת הבדיקה שלו. מנהל ההתקן עדיין מאוחסן בקרנל, אך פעולתו הנכונה אינה מובטחת. מנהל ההתקן נחשב מיושן, מכיוון שקשה למצוא ציוד עובד לבדיקתו - כל הכוננים החיצוניים הנוכחיים, ככלל, משתמשים בממשק ה-USB. - מנהל התקן cpufreq עבור לוחות Raspberry Pi, המאפשר לך לשלוט באופן דינמי בשינויים בתדר המעבד;
- נוספה תמיכה עבור ARM SoC Mediatek mt8183 החדש (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSPs + MMA) ו-Amlogic G12B (4x Cortex-A73 + 2 A53 ), כמו גם לוחות:
- ,
- אספיד BMC,
- מיקרוסופט אולימפוס BMC,
- Kontron SMARC,
- Novtech Meerkat96 (i.MX7),
- ST Micro Avenger96,
- Google Cheza (Qualcomm SDM845),
- Qualcomm Dragonboard 845c (Qualcomm SDM845),
- Hugsun X99 TV Box (Rockchip RK3399),
- Khadas Edge/Edge-V/Captain (Rockchip RK3399),
- HiHope RZ/G2M,
- NXP LS1021A-TSN.
במקביל, קרן התוכנה החופשית של אמריקה הלטינית
אפשרות - , מנוקה מרכיבי קושחה ומנהלי התקנים המכילים רכיבים או קטעי קוד שאינם חופשיים, שהיקפם מוגבל על ידי היצרן. במהדורה החדשה, טעינת בלובים מושבתת במנהלי התקנים של qcom, hdcp drm, allegro-dvt ו-meson-vdec.
קוד ניקוי כתמים מעודכן בדרייברים ובתתי-מערכות amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi, מנהל התקן סאונד עבור skylake, וכן בתיעוד המיקרוקוד.
מקור: OpenNet.ru
