שחרור ליבה Linux 5.12

לאחר חודשיים של פיתוח, לינוס טורוואלדס שחרר את הליבה. Linux 5.12. בין השינויים הבולטים: תמיכה בהתקני בלוק אזוריים ב-Btrfs, היכולת למפות מזהי משתמש למערכות קבצים, ניקוי ארכיטקטורות ARM מדור קודם, מצב כתיבה מהיר ב-NFS, מנגנון LOOKUP_CACHED לקביעת נתיבי קבצים מהמטמון, תמיכה בהוראות אטומיות ב-BPF, מערכת ניפוי שגיאות KFENCE לאיתור שגיאות בטיפול בזיכרון, מצב NAPI Polling במחסנית הרשת הפועל ב-core thread נפרד, היפר-ויזור ACRN, היכולת לשנות את מודל preempt תוך כדי תנועה במתזמן המשימות, ותמיכה באופטימיזציות LTO בעת בנייה ב-Clang.

הגרסה החדשה משלבת 14170 תיקונים (15480 בגרסה הקודמת) מ-1946 (1991) מפתחים. גודל התיקון הוא 38 מגה-בייט (השינויים השפיעו על 12102 (12090) קבצים, הוסיפו 538599 (868025) שורות קוד ומחקו 333377 (261456) שורות). כ-43% מכלל השינויים בגרסה 5.12 קשורים למנהלי התקנים, כ-17% מהשינויים קשורים לעדכון קוד ספציפי לארכיטקטורות חומרה, 12% קשורים למחסנית הרשת, 5% קשורים למערכות קבצים ו-4% קשורים לתת-מערכות ליבה פנימיות.

