קרה לכם פעם שניסית להפעיל תוכנת לינוקס שקומפלה במערכת 32 ביט במערכת 64 ביט?
מעבדים מודרניים מסוגלים להריץ קוד 32 ביט וקוד 64 ביט בלי בעיה, אבל התוכנית דורשת ספריות 32 ביט שפשוט לא זמינות במערכת המארחת. גם אם ניסיתם להתקין את הספריות הרלוונטיות, התוכנה סרבה 'למצוא' את הספריות, כי היא מחפשת גרסאת 32 ביט והתקנת גירסאת 64 ביט.
יש טריקים של התקנה של ספריות 32 במערכת 64 ביט, למשל חבילת ia-32, אבל רק חלק קטן מהספריות מגיעות באריזה כזו.
דבר אחד לעשות זה לנסות לקמפל את התוכנה ב64 ביט, אבל לפעמים זה לא אפשרי – בין אם כי הקוד של התוכנה לא זמין או כי מסיבות אלו או אחרות היא לא מתקמפלת ב64 ביט או אולי מתקמפלת אבל לא עובדת).
יש בלינוקס פקודה בשם chroot, עם דף man קצר במיוחד.
הפקודה משתמשת בקריאת המערכת chroot, שמשנה את ספרית השורש של התהליך שקורא לה לספריה חדשה.
אחרי chroot, מערכת הקבצים הרגילה מוסתרת וכל מה שהתהליך רואה זה את הקבצים והספריות שבתוך הספריה שניתנה לפקודה כפרמטר.
אחד השימושים הנפוצים (והמפוקפקים למדי) לchroot הוא להשתמש בה כדי לכלוא משתמש / תהליך בספריה מסויימת כדי למנוע ממנו גישה לשאר המערכת.
לא בשימוש הזה אני רוצה להתמקד.
נחזור לדוגמא של תוכנית 32 במערכת 64 ביט.
אפשר ליצור מערכת 32 ביט בספריה מסויימת, עם כל הספריות הדרושות – כולן ב32 ביט ולהריץ את התוכנית הסוררת – והיא תעבוד בלי בעיה.
יש פקודה נפלאה בדביאן בשם debootstrap, שלמעשה מסוגלת ליצור לנו מערכת דביאן מינימלית בארכיטרקטורה שנרצה (i386 במקרה הזה) ומהגרסא שנרצה – נניח stable.
בסוף התהליך יהיה לכם דביאן קטן ורזה למדי בתוך אותה ספריה (בסדר גודל של 200 מגה-בייט).
אפשר כמובן להוסיף את הפקודות לfstab כדי שהן יורצו אוטומטית בעליה של המחשב.
יש מי שעושים bind גם לספרית הבית שלהם, כדי שאותם קבצים יהיו זמינים (זהירות עם זה, אם אתם מוחקים את הstable-i386 אחרי שעשיתם את זה הוא יעיף לכם גם את ספריית הבית).
שימו לב שקצת קשה לדעת שאנחנו אכן בפנים, אפשר לבדוק שהקבצים מסביב הם לא מה שאתם רגילים לראות.
בתוך הchroot אפשר להתפרע ולהריץ מה שרוצים, למשל apt-get כדי להתקין חבילות כאוות נפשכם.
אחד הדברים המעניינים ביותר הוא שכל העניין הזה מאפשר להריץ הפצת לינוקס אחת בתוך הפצת לינוקס אחרת.
לאחרונה נאלצתי לעבוד עם Centos 64bit, שהיא הפצה מבוססת רד-האט ועובדת עם חבילות rpm.
המשימה היתה להריץ תוכנה שנבנתה ונבדקה בדביאן בגרסאת 32 ביט, וההתקנה שלה הכילה כעשרה קבצי deb שיצרתי בעצמי מספריות בגרסאות שונות ומשונות (ולפעמים כוללת שינויים שלי).
במקום ליצור קבצי rpm מקבילים, פשוט התקנתי chroot של דביאן 32 ביט (אם מדברים על שתי ציפורים במכה אחת), ופשוט התקנתי את הdebים בפנים כאילו זה דביאן למהדרין.
נתקלתי בבאג בודד שנבע מכך שהקרנל של אותה גרסאת Centos היה ישן יותר מזה של הדביאן ואחת מקריאות המערכת (mmap) השתנתה בין הגרסאות בצורה שגרמה לקוד שעבד בגרסא החדשה של הקרנל לקרוס בגרסא הישנה, אבל שינוי קטן בתוכנה שלי פתר את הבאג.
הפוסט הזה לא יהיה שלם בלי להזכיר את schroot שמאפשר גם למשתמשים שאינם root להשתמש בchroot, ובגדול הוא הרבה יותר נוח מאשר שימוש ישיר בchroot.
אני כל כך אשמח ביום שבו הממונה על ההגבלים העסקיים בארצות הברית (או המקבילה שלו) יתחיל להכנס באפל, שמתנהגת בצורה בזויה במיוחד.
אפל עושה הכל כדי שמשתמשי לינוקס לא יכולו להשתמש באייפון ובאייפוד טאץ' בלי לעשות שמיניות באוויר (עיין ערך : להתקין חלונות במכונה וירטואלית).
הפרוטוקול שמעביר את הנתונים לאייפון/איי-טאץ' מוצפן בSSL, וניחה זה (על זה עוד התגברו) – המכשיר מכיל אלגוריתם hash סודי שמונע מתוכנות שאינן iTunes (ימח שמה) להעלות קבצי מוסיקה.
אפל מנצלת את הכוח שלה בתור שומר הסף של האפליקציות שמורשות לעלות על האייפון/איי-טאץ כדי למנוע מכל מי שמאיים לכאורה על ההגמוניה שלה בצורה זו או אחרת.
אפל מנעה מאמולטור קומודור 64 (ברשיון!) להכנס לחנות התוכנות בטענה שהוא מריץ קוד בר הרצה, בניגוד לתנאי השימוש. מעניין שסגה קיבלה פטור – כי משחקי האייפון שלה עובדים בצורה דומה.
למה? אפל, בפארנויה האין סופית שלה, חוששת שמשתמשים יקנו את המשחקים שלהם ממקום אחר או חלילה ישיגו אותם בחינם.
במגוון דוגמאות, אפל חיסלה תוכנות שהתחרו בתוכנות שלה, למשל תוכנה שמסנכרנת פודקסטים ישירות על האייפון ולא עוברת דרך iTunes (ימח שמה).
אפל מעסיקה סוללות של עורכי דין שמחפשים את מי לדפוק באינטרנט.
למשל, וויקי שעודד דיון בהנדסה לאחור של הhash הסודי של אפל קיבל מכתב איום מאפל בטענה שהוא פוגע ב"FairPlay" – מנגנון הDRM של אפל (ולפי חוק הDMCA המפגר אסור לבצע הנדסה לאחור של מנגנוני הגנה על זכויות יוצרים).
כרגע ראיתי פרק של hak5, שעסק בDNS Tunneling כדי לגלוש בחינם במקומות עם WIFI סגור שמאפשרים DNS, וכן LinuxDNA – פרוייקט לאופטימיזציה של הקרנל של לינוקס עם ICC (הקומפיילר של אינטל).
נראה לי שאני אתחיל לצפות בה באופן קבוע.