גם המספר 2.0 אינו גרסת ליבת Linux. בתוך המוצר נמצאת ליבת Linux מסדרת 6.18. 2.0 הוא מספר הגרסה של פלטפורמת התוכנה ש־Qualcomm בונה סביב Linux עבור שבבי Dragonwing למצלמות, רובוטים, מסופים תעשייתיים, שערי תקשורת ומחשבי קצה.
ניקח מצלמה חכמה בקו ייצור. היא צריכה לעלות בצורה אמינה, לקרוא חיישן תמונה, להעביר וידאו, להריץ מודל AI, להציג תוצאה, לדבר עם הרשת, לקבל עדכון מאובטח ולהמשיך לקבל תיקוני אבטחה במשך שנים. ליבת Linux לבדה אינה יודעת לחבר את כל החלקים האלה למאיצים, לקושחה וללוח המסוים שעליו בנוי המוצר.
Qualcomm Linux הוא החבילה שמחברת ביניהם. היא כוללת את שרשרת האתחול, UEFI שמעלה את המערכת, ליבת Linux ודרייברים, סביבת תוכנה למעלה, הגדרות ללוחות, כלי בנייה, קושחה, תיעוד, דוגמאות ודרך להוסיף את יכולות החומרה של Qualcomm. זה יותר קרוב לבסיס שממנו יצרן בונה קושחת Linux למוצר מאשר למערכת שולחנית שמורידים ומתקינים על כל מחשב.
במחשב רגיל מתקינים Ubuntu ואז מוסיפים תוכנה בעזרת apt. במוצר משובץ בדרך כלל רוצים תמונת מערכת קבועה ומוגדרת, שנקראת Image: יודעים מראש אילו חבילות, שירותים, דרייברים והגדרות ייכנסו אליה, בונים אותם יחד, צורבים את התוצאה ובודקים את אותה תצורה. המטרה אינה לתת למשתמש אלפי חבילות; המטרה היא לדעת בדיוק מה רץ בתוך המצלמה או הרובוט.
כאן נכנס Yocto Project. Yocto אינו מערכת הפעלה בפני עצמה. הוא מערכת מתכונים וכלי בנייה שמרכיבה הפצת Linux למוצר. אפשר לחשוב עליו כמטבח תעשייתי: המתכונים מגדירים מאין מגיע כל רכיב תוכנה, איך מקמפלים אותו, אילו תיקונים מוסיפים ולאיזו חבילת יעד הוא נכנס. בסוף לא מקבלים תפריט, אלא Image שאפשר לצרוב על הלוח.
השכבה בשם meta-qcom היא חבילת התמיכה בלוח ובשבב, מה שמכונה BSP. היא מלמדת את Yocto כיצד לאתחל את פלטפורמות Qualcomm, איזו ליבת Linux לבנות, אילו דרייברים וקובצי תיאור חומרה נדרשים ואיך לארוז את התוצאה. שכבה נוספת בשם meta-qcom-distro מספקת הגדרות והצעות לתמונת מערכת שלמה. אלה חלקים בתוך תהליך הבנייה; הם אינם עוד שתי מערכות הפעלה.
בגרסה 2.0 הבסיס הזה נשען על Linux 6.18.30 ועל Yocto 6.0 בשם Wrynose. Qualcomm מציגה אותו כבסיס שנשאר קרוב לפרויקטים הציבוריים שעליהם הוא בנוי, ומפתחת את שכבות הליבה בפומבי ב־GitHub עם בדיקות אוטומטיות פתוחות.
החלק המעניין פה אינו רק שה־Kernel חדש יותר. ב־Qualcomm Linux 1.x היו שתי גרסאות שנוהלו בנפרד: Base פתוחה יותר ו־Custom עם רכיבי הערך המוסף של Qualcomm. לכל מסלול היו מקור Kernel, Image, מערכת קבצים ועץ התקנים משלו.
מבחינת צוות מוצר, זו כפילות יקרה. תיקון אבטחה צריך להיכנס לשני ענפים. דרייבר צריך להיבדק בשתי תצורות. מעבר לשבב נוסף עלול להוליד עוד התאמות ועוד עותק תוכנה שמתפצל מהמקור, או fork. הבעיה אינה רק מספר קובצי המקור; היא שכל פיצול כזה ממשיך לצבור תחזוקה לאורך חיי המוצר.
Qualcomm Linux 2.0 מנסה למחוק את הפיצול הזה. יש מקור Kernel אחד, תמונת Kernel אחת, מערכת קבצים בסיסית אחת וזרימת עץ התקנים מאוחדת. מעל הבסיס מוסיפים רק את היכולות שהמוצר צריך, בלי לשנות את מקור הליבה כדי לקבל אותן.
היכולות הנוספות מגיעות כ־overlays, כלומר חבילות שנערמות מעל הבסיס. קיימים תחומים לשמע, מצלמה, גרפיקה, וידאו, חיישנים וראייה ממוחשבת. Overlay יכול להכיל ספריות למרחב המשתמש, מודול Kernel שאפשר לטעון בנפרד ולעיתים גם תוספת לעץ ההתקנים שמתארת לליבת Linux כיצד החומרה מחוברת.
היתרון הוא בחירה מקומית. מצלמת AI יכולה לקבל את צינור המצלמה המואץ ואת קידוד הווידאו, בעוד שער תקשורת יכול לוותר עליהם ולהישאר עם רשת, אבטחה ועדכונים. כל בלוק שלא נכנס ל־Image חוסך נפח, תחזוקה ולעיתים גם שטח תקיפה.
אבל חשוב לא להפוך את המילה פתוח לסיסמה. הבסיס המשותף מפותח כקוד פתוח ומיישר קו עם upstream, אך חלק מה־overlays הממוטבים יכולים לכלול קוד מקור או בינאריים קנייניים של Qualcomm. החברה עצמה בונה ובודקת גם Image פתוח המבוסס על רכיבי upstream וגם Image מלא עם רכיבי ערך מוסף קנייניים. יש בסיס אחד; אין הבטחה שכל רכיב מעליו פתוח.
מעל שכבות Qualcomm מגיעה שכבת המוצר של היצרן. שם נמצאים תיאור הלוח הפרטי, בחירת החבילות, השירותים והאפליקציה. המטרה היא שההתאמות שמבדילות את המוצר יחיו בשכבה העליונה ולא בתוך fork עמוק של ליבת Linux. המבנה הזה אמור להקל על מעבר בין שבבי Dragonwing, אבל הוא אינו מבטל את התאמת התוכנה לשבב החדש, תהליך שמכונה Port: עדיין צריך לבדוק דרייברים, overlays ותמיכה בכל מאיץ.
זה פותח תרחישים מעניינים. רובוט נייד יכול לשלב ניווט, עיבוד מצלמה והסקת AI על אותו בסיס. מסך תעשייתי יכול לקבל גרפיקה מואצת ועדכונים מרחוק. שער תקשורת יכול להיבנות בלי מחסנית המולטימדיה. מצלמה יכולה להעביר חלק מעבודת הווידאו וה־AI למאיצים ייעודיים במקום להעמיס הכול על המעבד הראשי.
ערכות הפיתוח ל־AI, למולטימדיה ולרובוטיקה יושבות מעל הפלטפורמה ואינן Qualcomm Linux עצמו. הן מספקות בלוקים מוכנים לבניית זרימת וידאו, הרצת מודל או ניווט רובוטי. הזמינות שלהן משתנה בין שבבים ותצורות, ולכן דוגמה שעובדת על לוח Dragonwing אחד אינה הבטחה שהיא נתמכת על לוח אחר.
לגרסה 2.0 יש גם מסלול Linux לזמן אמת המבוסס על PREEMPT_RT. במערכת רגילה, משימה חשובה עלולה להמתין בזמן שה־Kernel משלים עבודה אחרת. PREEMPT_RT הופך חלקים גדולים יותר מה־Kernel לניתנים לעצירה, כדי שהמתזמן יוכל לתת קדימות מהירה וצפויה יותר למשימה דחופה. זה חשוב בבקרת מנוע, אודיו תעשייתי ותקשורת שבהם לא מספיק שממוצע הזמנים טוב; צריך לשלוט גם במקרה הגרוע.
זה עדיין לא אותו דבר כמו בקר קשיח ומבודד. בשבבי IQ-8275 ו־IQ-9075 קיים גם RTSS, מעין מחשב זמן אמת קטן ונפרד בתוך השבב. הוא יכול להריץ FreeRTOS, מערכת הפעלה קלה לבקרה בזמן אמת, מחוץ לסביבת Linux. הוא מיועד לעבודות שדורשות בידוד חזק יותר, זמין רק בפלטפורמות האלה ודורש הרשאת לקוח מתאימה. לכן המשפט 'זמן אמת מובנה' מתאר שתי דרכים שונות, ולא יכולת אחידה בכל משפחת השבבים.
לצד יכולות המוצר יש שכבות לייצור. SELinux מגביל אילו פעולות כל תהליך רשאי לבצע. OSTree מאפשר להחליף את מערכת הקבצים כיחידה אחת ולחזור לגרסה קודמת אם העדכון נכשל, וקפסולות UEFI מעדכנות את הקושחה שמתחת ל־Linux. אפשר להוסיף גם קונטיינרים ומכונות וירטואליות, אך כל שילוב כזה צריך להיבדק כחלק מ־Image המוצר ולא כיכולת שמובטחת אוטומטית.
הביטוי upstream-first מתאר עוד ניסיון להקטין חוב. במקום להשאיר כל דרייבר כתיקון פרטי על Kernel ישן, Qualcomm מנסה להכניס תמיכה לפרויקטים הציבוריים ולעקוב מקרוב אחר Linux הראשי. זה לא אומר שאין תיקונים פרטיים או קושחה נפרדת, אבל הוא נותן לצוות מוצר סיכוי טוב יותר לקבל תיקוני אבטחה ושדרוגים בלי לגרור ענף עתיק במשך עשור.
אז למה לא פשוט לבחור Ubuntu? Qualcomm ו־Canonical מציעות גם Ubuntu נפרד וממוטב לחלק מפלטפורמות ה־IoT. זה מסלול נוח יותר למי שרוצה סביבת פיתוח מוכרת, מאגר חבילות גדול והתקנה מהירה בעזרת apt. Qualcomm Linux מתאים יותר כאשר היצרן רוצה לשלוט בהרכב ה־Image, לבנות BSP ולנהל מוצר סגור לאורך זמן. זו אינה תחרות בין Linux ל־Linux; זו בחירה בין קצב פיתוח נוח של מערכת כללית לבין שליטה עמוקה יותר בהרכב מערכת המוצר.
המחיר האמיתי נמצא בתהליך הבנייה. במסמכים של Qualcomm מופיעה נקודת פתיחה של מחשב x86 עם 16 גיגה־בייט RAM וכ־300 גיגה־בייט פנויים, והחברה מזהירה שבנייה במכונה וירטואלית יכולה להימשך שעות. במקום apt install שמסתיים בשניות, kas אוסף את שכבות ה־Yocto ו־BitBake בונה Image שלם. זה נותן שחזור ושליטה, אבל דורש אחסון, זמן, ידע ותשתית Build מסודרת.
גם המילה GA דורשת בדיקה. ההכרזה אומרת ש־Qualcomm Linux 2.0 זמין באופן כללי, אך הערות הגרסה מפרידות בין איכות המימוש בכל שבב. IQ-9075, IQ-8275 ו־IQ-615 מסומנים GA, כלומר בשלים לשימוש כללי ולייצור. QCS6490 ו־QCS5430 מסומנים Pre-GA, שלב שלפני בשלות מלאה לייצור, ואילו IQ-X7181 ו־IQ-X5121 מסומנים Alpha, שלב מוקדם יותר. מוצר התוכנה הושק, אבל לא כל התאמה לשבב ולא כל יכולת נמצאות באותה רמת בשלות.
רשימת המגבלות הרשמית מחזקת את הנקודה. בתצורות המתועדות מופיע מצב שבו Docker עובד רק כאשר SELinux מדווח על הפרות אך אינו חוסם אותן, עיכוב של כחצי שנייה באתחול מצלמה כאשר SELinux כן אוכף את הכללים, ועלייה של כ־12 עד 16 אחוז בשימוש במעבד בתהליכי קידוד וידאו בתרחיש 4K ב־30 פריימים לשנייה. הרשימה כוללת גם תקלות בכניסה למצב שינה ובחזרה ממנו בחלק מלוחות הפיתוח, וכשל Ethernet במסלול עדכון מסוים מ־1.8 ל־2.0. אלה אינם אומרים שהפלטפורמה אינה שמישה; הם אומרים שחייבים לקרוא את טבלת היכולות והמגבלות של הלוח המדויק לפני בחירה לייצור.
יש גם דברים שנמצאים עדיין בדרך. Qualcomm כבר מדברת על 2.1 ועל Boot פתוח יותר ועל שילוב OP-TEE, והערות הגרסה מסמנות יכולות נוספות של RTSS, מודם ו־KVM כמתוכננות בחלק מהשבבים. אם פיצ'ר מופיע במפת דרכים, הוא אינו סיבה לבחור היום רכיב למוצר עד שהוא מופיע כנתמך ונבדק בתצורה שלך.
לניסוי ראשון לא חייבים לבנות את העולם מאפס. Qualcomm מציעה Images מוכנים ולוחות פיתוח כמו IQ-9075 EVK ו־IQ-8275 EVK. אפשר לצרוב Image, להריץ דוגמת מצלמה או AI, למדוד את הנתיב שבאמת חשוב למוצר ורק אחר כך לעבור לבניית Yocto מותאמת. הבדיקה הנכונה אינה רק 'האם הדמו עולה', אלא האם הדרייבר, ה־overlay, מנגנון העדכון וה־SDK הנדרשים נמצאים באותה תצורה וברמת בשלות שמתאימה ללוח הזמנים.
החלק המעניין פה הוא ש־Qualcomm אינה מנסה לנצח את Ubuntu בשולחן העבודה. היא מנסה לפתור בעיה כואבת יותר של Embedded Linux: כל שבב ולוח מושכים את היצרן לעוד BSP, עוד Kernel ועוד ענף תחזוקה. אם הגבול בין הבסיס המשותף ל־overlays באמת נשמר, Qualcomm Linux 2.0 יכול להפוך מעבר בין מוצרי החברה לפחות כואב. אם המצלמה, האבטחה או זמן האמת עדיין דורשים שילוב קנייני ומיוחד לכל שבב, החוב לא נעלם — הוא רק עבר לשכבה מסודרת יותר. בשביל מהנדס מוצר, זו עדיין התקדמות מעניינת, אבל לא קיצור דרך שמחליף בדיקה אמיתית על החומרה.
הזווית ההנדסית
למה זה מעניין
Qualcomm Linux 2.0 אינו עוד הפצת Linux לשימוש כללי, אלא ניסיון להפוך ערימת BSP, דרייברים, קושחה ו־SDK של מוצר Embedded לבסיס אחד שאפשר לתחזק ולהעביר בין כמה שבבי Dragonwing. המודל המאוחד יכול לחסוך forks ובדיקות כפולות, אבל הוא מגיע עם מחיר אמיתי: בניית Yocto כבדה, overlays שחלקם קנייניים, ותמיכה שאינה באותה רמת בשלות בכל שבב. הערך שלו ייקבע לא לפי הכותרת 'פתוח ומאוחד', אלא לפי היכולת של צוות מוצר לבנות, לעדכן ולשחזר את התצורה המדויקת שלו במשך שנים.

השיחה ממשיכה
תגובות
שאלות, תיקונים ורעיונות שאפשר לבנות מהם משהו.