חידושים עיקריים:

  • תת-מערכת דיסק, קלט/פלט ומערכות קבצים
    • מיפוי מזהה משתמש עבור מערכות קבצים מותקנות יושם (ניתן למפות קבצים של משתמש אחד במחיצה זרה מותקנת לקבצים של משתמש אחר במערכת הנוכחית). מיפוי נתמך עבור מערכות קבצים FAT, ext4 ו-XFS. פונקציונליות זו מפשטת את שיתוף הקבצים בין משתמשים שונים ובין מחשבים שונים. מיפוי זה ישמש גם במנגנון ספריית הבית הניידת systemd-homed, שיאפשר למשתמשים להעביר את ספריות הבית שלהם לכוננים חיצוניים ולהשתמש בהן במחשבים שונים עם פריסות מזהה משתמש שונות. יישום שימושי נוסף הוא שיתוף קבצים ממארח ​​חיצוני מבלי לשנות בפועל את נתוני הבעלות על הקבצים במערכת הקבצים.
    • תיקוני LOOKUP_CACHED נוספו לגרעין, המאפשרים למרחב המשתמש לבצע פעולות קביעת נתיב קבצים ללא חסימה, תוך שימוש רק בנתונים במטמון. מצב LOOKUP_CACHED מופעל בקריאה openat2() על ידי העברת הדגל RESOLVE_CACHED. מצב זה מאחזר נתונים רק מהמטמון, ומחזיר את שגיאת EAGAIN אם קביעת הנתיב דורשת גישה להתקן האחסון.
    • מערכת הקבצים Btrfs מוסיפה תמיכה ראשונית עבור התקני בלוקים המחולקים לאזורים (דיסקים קשיחים או כונני SSD מסוג NVMe ששטח האחסון שלהם מחולק לאזורים, הכוללים קבוצות של בלוקים או סקטורים, מה שמאפשר רק הוספות סדרתיות של נתונים, תוך עדכון קבוצת הבלוקים כולה). תמיכה בבלוקים המכילים מטא-נתונים ונתוני דפי משנה מיושמת במצב קריאה בלבד.
    • מערכת הקבצים F2FS מאפשרת כעת למשתמשים לבחור את אלגוריתם הדחיסה ואת רמתו. נוספה תמיכה בדחיסה ברמה גבוהה עבור אלגוריתם LZ4. אפשרות ההרכבה checkpoint_merge יושמה.
    • יושם פקודת ioctl חדשה בשם FS_IOC_READ_VERITY_METADATA לקריאת מטא-דאטה מקבצים המוגנים על ידי fs-verity.
    • לקוח NFS מיישם מצב כתיבה נייטרלי (writes=eager), אשר, כאשר הוא מופעל, מעביר באופן מיידי כתיבות קבצים לשרת, תוך עקיפת מטמון הדף. מצב זה מפחית את צריכת הזיכרון, מספק הודעה מיידית כאשר שטח מערכת הקבצים אוזל, ובמצבים מסוימים, יכול לשפר את הביצועים.
    • אפשרויות הרכבה חדשות נוספו ל-CIFS (SMB): acregmax לשליטה במטמון קבצים ו-acdirmax לשליטה במטמון מטא-נתונים של ספריות.
    • בדיקת כיסויים מרובת-הליכים הופעלה ב-XFS, ביצוע fsync הואץ, וקוד growfs הוכן כדי ליישם את פונקציית הפחתת גודל מערכת הקבצים.
  • שירותי זיכרון ומערכת
    • נוספה תת-מערכת DTMP (ניהול צריכת חשמל תרמית דינמית), המאפשרת התאמה דינמית של צריכת החשמל של מכשירים שונים בהתבסס על מגבלות הטמפרטורה הכלליות שנקבעו.
    • מהדר Clang תומך כעת באופטימיזציות זמן קישור (LTO) בעת בניית הליבה. אופטימיזציות LTO לוקחות בחשבון את מצב כל הקבצים המעורבים בתהליך הבנייה, בעוד שמצבי אופטימיזציה מסורתיים מייעלים כל קובץ בנפרד ואינם מתחשבים בתנאי הקריאה של פונקציות המוגדרות בקבצים אחרים. לדוגמה, עם LTO, ניתן לפרוס פונקציות מקבצים אחרים באופן מקוון, קוד שאינו בשימוש אינו כלול בקובץ ההפעלה, מתבצעת בדיקת סוגים, ואופטימיזציות כלליות מתבצעות ברמת הפרויקט. תמיכת LTO מוגבלת כעת לארכיטקטורות x86 ו-ARM64.
    • היכולת לבחור מצבי דחיפה (PREEMPT) זמינה כעת במתזמן המשימות בזמן האתחול (preempt=none/voluntary/full) או במהלך הביצוע דרך debugfs (/debug/sched_debug), אם ההגדרה PREEMPT_DYNAMIC צוינה במהלך קומפילציית הליבה. בעבר, ניתן היה לציין את מצב הדחיפה רק ברמת פרמטרי הבנייה. שינוי זה מאפשר להפצות לשלוח ליבות עם PREEMPT מופעל, מה שמספק השהייה מינימלית עבור מחשבים שולחניים במחיר של ירידה קלה בתפוקה, ובמידת הצורך, לחזור ל-PREEMPT_VOLUNTARY (מצב ביניים עבור מחשבים שולחניים) או PREEMPT_NONE (המספק תפוקה מקסימלית עבור...). שרתים).
    • תת-מערכת BPF עודכנה לתמיכה בפעולות האטומיות BPF_ADD, BPF_AND, BPF_OR, BPF_XOR, BPF_XCHG ו-BPF_CMPXCHG.
    • לתוכניות BPF יש כעת את היכולת לגשת לנתוני מחסנית באמצעות מצביעי קיזוז משתנים. לדוגמה, בעוד שבעבר ניתן היה להשתמש רק באינדקס קבוע כדי לגשת למערך במחסנית, כעת ניתן להשתמש באינדקס משתנה. בקרת הגישה מוגבלת לגבולות שצוינו על ידי מאמת ה-BPF. תכונה זו זמינה רק לתוכניות בעלות זכויות יתר עקב חששות לניצול פגיעויות הקשורות לביצוע קוד ספקולטיבי.
    • נוספה היכולת לצרף תוכניות BPF לנקודות מעקב חשופות שאינן קשורות לאירועי מעקב גלויים במרחב המשתמש (נקודות מעקב כאלה אינן מובטחות לשמר את ה-ABI).
    • יושמה תמיכה באפיק CXL 2.0 (Compute Express Link), המשמש לארגון אינטראקציה במהירות גבוהה בין המעבד להתקני זיכרון (מאפשר שימוש בהתקני זיכרון חיצוניים כחלק מ-RAM או זיכרון קבוע, כאילו זיכרון זה מחובר דרך בקר זיכרון סטנדרטי במעבד).
    • נוסף מנהל התקן nvmem לאחזור נתונים מאזורי זיכרון שמורים על ידי קושחה שאינם נגישים ישירות Linux (לדוגמה, זיכרון EEPROM הנגיש פיזית רק לקושחה, או נתונים הנגישים רק בשלב מוקדם של האתחול).
    • הוסרה התמיכה במערכת הפרופילינג "oprofile", שלא הייתה בשימוש נרחב והוחלפה במנגנון perf המודרני יותר.
    • ממשק הקלט/פלט האסינכרוני io_uring מספק אינטגרציה עם cgroups השולטים בשימוש בזיכרון.
    • עבור ארכיטקטורת RISC-V, יושמה תמיכה במערכות NUMA, כמו גם במנגנוני kprobes ו-uprobes.
    • נוספה היכולת להשתמש בקריאה למערכת kcmp() באופן עצמאי מפונקציונליות צילום מצב התהליך (נקודת בדיקה/שחזור).
    • פקודות המאקרו EXPORT_UNUSED_SYMBOL() ו-EXPORT_SYMBOL_GPL_FUTURE() הוסרו, מכיוון שלא נעשה בהם שימוש בפועל במשך שנים רבות.
  • וירטואליזציה ואבטחה
    • מנגנון ההגנה KFence (Kernel Electric Fence) נוסף, אשר לוכד שגיאות זיכרון כגון overruns ו-access-after-frees. בניגוד למנגנון ניפוי השגיאות של KASAN, תת-המערכת KFence מהירה ובעלת תקורה נמוכה, מה שמאפשר לה לזהות שגיאות זיכרון המתרחשות רק במערכות ייצור או במהלך פעולה ארוכת טווח.
    • נוספה תמיכה עבור ההיפר-ויזור של ACRN, שנכתב תוך התחשבות במוכנות בזמן אמת והתאמה למשימה קריטית. ACRN מספק תקורה מינימלית, מבטיח השהייה נמוכה ותגובתיות נאותה בעת אינטראקציה עם חומרה. הוא תומך בווירטואליזציה של משאבי CPU, I/O, רשת, גרפיקה וקול. ניתן להשתמש ב-ACRN כדי להפעיל מספר מופעים מבודדים. מכונות וירטואליות ביחידות בקרה אלקטרוניות, אשכולות מכשירים, מערכות מידע לרכב, התקני IoT צרכניים וטכנולוגיות משובצות אחרות. ACRN תומכת בשני סוגים של מערכות אורח: מכונות וירטואליות שירות פריבילגיות, המשמשות לניהול משאבי מערכת (מעבד, זיכרון, קלט/פלט וכו'), ומכונות וירטואליות של משתמשים, שיכולות לפעול. Linux-הפצות, Android и Windows.
    • לתת-המערכת IMA (ארכיטקטורת מדידת שלמות), המתחזקת מסד נתונים של גיבוב (hash) לבדיקת שלמות הקבצים והמטא-דאטה הנלווים, יש כעת את היכולת לבדוק את שלמות נתוני הליבה עצמם, למשל, כדי לעקוב אחר שינויים בכללי SE.Linux.
    • להיפר-ויזור של ה-KVM יש כעת את היכולת ליירט היפר-קריאות של Xen ולהעביר אותן לאמולטור שפועל במרחב המשתמש.
    • נוספה יכולת שימוש Linux כסביבת הבסיס עבור ההיפר-ויזור של Hyper-V. לסביבת הבסיס יש גישה ישירה לחומרה והיא משמשת להפעלת מערכות אורח (בדומה ל-Dom0 ב-Xen). עד כה, Hyper-V (Microsoft Hypervisor) תמך Linux רק בסביבות אורח, אבל ההיפר-ויזור עצמו נשלט מסביבת המארח Windows.
    • נוספה תמיכה בהצפנה מובנית עבור כרטיסי eMMC, המאפשרת שימוש במנגנוני הצפנה המובנים בבקר הכונן כדי לבצע הצפנה ופענוח שקופים של קלט/פלט.
    • התמיכה בגיבובים שאינם בשימוש של RIPE-MD 128/256/320 ו-Tiger 128/160/192, כמו גם בצופן הזרם Salsa20, הוסרה מתת-מערכת הקריפטו, והוחלפה באלגוריתם ChaCha20. אלגוריתם blake2 עודכן למימוש blake2s.
  • תת מערכת רשת
    • נוספה היכולת להעביר את מטפל התשאול של NAPI עבור התקני רשת לתהליך ליבה נפרד, מה שמשפר את הביצועים עבור עומסי עבודה מסוימים. בעבר, תשאול בוצע בהקשר של softirq ולא כוסה על ידי מתזמן המשימות, מה שהקשה על ביצוע כוונון עדין לקבלת ביצועים מרביים. הפעלה בתהליך ליבה נפרד מאפשרת לצפות במטפל התשאול ממרחב המשתמש, להקצות אותו לליבות CPU ספציפיות ולהילקח בחשבון בעת ​​תזמון החלפות משימות. הפרמטר /sys/class/net/sysfs זמין להפעלת מצב חדש זה. /מוּשׁחָל.
    • MPTCP (MultiPath TCP), הרחבת פרוטוקול TCP לניהול חיבורי TCP עם מסירת מנות בו זמנית לאורך מספר נתיבים דרך ממשקי רשת שונים הקשורים לכתובות IP שונות, שולבה עוד יותר בליבת השרת. הגרסה החדשה מוסיפה את היכולת להקצות עדיפויות לזרמים ספציפיים, מה שמאפשר, למשל, יצירת זרמי גיבוי המופעלים רק כאשר הזרם הראשי נתקל בבעיות.
    • IGMPv3 מוסיף תמיכה במנגנון EHT (מעקב מארח מפורש).
    • מנגנון סינון החבילות של netfilter מיישם את היכולת להחזיק בטבלאות ספציפיות כדי לקבל שליטה בלעדית (לדוגמה, תהליך חומת אש ברקע יכול לנעול טבלאות ספציפיות לעצמו, ולמנוע מכל אחד אחר להתערב בהן).
  • Оборудование
    • ניקוי של פלטפורמות ARM מיושנות ולא מתוחזקות הושלם. הקוד עבור פלטפורמות efm32, picoxcell, prima2, tango, u300, zx ו-c6x, כמו גם הדרייברים הנלווים אליהן, הוסרו.
    • מנהל ההתקן של amdgpu תומך כעת בהמהרה (OverDrive) עבור כרטיסים המבוססים על כרטיס המסך Sienna Cichlid (Navi 22, Radeon RX 6xxx). תמיכה בפורמט הפיקסלים FP16 נוספה עבור מנוע בקר התצוגה (DCE) מהדורות השמיני עד ה-11. פונקציית איפוס GPU יושמה עבור כרטיס המסך Navy Flounder (Navi 21) ומעבד המסך Van Gogh.
    • מנהל ההתקן של i915 עבור כרטיסי מסך של אינטל כולל כעת את הפרמטר i915.mitigations להשבתת מנגנוני בידוד והגנה לשיפור הביצועים. עבור שבבי Tiger Lake ומאוחרים יותר, מופעלת תמיכה במנגנון VRR (Variable Rate Refresh), המאפשר התאמות אדפטיביות של קצב רענון הצג כדי להבטיח משחק חלק וללא קריעות. טכנולוגיית Intel Clear Color מופעלת לשיפור דיוק הצבעים. נוספה תמיכה ב-DP-HDMI 2.1. יושמה בקרת תאורה אחורית עבור לוחות eDP. תמיכה ב-HDR מופעלת עבור כרטיסי מסך מדור 9 עם תמיכה ב-LSPCON (Level Shifter and Protocol Converter).
    • מנהל ההתקן nouveau מוסיף תמיכה ראשונית עבור כרטיסי מסך של NVIDIA המבוססים על ארכיטקטורת GA100 (Ampere).
    • מנהל ההתקן של msm עודכן לתמיכה במעבדים הגרפיים Adreno 508, 509 ו-512 המשמשים בשבבי SDM (Snapdragon) 630, 636 ו-660.
    • נוספה תמיכה עבור כרטיסי הקול Sound BlasterX AE-5 Plus, Lexicon I-ONIX FW810s ו-Pioneer DJM-750. נוספה תמיכה עבור תת-מערכת השמע Intel Alder Lake PCH-P. יושמה סימולציית תוכנה של חיבור וניתוק של שקעי שמע עבור מטפלי ניפוי באגים במרחב המשתמש.
    • נוספה תמיכה עבור קונסולות משחק של נינטנדו 64 שיצאו בין השנים 1996 ל-2003 (ניסיונות קודמים לפורט) Linux (הפורט של נינטנדו 64 מעולם לא הושלם והועבר למעמד של Vaporware.) המוטיבציה ליצירת פורט חדש עבור הפלטפורמה המזדקנת, שיצאה משימוש כבר כמעט עשרים שנה, היא, על פי הדיווחים, הרצון לעודד את פיתוחם של אמולטורים ולפשט את פורט המשחקים.
    • נוסף דרייבר עבור בקר המשחק DualSense של סוני פלייסטיישן 5.
    • נוספה תמיכה בלוחות, התקנים ופלטפורמות ARM: PineTab, Snapdragon 888 / SM8350, Snapdragon MTP, Two Beacon EmbeddedWorks, Intel eASIC N5X, Netgear R8000P, Plymovent M2M, Beacon i.MX8M Nano, NanoPi M4B.
    • נוספה תמיכה בסמארטפונים Purism Librem5 Evergreen, Xperia Z3+/Z4/Z5, ASUS Zenfone 2 Laser, BQ Aquaris X5, OnePlus6, OnePlus6T, Samsung GT-I9070.
    • נוסף מנהל ההתקן bcm-vk עבור כרטיסי האצה של Broadcom VK (כגון כרטיסי PCIe Valkyrie ו-Viper), שניתן להשתמש בהם כדי להעביר עומס של עיבוד שמע, וידאו ותמונה, כמו גם משימות הקשורות להצפנה, למכשיר נפרד.
    • נוספה תמיכה בפלטפורמת Lenovo IdeaPad עם יכולת ניהול טעינה רציפה ותאורת רקע של המקלדת. קיימת גם תמיכה בפרופיל ACPI של פלטפורמת ThinkPad עם ניהול צריכת חשמל. נוסף מנהל התקן עבור תת-מערכת HID של Lenovo ThinkPad X1 Tablet Gen 2.
    • נוסף דרייבר ov5647 עם תמיכה במודול מצלמה עבור Raspberry Pi.
    • נוספה תמיכה עבור לוחות RISC-V SoC FU740 ו-HiFive Unleashed. בנוסף נוסף דרייבר חדש עבור שבב Kendryte K210.

מקור: OpenNet.ru

קנה אירוח אמין לאתרים עם הגנת DDoS, שרתי VPS VDS 🔥 קנה אחסון אתרים אמין עם הגנת DDoS, שרתי VPS VDS | ProHoster