עד שאני מסיים להדר את המערכת החדשה במסך השני, הנה כמה דברים על BSD שאולי רציתם לדעת, אבל פחדתם לשאול. מערכת ההפעלה FreeBSD היא לא GNU/Linux, והקרנל שלה איננו Linux. כאשר פרוייקט BSD המקורי נסגר בשלהי שנות השמונים, קמו מהאפר שלו שלושה פרוייקטים חדשים (וחינמיים), שרצו להמשיך את הפיתוח מהמקום בו הוא הופסק. לכל אחד מהם יש מאפיינים ייחודים לו.
מערכת ההפעלה OpenBSD היא הוריאנט המבוצר, אשר לדברי מומחים היא בין מערכות היוניקס המוקשחות ביותר בנמצא (ולכן היא גם משמשת בסיס לפיירוול למשל). היתרון הזה הוא גם חיסרון, מפני שהספרטניות שלה מקשה על הפיכתה למכונה רב-תכליתית, כפי שמקובל במערכות הפעלה מודרניות. כלומר, אין מה לדבר על סביבת עבודה גרפית.
לעומתה, מערכת ההפעלה NetBSD מתאפיינת בפורטביליות, והיא הוסבה עד כה לכ-54 פלטפורמות ... והיד עוד נטויה. סביר להניח שNetBSD תרוץ על כל חומרה שתרצו להתקין אותה בה. FreeBSD היא הטוב מבין כל העולמות. כל היתרונות של עולם הBSD, מלבד הפורטביליות של NetBSD, ביחד עם כל הצעצועים של Linux. בסקירה התייחס לFreeBSD בלבד.
כל מה שרץ בלינוקס, ירוץ גם על FreeBSD. יש יוצאים מן הכלל, אבל מעט מאוד. בתור מי שעובד עם FreeBSD החל בגירסה 3.3 וכמשתמש תובעני למדי, עדיין לא נתקלתי במשהו שיכולתי לעשות בלינוקס אבל לא בBSD. היא גם יודעת להריץ תוכנות שהודרו עבור לינוקס בלינוקס עצמה, ולפעמים היא עושה את זה טוב יותר מבחינת ביצועים.
כמו לינוקס, גם FreeBSD עטופה שכבת יישומים שמקורם בפרוייקט GNU, או פרוייקטים חופשיים וחינמיים אחרים. בעוד שבלינוקס השם "לינוקס" עצמו מתייחס לקרנל, ואילו ה"הפצה" היא הפרוייקט שאורז את לינוקס עם היישומים, מפתחי FreeBSD אחראים על הקרנל וחלק לא מבוטל של תוכנות המערכת עצמן. הפרוייקט הוא שמתחזק את גלעין תוכנות המערכת, למרות שניתן גם להשתמש במקבילות שלהן בפרוייקט GNU.
כמו לינוקס, גם לFreeBSD יש גירסה "טבעית" משלה לארכיטקטורת x86 של אינטל, ולא מדובר בהיסב כמו גירסאות סולאריס לארכיטקטורה זו. FreeBSD תומכת במגוון רחב מאוד של טכנולוגיות מודרניות "מהקופסא". למשל, Software RAID שמזכיר את היכולות של Veritas בתצורות דומות. היא גם מספקת תמיכה בריבוי מעבדים, מבחר של שלוש סויטות פירוול בעלות יכולות שונות, יכולות Packetsahping וגם כמה "חיות" שאין באף מערכת הפעלה אחרת, כמו Jails.
בנוסף, היא תומכת גם בתקשורת WiFi, פרוטוקול IPv6 וגם בהתקני Bluetooth (למרות שלא בדקתי בעצמי). למרות שהתמיכה שלה בחומרה צנועה מזו של לינוקס, ההבדל לא משמעותי במיוחד והיא מסוגלת לזהות כמעט כל חומרת מיינסטרים.
התקנה
בשימוש אופייני עדיף להתחיל עם מערכת בסיס שמישה ולבנות ממנה נדבך על נדבך לפי הצורך, במקום להתקין מפלצת של 3 ג"ב עמוסה בדברים שאת חלקם לבטח איננו צריכים. גם על פי תפיסת אבטחת מידע בסיסית, תוכנות ללא שימוש הן בגדר חורי אבטחה מיותרים. כמו לכל הפצת לינוקס מקבילה, יש גם גירסה של 5 או 6 דיסקים.
מי שלא רק אוהב את "חוד התער", אלא אף נוהג לרוקן קופסת תערים לקערת הקורנפלקס שלו כל בוקר, יש גם 'make world'. אלו שבכלל מוותרים על הקורנפלקס, יכולים לנסות 'make universe'. הפקודה 'make buildworld' מהדרת את כל התוכנות של מערכת ההפעלה (למעט ה-Ports) מחדש. הפקודה 'make installworld' מתקינה את כל התוכנות שהודרו על ידי הפקודה הראשונה.הפקודה 'make world' מבצעת את שתי הפעולות בזו אחר זו.
האמיצים במיוחד עושים את זה באופן אוטומאטי מידי כמה ימים. בדיוק באותו האופן, את הקרנל מקמפלים עם הפקודה 'make buildkernel' ו-'make installkernel', או make kernel בקיצור. הפקודה make universe מבצעת world ו-kernel בו זמנית ... לא, עדיין לא יצא לי לבדוק את זה בעצמי.
ניהול תוכנה
לFreeBSD יש את אחת ממערכות ניהול התוכנה הנוחות, הקלות והבריאות ביותר שאפשר למצא כיום, היא מערכת ה-Ports. מדובר בעץ ענק ובו תיקייה עבור כל תוכנה בפהצה המלאה, לפי קטגוריות (נושאים). יש הרבה מאוד תיקיות כאלה, ובכל אחת מהן נמצא קובץ makefile קטן שמספק את מידע המתאר אילו קבצים יש להוריד, מאיפה להוריד אותם, איך להדר אותם, לאן להתקינם ואילו חבילות תוכנה אחרות דרושות לפני כן. כל עוד המשתמש לא נכנס לתיקייה ומפעיל את הקובץ, היא לא תופסת מקום בדיסק. העץ הוא למעשה ה"אינדקס" של ספריית התוכנה הוירטואלית.
לאחר התקנה ראשונית, מומלץ להתקין דבר ראשון פורט בשם 'cvsup-no-gui': כלי לעידכון עץ הפורטים עצמו. פעולה זו תבטיח שכל התוכנות שיותקנו מנקודה זו ואילך יהיו תמיד בגירסאותיהן העדכניות ביותר.
כדי להתקין את KDE למשל, המשתמש נכנס לתיקייה usr/ports/x11/kde3/ ומפעיל את הפקודה make' 'install. תחילה יורדו כל הקבצים הדרושים, יקומפלו, ואם יסתבר שיש צורך בתוכנות נוספות, המערכת תוריד אותן באופן אוטומטי, תהדר ותתקין בכוחות עצמה כחלק מהתהליך. אם תוסיפו את הפרמטר clean לשורת הפקודה, אם היא גם תנקה אחריה. פשוט, גאוני ויציב. את עץ התיקיות אפשר ורצוי לעדכן מדי לילה באמצעות cron.
הגירסה שמגיעה על גבי 6 דיסקים מכילה אוסף של יישומים בדומה להפצות הלינוקס הסטנדרטיות. במידה ומתקינים מגירסת מיני, ומתקינים KDE או GNOME באמצעות מנגנון ה-Ports, תתקבל תמיד הגירסה העדכנית ביותר שיש.
בגירסת המיני אפשר למצא סט POSIX מלא, עם tcsh אך ללא bash. מי שרוצים bash יצטרכו להתקינו באמצעות מערכת ה-ports. אפשר למצא כאן גם את עורכי הטקסט vi ו-ed, אבל לא את pico. יש מהדר gcc 3.4 וכן perl, sendmail, openssh וisc-bind9. יש גם סוויטות RAID כמו vinum ו-gvinum, כלים לניהול שלושת הפיירולים של הקרנל וכלי שליטה למנגנון ה-Jails.
כאמור גירסאות הports מתוחזקות בנפרד ממערכת ההפעלה ובדרך כלל ברמה גבוהה מאוד, אבל האחריות על הבדיקה מוטלת על מתחזקי הפורטים ולא על הקבוצה שאחראית על מערכת ההפעלה עצמה. חשוב להבין לכן, שאם תוכנה מסויימת בעץ הפורטים איננה תקינה, אזי הבעיה איננה במערכת ההפעלה. זה קורה, אבל נדיר למדי.
עדכון התוכנה מתבצע כמעט תמיד מקוד מקור, אלא אם כן מדובר בפורט של תוכנה שאיננה קוד פתוח. ניתן לעדכן את המערכת עם cvsup ולרענן את עץ הפורטים, או עץ תוכנות המערכת והקרנל, או חלקים מהן. את עץ הפורטים (ה"אינדקס" של ספריית התוכנות הוירטואלית אותן יש ביכולתנו להתקין) נהוג לעדכן מדי לילה. portupdate כמו גם תוכנות דומות, מסוגלת לעדכן תוכנות שכבר מותקנות, לפי רשימה הניתנת לה מראש.
היא תריץ make install clean, עבור תוכנות אלו מדי לילה, ואם היה עדכון ב"אינדקס", היא תוריד את הגירסה החדשה, תהדר אותה במקום ותתקין אותה עוד לפני שתספיקו לקבל את עיתון הבוקר שלכם.
כאשר יש עדכון משמעותי בגירסה, החלפת סיפרה עיקרית למשל, העדכון יתבצע בדרך כלל בפורט נפרד. עדכון אוטומטי איננו מומלץ בסביבת ייצור ובודאי שלא במערכות קריטיות. בתור מי שנותן שירות לחברות מים וחשמל, אני מכיר בערכה של השמרנות ומתעקש על עדכון ידני בלבד כאשר יש בסביבה מי שיודעים ומסוגלים לטפל בסיטואציות בלתי-צפויות, אם וכאשר יש צורך.
שונות
אם חשבתם שמערכת SysV, כלומר הספריה בה נמצאת כל מערכת האתחול להפעלה ולהפסקת שירותי המערכת וספריות הRunlevel הנילוות, טובה יותר מה- autoexec.bat המשוכלל שהוא שיטת האתחול המסורתית של מערכות המבוססות על מודל BSD, אז הנה החדשות. גם המפתחים של FreeBSD חושבים כמוכם. מאז גירסה 5.0 הם שיכללו את המערכת, אשר כיום כבר מפעילה ומפסיקה שירותי מערכת בדיוק כמו SysV. הם עדיין לא משתמשים בRunlevels, כפי שמכיר כל מי שהשתמש ברד האט או סוזה, אבל גם זה יגיע לדעתי.
רישוי
מערכות BSD הן חינמיות בהגדרה. המפתחים מאמינים ברעיון החופש של התוכנה, וBSD נחשבת מתירנית יותר ברישוי שלה מאשר הGPL והיא קרובה יותר ברוחה לLGPL. המעסיק הקודם שלי לדוגמה, היה מעוניין להשתמש בקוד פתוח בתוך מוצר מסחרי שהחברה פיתחה, אבל לא רצה לשחרר את קוד המקור של המוצר שלו. מסיבה זו בחרנו לעבוד אך ורק עם תוכנות קוד פתוח בעלות רישוי LGPL ו-BSD בלבד, מאחר ואלו אינם מחייבות לחלוק את הקוד בו שולב הקוד הפתוח, שבמקרה זה הוא מקור פרנסתה של החברה. גם בקוד הפתוח יש רמות שונות של חופש, ולא הכל שחור-לבן.
למרות זאת, בעץ הפורטים של FreeBSD יש את כל התוכנות של פרוייקט GNU, ורוב התוכנות שזה מקורן נושאות רישיון GPL. התקנה של Java למשל, המופצת עם רישיון SCSL של Sun, מחייבת להציג למשתמש הסכם שימוש והורדה ידנית (הפורט היחיד שנוהג כך). לגבי השאר, זה תלוי, אבל אפשר למצא בFreeBSD את כל מה שיש בכל מערכת לינוקס מודרנית.
קישורים ומידע נוסף
מדריך FreeBSD Handbook
מערכת ההפעלה OpenBSD היא הוריאנט המבוצר, אשר לדברי מומחים היא בין מערכות היוניקס המוקשחות ביותר בנמצא (ולכן היא גם משמשת בסיס לפיירוול למשל). היתרון הזה הוא גם חיסרון, מפני שהספרטניות שלה מקשה על הפיכתה למכונה רב-תכליתית, כפי שמקובל במערכות הפעלה מודרניות. כלומר, אין מה לדבר על סביבת עבודה גרפית.
לעומתה, מערכת ההפעלה NetBSD מתאפיינת בפורטביליות, והיא הוסבה עד כה לכ-54 פלטפורמות ... והיד עוד נטויה. סביר להניח שNetBSD תרוץ על כל חומרה שתרצו להתקין אותה בה. FreeBSD היא הטוב מבין כל העולמות. כל היתרונות של עולם הBSD, מלבד הפורטביליות של NetBSD, ביחד עם כל הצעצועים של Linux. בסקירה התייחס לFreeBSD בלבד.
כל מה שרץ בלינוקס, ירוץ גם על FreeBSD. יש יוצאים מן הכלל, אבל מעט מאוד. בתור מי שעובד עם FreeBSD החל בגירסה 3.3 וכמשתמש תובעני למדי, עדיין לא נתקלתי במשהו שיכולתי לעשות בלינוקס אבל לא בBSD. היא גם יודעת להריץ תוכנות שהודרו עבור לינוקס בלינוקס עצמה, ולפעמים היא עושה את זה טוב יותר מבחינת ביצועים.
כמו לינוקס, גם FreeBSD עטופה שכבת יישומים שמקורם בפרוייקט GNU, או פרוייקטים חופשיים וחינמיים אחרים. בעוד שבלינוקס השם "לינוקס" עצמו מתייחס לקרנל, ואילו ה"הפצה" היא הפרוייקט שאורז את לינוקס עם היישומים, מפתחי FreeBSD אחראים על הקרנל וחלק לא מבוטל של תוכנות המערכת עצמן. הפרוייקט הוא שמתחזק את גלעין תוכנות המערכת, למרות שניתן גם להשתמש במקבילות שלהן בפרוייקט GNU.
כמו לינוקס, גם לFreeBSD יש גירסה "טבעית" משלה לארכיטקטורת x86 של אינטל, ולא מדובר בהיסב כמו גירסאות סולאריס לארכיטקטורה זו. FreeBSD תומכת במגוון רחב מאוד של טכנולוגיות מודרניות "מהקופסא". למשל, Software RAID שמזכיר את היכולות של Veritas בתצורות דומות. היא גם מספקת תמיכה בריבוי מעבדים, מבחר של שלוש סויטות פירוול בעלות יכולות שונות, יכולות Packetsahping וגם כמה "חיות" שאין באף מערכת הפעלה אחרת, כמו Jails.
בנוסף, היא תומכת גם בתקשורת WiFi, פרוטוקול IPv6 וגם בהתקני Bluetooth (למרות שלא בדקתי בעצמי). למרות שהתמיכה שלה בחומרה צנועה מזו של לינוקס, ההבדל לא משמעותי במיוחד והיא מסוגלת לזהות כמעט כל חומרת מיינסטרים.
התקנה
בשימוש אופייני עדיף להתחיל עם מערכת בסיס שמישה ולבנות ממנה נדבך על נדבך לפי הצורך, במקום להתקין מפלצת של 3 ג"ב עמוסה בדברים שאת חלקם לבטח איננו צריכים. גם על פי תפיסת אבטחת מידע בסיסית, תוכנות ללא שימוש הן בגדר חורי אבטחה מיותרים. כמו לכל הפצת לינוקס מקבילה, יש גם גירסה של 5 או 6 דיסקים.
מי שלא רק אוהב את "חוד התער", אלא אף נוהג לרוקן קופסת תערים לקערת הקורנפלקס שלו כל בוקר, יש גם 'make world'. אלו שבכלל מוותרים על הקורנפלקס, יכולים לנסות 'make universe'. הפקודה 'make buildworld' מהדרת את כל התוכנות של מערכת ההפעלה (למעט ה-Ports) מחדש. הפקודה 'make installworld' מתקינה את כל התוכנות שהודרו על ידי הפקודה הראשונה.הפקודה 'make world' מבצעת את שתי הפעולות בזו אחר זו.
האמיצים במיוחד עושים את זה באופן אוטומאטי מידי כמה ימים. בדיוק באותו האופן, את הקרנל מקמפלים עם הפקודה 'make buildkernel' ו-'make installkernel', או make kernel בקיצור. הפקודה make universe מבצעת world ו-kernel בו זמנית ... לא, עדיין לא יצא לי לבדוק את זה בעצמי.
ניהול תוכנה
לFreeBSD יש את אחת ממערכות ניהול התוכנה הנוחות, הקלות והבריאות ביותר שאפשר למצא כיום, היא מערכת ה-Ports. מדובר בעץ ענק ובו תיקייה עבור כל תוכנה בפהצה המלאה, לפי קטגוריות (נושאים). יש הרבה מאוד תיקיות כאלה, ובכל אחת מהן נמצא קובץ makefile קטן שמספק את מידע המתאר אילו קבצים יש להוריד, מאיפה להוריד אותם, איך להדר אותם, לאן להתקינם ואילו חבילות תוכנה אחרות דרושות לפני כן. כל עוד המשתמש לא נכנס לתיקייה ומפעיל את הקובץ, היא לא תופסת מקום בדיסק. העץ הוא למעשה ה"אינדקס" של ספריית התוכנה הוירטואלית.
לאחר התקנה ראשונית, מומלץ להתקין דבר ראשון פורט בשם 'cvsup-no-gui': כלי לעידכון עץ הפורטים עצמו. פעולה זו תבטיח שכל התוכנות שיותקנו מנקודה זו ואילך יהיו תמיד בגירסאותיהן העדכניות ביותר.
כדי להתקין את KDE למשל, המשתמש נכנס לתיקייה usr/ports/x11/kde3/ ומפעיל את הפקודה make' 'install. תחילה יורדו כל הקבצים הדרושים, יקומפלו, ואם יסתבר שיש צורך בתוכנות נוספות, המערכת תוריד אותן באופן אוטומטי, תהדר ותתקין בכוחות עצמה כחלק מהתהליך. אם תוסיפו את הפרמטר clean לשורת הפקודה, אם היא גם תנקה אחריה. פשוט, גאוני ויציב. את עץ התיקיות אפשר ורצוי לעדכן מדי לילה באמצעות cron.
הגירסה שמגיעה על גבי 6 דיסקים מכילה אוסף של יישומים בדומה להפצות הלינוקס הסטנדרטיות. במידה ומתקינים מגירסת מיני, ומתקינים KDE או GNOME באמצעות מנגנון ה-Ports, תתקבל תמיד הגירסה העדכנית ביותר שיש.
בגירסת המיני אפשר למצא סט POSIX מלא, עם tcsh אך ללא bash. מי שרוצים bash יצטרכו להתקינו באמצעות מערכת ה-ports. אפשר למצא כאן גם את עורכי הטקסט vi ו-ed, אבל לא את pico. יש מהדר gcc 3.4 וכן perl, sendmail, openssh וisc-bind9. יש גם סוויטות RAID כמו vinum ו-gvinum, כלים לניהול שלושת הפיירולים של הקרנל וכלי שליטה למנגנון ה-Jails.
כאמור גירסאות הports מתוחזקות בנפרד ממערכת ההפעלה ובדרך כלל ברמה גבוהה מאוד, אבל האחריות על הבדיקה מוטלת על מתחזקי הפורטים ולא על הקבוצה שאחראית על מערכת ההפעלה עצמה. חשוב להבין לכן, שאם תוכנה מסויימת בעץ הפורטים איננה תקינה, אזי הבעיה איננה במערכת ההפעלה. זה קורה, אבל נדיר למדי.
עדכון התוכנה מתבצע כמעט תמיד מקוד מקור, אלא אם כן מדובר בפורט של תוכנה שאיננה קוד פתוח. ניתן לעדכן את המערכת עם cvsup ולרענן את עץ הפורטים, או עץ תוכנות המערכת והקרנל, או חלקים מהן. את עץ הפורטים (ה"אינדקס" של ספריית התוכנות הוירטואלית אותן יש ביכולתנו להתקין) נהוג לעדכן מדי לילה. portupdate כמו גם תוכנות דומות, מסוגלת לעדכן תוכנות שכבר מותקנות, לפי רשימה הניתנת לה מראש.
היא תריץ make install clean, עבור תוכנות אלו מדי לילה, ואם היה עדכון ב"אינדקס", היא תוריד את הגירסה החדשה, תהדר אותה במקום ותתקין אותה עוד לפני שתספיקו לקבל את עיתון הבוקר שלכם.
כאשר יש עדכון משמעותי בגירסה, החלפת סיפרה עיקרית למשל, העדכון יתבצע בדרך כלל בפורט נפרד. עדכון אוטומטי איננו מומלץ בסביבת ייצור ובודאי שלא במערכות קריטיות. בתור מי שנותן שירות לחברות מים וחשמל, אני מכיר בערכה של השמרנות ומתעקש על עדכון ידני בלבד כאשר יש בסביבה מי שיודעים ומסוגלים לטפל בסיטואציות בלתי-צפויות, אם וכאשר יש צורך.
שונות
אם חשבתם שמערכת SysV, כלומר הספריה בה נמצאת כל מערכת האתחול להפעלה ולהפסקת שירותי המערכת וספריות הRunlevel הנילוות, טובה יותר מה- autoexec.bat המשוכלל שהוא שיטת האתחול המסורתית של מערכות המבוססות על מודל BSD, אז הנה החדשות. גם המפתחים של FreeBSD חושבים כמוכם. מאז גירסה 5.0 הם שיכללו את המערכת, אשר כיום כבר מפעילה ומפסיקה שירותי מערכת בדיוק כמו SysV. הם עדיין לא משתמשים בRunlevels, כפי שמכיר כל מי שהשתמש ברד האט או סוזה, אבל גם זה יגיע לדעתי.
רישוי
מערכות BSD הן חינמיות בהגדרה. המפתחים מאמינים ברעיון החופש של התוכנה, וBSD נחשבת מתירנית יותר ברישוי שלה מאשר הGPL והיא קרובה יותר ברוחה לLGPL. המעסיק הקודם שלי לדוגמה, היה מעוניין להשתמש בקוד פתוח בתוך מוצר מסחרי שהחברה פיתחה, אבל לא רצה לשחרר את קוד המקור של המוצר שלו. מסיבה זו בחרנו לעבוד אך ורק עם תוכנות קוד פתוח בעלות רישוי LGPL ו-BSD בלבד, מאחר ואלו אינם מחייבות לחלוק את הקוד בו שולב הקוד הפתוח, שבמקרה זה הוא מקור פרנסתה של החברה. גם בקוד הפתוח יש רמות שונות של חופש, ולא הכל שחור-לבן.
למרות זאת, בעץ הפורטים של FreeBSD יש את כל התוכנות של פרוייקט GNU, ורוב התוכנות שזה מקורן נושאות רישיון GPL. התקנה של Java למשל, המופצת עם רישיון SCSL של Sun, מחייבת להציג למשתמש הסכם שימוש והורדה ידנית (הפורט היחיד שנוהג כך). לגבי השאר, זה תלוי, אבל אפשר למצא בFreeBSD את כל מה שיש בכל מערכת לינוקס מודרנית.
קישורים ומידע נוסף
מדריך FreeBSD Handbook