ההיסטוריה של Unix ו-Linux: מ-1969 ועד היום
גלו כיצד Unix הפכה ל-Linux דרך המעבדות של Bell, הסכמי הרישוי של AT&T, פיתוח BSD והתביעה המשפטית מ-1992. הסבר על המעבר של עולם השרתים למערכות קוד פתוח דמויות Unix.
ההיסטוריה של Unix ושל Linux, בקצרה
ההיסטוריה של Unix ושל Linux היא ויכוח ארוך על השאלה למי מותר להחזיק בקוד המקור. Unix החלה ב-Bell Labs בשנת 1969. Linux החלה בהלסינקי בשנת 1991 ואינה חולקת דבר מאותו קוד מקורי. מה שעבר ביניהן הוא תכנון וקבוצה של ממשקים מפורסמים: קבצים, תהליכים, צינורות (pipes), ומעטפת (shell) שמחברת תוכניות קטנות זו לזו. Unix התפשטה באוניברסיטאות במהלך שנות ה-70, כיוון שהסדר הגבלים עסקיים משנת 1956 אסר על AT&T (American Telephone and Telegraph) למכור תוכנה, ולכן Bell Labs רישיינה את קוד המקור במחיר זול. Unix הגיעה בסופו של דבר לכל מקום מבלי להיות שייכת לאיש מחוץ ל-AT&T, ומאבקי הרישוי שבאו לאחר מכן הכריעו איזו מערכת חופשית דמוית-Unix תמצא את דרכה לארון השרתים שלכם.
1969: ה-PDP-7 המיותר, והרעיונות שנשארו
מעבדות Bell פרשו מפרויקט Multics בשנת 1969. Multics (שירות מידע ומחשוב מרובה-ערוצים) הייתה מערכת זמן-שיתוף גדולה שנבנתה בשיתוף עם MIT ו-General Electric, והמעבדות החליטו שהיא גדולה מדי מכדי להשלים אותה. Ken Thompson שמר את הרעיונות שאהב וזנח את השאר, וכתב מערכת זמן-שיתוף קטנה על מחשב מיני מסוג PDP-7 שנזרק. Dennis Ritchie הצטרף אליו. השם Unix היה בדיחה על חשבונה של Multics.
בשנת 1970 המערכת עברה ל-PDP-11 שמעבדות Bell רכשו עבור הקלדניות של מחלקת הפטנטים, כיוון שהיה קל יותר לממן כלי לעיבוד טקסט מאשר מערכת הפעלה. למכונה ההיא היו 24 KB של זיכרון ליבה, שחולקו בין המערכת לבין תוכניות המשתמש. תאונת המימון הזו היא הסיבה לכך שהמדריך הראשון של Unix, מתאריך נובמבר 1971, היה אוסף של מסמכים מעוצבים, וזו הסיבה שאתם עדיין מקלידים man 5 crontab. מספרי הסעיפים במדריך ההוא הם מספרי הסעיפים במדריך שלכם.
שני שינויים הפכו את התכנון לקבוע. ה-pipes הגיעו בגרסה 3 בשנת 1973, כיוון ש-Doug McIlroy טען במשך שנים שצריך להיות אפשר לחבר תוכניות זו לזו, ו-Thompson הוסיף את האופרטור | כך שהפלט של תוכנית אחת הפך לקלט של התוכנית הבאה. לאחר מכן גרסה 4, מאוחר יותר ב-1973, נכתבה מחדש ב-C. מערכת הפעלה שנכתבה בשפה ניידת יכולה לעבור לחומרה שלא נכתבה עבורה, וזו הסיבה ש-Unix האריכה ימים יותר מכל מכונה שעליה היא התחילה.
מדוע Unix התפשטה: ל-AT&T לא הותר למכור אותה
צו הסכמה משנת 1956 יישב תביעה הגבלים עסקיים נגד AT&T. AT&T שמרה על המונופול שלה בתחום הטלפוניה וקיבלה על עצמה מגבלה בתמורה: היא תישאר מחוץ לעסקים שאינם קשורים לתקשורת. תוכנה הייתה אחד מאותם עסקים. לכן, כאשר אוניברסיטאות ביקשו את Unix, מעבדות בל (Bell Labs) לא יכלו למכור אותה כמוצר. הן רישנו את קוד המקור תמורת תשלום סמלי, ללא תמיכה וללא אחריות.
ההשפעה הייתה רחבה, ולא כזו ש-AT&T תכננה. גרסת Sixth Edition Unix, ששוחררה ב-1975, הגיעה למאות מחלקות למדעי המחשב עם קוד מקור מלא. ג'ון ליונס (John Lions) מאוניברסיטת ניו סאות' ויילס הדפיס את קוד המקור של ה-kernel עם פירוש שורה-אחר-שורה ולימד לפיו. דור שלם למד כיצד מערכת הפעלה עובדת על ידי קריאת מערכת אמיתית.
לאחר מכן הרישיון השתנה. הרישיון של Seventh Edition משנת 1979 אסר על שימוש בקוד המקור בכיתות לימוד, ולכן הפירוש של ליונס הופץ כצילומים של צילומים. זהו דפוס הסיפור כולו. Unix הייתה בכל מקום ובו-זמנית לא חופשית, כך שכל שיפור שמישהו ביצע היה שיפור לקוד קנייני של מישהו אחר.
Berkeley: החלקים של Unix שאתם באמת מקלידים
Ken Thompson בילה את שנת הלימודים 1975 עד 1976 באוניברסיטת קליפורניה בברקלי, והותיר אחריו קבוצת Unix פעילה מאוד. קבוצת המחקר למערכות מחשב (CSRG) של ברקלי הפיצה קלטות עם שיפורים מקומיים, וקלטות אלו הפכו ל-BSD, ה-Berkeley Software Distribution. Bill Joy כתב חלק גדול מהעבודה המוקדמת: 1BSD ב-1978, ולאחר מכן 2BSD ב-1979, שכללה את העורך vi ואת ה-C shell.
ה-C shell היא המקור ל-!! ול-!$. Bash ירשה את התחביר הזה, וזו הסיבה ש-הרחבת ההיסטוריה של bash עדיין מפתיעה אנשים שמקלידים סימן קריאה בתוך מרכאות כפולות גם ארבעים ומשהו שנים לאחר מכן.
לאחר מכן, DARPA (הסוכנות למחקרי הגנה מתקדמים של ארה"ב) שילמה לברקלי כדי להטמיע את פרוטוקולי האינטרנט החדשים בתוך Unix. גרסת 4.2BSD, ששוחררה באוגוסט 1983, כללה את TCP/IP (פרוטוקול בקרת תעבורה על גבי פרוטוקול אינטרנט) ואת ממשק התכנות ליישומי socket. כל שירות רשת בשרת שלכם עדיין קורא ל-socket(), bind(), listen() ו-accept() לפי סדר זה, כיוון שברקלי בחרה בשמות אלו ב-1983.
פרט אחד הכריע את העשור הבא. קלטת BSD לא הייתה מערכת שלמה. היא הייתה אוסף של תוספות ל-Unix של AT&T, והיה צורך ברישיון מקור תקף של AT&T כדי להריץ אותה כחוק. ברקלי החליפה את החלקים של AT&T בקוד משלה לאורך מספר שנים, קובץ אחר קובץ. השאלה האם החלפה זו הייתה אכן מלאה היא זו שהגיעה מאוחר יותר לבית המשפט.
1984: הפירוק ומלחמות ה-Unix
מערכת ה-Bell System פורקה ב-1 בינואר 1984, וצו ההסכמה שמנע מ-AT&T לעסוק בתחום התוכנה בוטל יחד איתה. כעת יכלה AT&T למכור את Unix כמוצר, וכך עשתה. רישיונות הקוד המקור המסחריים הפכו ליקרים, ו-Unix חדלה מלהיות המוצר הזול שאוניברסיטאות מחלקות לסטודנטים.
הספקים כבר יצרו פיצולים (forks) למערכת. כל חברת תחנות עבודה הפיצה גרסת Unix משלה על גבי החומרה שלה, כך שעד סוף שנות ה-80, תוכנית שנכתבה עבור מערכת אחת דרשה התאמה (porting) למערכת הבאה. התעשייה התפצלה לשני מחנות סטנדרטים ב-1988: ה-Open Software Foundation מצד אחד ו-Unix International מהצד השני. הם בילו שנים בהפצת מערכות שאינן תואמות זו לזו, תוך ויכוחים על השאלה איזו גרסת Unix היא ה"אמיתית".
מתוך הכאוס הזה צמח ה-POSIX (ממשק מערכת הפעלה נייד). התקן IEEE 1003.1 פורסם ב-1988, והוא הגדיר מה מערכת דמוית-Unix חייבת לבצע: קריאות המערכת, התנהגות ה-shell, כלי העזר הסטנדרטיים וממשקי ספריית ה-C. חשיבותו של תקן זה גדולה מכפי שהיא נשמעת, שכן תקן הוא מפרט טכני שאינו כפוף לאף רישיון. שלוש שנים לאחר מכן, סטודנט כתב kernel בהתבסס על מסמכים אלו.
Minix, והפער שהותירה אחריה
אנדרו טננבאום (Andrew Tanenbaum) הפיץ את Minix בשנת 1987 כמערכת לימודית עבור ספר הלימוד שלו בנושא מערכות הפעלה. Minix הייתה מערכת קטנה דמוית Unix, קוד המקור שלה צורף לספר, והיא רצה על מחשבים אישיים זולים שהיו בבעלות הסטודנטים. היה מותר ללמוד אותה בכיתה, בניגוד ל-Seventh Edition Unix, שלא ניתן היה לעשות זאת עמה עוד.
Minix נותרה קטנה בכוונה, כיוון שהיה עליה להיות מוסברת בתוך ספר, וטננבאום דחה טלאים (patches) שהיו הופכים אותה למערכת ייצור. גם הרישיון לא היה חופשי: רכשת את הספר, והפצה מחדש של גרסת Minix ששינית לא הייתה החלטה שבידך לקבל. כך, עד שנת 1991, סטודנט יכול היה לקרוא ליבה (kernel) עובדת דמוית Unix, אך לא יכול היה לבנות עליה דבר בעל קיימות.
לפרויקט GNU היה הכל חוץ מליבה (kernel)
ריצ'רד סטולמן הכריז על פרויקט GNU בספטמבר 1983, במטרה ליצור מערכת הפעלה חופשית מלאה דמוית Unix. עד שנת 1991, GNU כבר ייצר את רוב הרכיבים המקיפים ליבה: המהדר GCC, ספריית ה-C של GNU, כלי הבינאריים, ו-bash, ה-shell שכתב בריאן פוקס ב-1989 וזה שבו השרת שלך עדיין מפעיל אותך כברירת מחדל. הליבה של GNU, שנקראת Hurd, הייתה הרכיב שהתעכב שוב ושוב.
הגרסה השנייה של ה-GNU General Public License פורסמה ביוני 1991. הכלל שלה קצר. מותר לך להשתמש בקוד ולשנות אותו, ואם אתה מפיץ את התוצאה, עליך להפיץ את קוד המקור תחת אותם תנאים. הכלל הזה הופך לציר המרכזי של הסיפור הזה בעוד שני סעיפים.
אוגוסט 1991: הפוסט ב-comp.os.minix
ב-25 באוגוסט 1991 פרסם סטודנט מהלסינקי פוסט בקבוצת ה-Usenet comp.os.minix:
Hello everybody out there using minix -
I'm doing a (free) operating system (just a hobby, won't be big and
professional like gnu) for 386(486) AT clones.גרסה 0.01 שוחררה בספטמבר 1991. היא לא חלקה קוד עם Unix וגם לא עם Minix. זה היה kernel חדש עבור ה-386, שפותח על מכונת Minix, נכתב מול ממשקי POSIX, ושולב עם כלי ה-GNU שכבר היו קיימים. בינואר 1992 אמר Tanenbaum ל-Torvalds ש-monolithic kernel הוא תכנון מיושן. הייתה לו טענה עניינית לגבי התכנון, אך Torvalds ענה על שאלה אחרת: מה מריץ היטב את המחשב הזול היחיד שבבעלות סטודנט.
בפברואר 1992, גרסה 0.12 קיבלה רישיון מחדש תחת ה-GPL. מאז כינה זאת Torvalds כהחלטה הטובה ביותר שלו. הרישיון המקורי של Linux אסר על כל העברת כספים, דבר שהיה חוסם את מפיצי ה-CD ואת חברות התמיכה שבאו לאחר מכן. ה-GPL אפשר מסחר תוך חיוב של כל שינוי מופץ לחזור לאותו עץ משותף.
התביעה המשפטית: אפריל 1992 עד פברואר 1994
ברקלי הפיצה את Networking Release 2 (Net/2) ביוני 1991: כמעט מערכת BSD מלאה, שממנה הוסרו הקבצים שמקורם ב-AT&T. שישה קובצי ליבה היו חסרים. ביל ולין ג'וליץ כתבו תחליפים והפיצו את 386BSD 0.0 במרץ 1992, ולאחר מכן את 386BSD 0.1 ב-14 ביולי 1992. מערכת BSD חופשית, מלאה ובשלה עבור ה-386 הייתה קיימת כעת, בדיוק באותו זמן שבו Linux הייתה עדיין ליבת תחביב. חברת Berkeley Software Design, Inc. (BSDi) מכרה גרסה מסחרית נתמכת בשם BSD/386, ופרסמה אותה עם מספר הטלפון 1-800-ITS-UNIX.
באפריל 1992, Unix System Laboratories (USL), חברת הבת של AT&T שהחזיקה אז ב-Unix, תבעה את BSDi בבית משפט פדרלי בניו ג'רזי בגין סודות מסחריים וסימן המסחר של Unix. התביעה תוקנה מאוחר יותר כדי לכלול את חבר הנאמנים של אוניברסיטת קליפורניה. האוניברסיטה הגישה תביעה נגדית בקליפורניה ב-1993, בטענה ש-AT&T הפיצה קוד של ברקלי בתוך System V ללא מתן הקרדיט שדרש הרישיון שלה עצמה.
הליבה המשפטית התפרקה ב-1993. השופט דיקינסון דבבויז סירב להעניק ל-USL צו מניעה זמני, מתוך תפיסה שתביעת זכויות היוצרים של USL על קוד ה-32V הישן הייתה כנראה לא תקפה, כיוון ש-AT&T הפיצה את הקוד הזה במשך שנים ללא הודעות זכויות יוצרים. נובל (Novell) רכשה את USL מ-AT&T באמצע 1993, והנהלת נובל רצתה לסיים את המאבק. התיק יושב בפברואר 1994. מתוך כ-18,000 קבצים בהפצת ברקלי, שלושה הוסרו וכ-70 קיבלו הודעות זכויות יוצרים של USL.
ברקלי הפיצה את 4.4BSD-Lite ביוני 1994 והיא הייתה נקייה מבחינה משפטית. FreeBSD ו-NetBSD, שתיהן נוסדו ב-1993 על בסיס קוד ה-Net/2 השנוי במחלוקת, נאלצו לאחר מכן לבנות מחדש את המערכות שלהן על הבסיס החדש, מה שגזל את רוב שארית שנת 1994. גרסה 1.0 של Linux הופצה במרץ 1994, בעיצומה של אותה בנייה מחדש.
מדוע Linux השתלט על עולם השרתים ולא BSD?
התביעה המשפטית היא התשובה המקובלת, והיא אכן חלק מהתשובה. בין אפריל 1992 לפברואר 1994, כל מי שבחר ב-Unix חופשי עבור מוצר נאלץ לשקול תביעה פעילה מצד עורכי הדין של AT&T מול קרנל של סטודנט פיני שאף אחד לא יכול היה לתבוע. זה היה בדיוק חלון הזמנים שבו ה-web הגיע ובו הופיעו הפצות ה-Linux הראשונות: Slackware ביולי 1993, Debian באוגוסט 1993, ולאחר מכן Red Hat ו-SUSE.
ארבעה גורמים נוספים היו חשובים לא פחות מההליך המשפטי:
- חומרה. Linux כוון למחשבי PC מבוססי 386 מהשורה הראשונה של הקוד שלו, וזו החומרה שהפכה לזולה. מרכז הכובד של BSD היה ה-VAX ותחנות עבודה, וההסבה (port) ל-386 הייתה מאמץ חיצוני של שני אנשים בלבד.
- הרישיון. ה-GPL מחייב חברה שמפיצה קרנל שעבר שינויים לפרסם את השינויים שלה, ולכן עבודת הספקים זרמה בחזרה לעץ אחד. רישיון ה-BSD מאפשר לחברה לשמור את השינויים שלה לעצמה, וחברות אכן עשו זאת.
- מודל הפיתוח. Torvalds מיזג טלאים (patches) מאנשים זרים במהירות ושחרר גרסאות ללא הרף. 386BSD שוחרר לאט מספיק כדי שהמשתמשים שלו יפצלו אותו פעמיים ב-1993, ל-NetBSD ול-FreeBSD, ושוב ל-OpenBSD ב-1995.
- מומנטום. מפתחים הולכים למקום שבו נמצאים מפתחים אחרים, ודרייברים נכתבים עבור המערכת שיש לה הכי הרבה משתמשים.
יש להיות כנים לגבי השאלה הטכנית. ב-1994, BSD הייתה מערכת מוגמרת יותר, עם בסיס קוהרנטי, היסטוריה מתועדת וקוד רשת ש-Linux בילה שנים בניסיון להדביק את הפער מולו. אף אחד לא בחר ב-Linux ב-1994 כי הוא היה טוב יותר. אנשים בחרו בו כי הוא היה זמין, נטול מגבלות משפטיות, רץ על חומרה שהייתה ברשותם, והשתפר מדי שבוע.
מה נשמר ב-BSD, והיכן היא פועלת כיום
פרויקט BSD המשיך להתקיים. מה שהוא איבד היה עמדת ברירת המחדל. העדות הברורה ביותר לכך נמצאת על המכונה שלכם: פרויקט OpenBSD כתב את OpenSSH בשנת 1999, וזהו שרת ה-SSH שנמצא כמעט בכל מערכת Linux שמופצת כיום; זו הסיבה לכך ש-הרגלי מפתחות ה-SSH שכדאי ללמוד זהים בשתי המשפחות.
Netflix מגישה וידאו באמצעות התקני FreeBSD. מערכת ההפעלה Junos, המריצה את הנתבים של Juniper, מבוססת על FreeBSD. תוכנת המערכת של ה-PlayStation היא צאצאית של FreeBSD. מערכות ה-macOS וה-iOS של Apple מכילות קוד BSD ב-kernel ובכל שכבת ה-userland. הרישיון המתירני, שעלה ל-BSD באובדן עץ השרתים המשותף, הטמיע קוד BSD בתוך כמות גדולה של חומרה שמעולם לא מציינת זאת.
אם אתם בוחרים כיום, השאלה היא מעשית ולא היסטורית. השוואה בין Linux ל-FreeBSD כשרת מסתכמת ב-ZFS, ב-jails, בעץ ה-ports, ובמידת ההנחה של תוכנות צד-שלישי ש-Linux נמצאת מתחת למכסה המנוע. FreeBSD 15 כשרת היא מערכת עדכנית ומתוחזקת, ולא מוצג במוזיאון. ו-Linux מול Windows Server היא שאלה נפרדת, שהתשובה עליה תלויה ב-stack היישומים שלכם.
התכנון משנת 1969 שבו אתם משתמשים ב-VPS כיום
כל אחד מהרכיבים האלה ישן יותר מרוב האנשים שמשתמשים בו.
- ה-pipe. הפקודה
who | wc -lסופרת משתמשים מחוברים מכיוון ש-Version 3 Unix משנת 1973 אפשרה לפלט של תוכנית אחת להפוך לקלט של תוכנית אחרת. - סעיפי ה-manual. הפקודות
man 1 lsו-man 5 crontabמשתמשות בשיטת המיספור מהמדריך של נובמבר 1971. - הפיצול במערכת הקבצים. הנתיב
/usrקיים מכיוון שהדיסק הראשי באותו PDP-11 התמלא בשנת 1971, והמפתחים העבירו קבצים לחבילת דיסק שנייה. הפצות מאז ביטלו את הפיצול: הרצתls -ld /binעל Ubuntu 24.04 או Debian 13 תציג קישור סימבולי ל-usr/bin. - קריאות ה-socket. חברת Berkeley כתבה אותן עבור 4.2BSD בשנת 1983, וכל daemon רשת עדיין משתמש בהן.
- תקן POSIX. סקריפט
#!/bin/shשנכתב לפי התקן ירוץ ללא שינוי על Linux, על FreeBSD, על macOS ועל Solaris, מכיוון שהתקן הוא הדבר שכולן הטמיעו.
כאשר אתם שוכרים שרת וירטואלי פרטי ונכנסים אליו, אתם מקלידים בממשק שתוכנן עבור מכונה עם 24 KB זיכרון ומחלקה משפטית לרישום פטנטים. הממשק שרד מכיוון שהוא פורסם, עבר דיונים, עוגן בתקנים, ולאחר מכן מומש מחדש מאפס על ידי אנשים שמעולם לא הורשו לראות את קוד המקור המקורי.
FAQ
האם Linux מכיל קוד מקורי של Unix?
לא. Linus Torvalds כתב את הליבה מאפס החל משנת 1991, תוך התמקדות בממשקי POSIX ולא בקוד המקור של AT&T. הירושה מ־Unix היא תכנונית וממשקית: קבצים, תהליכים, צינורות (pipes) ושמות של קריאות מערכת. גם כלי ה־GNU סביב הליבה נכתבו מאפס, החל משנת 1983. עצמאות זו היא הסיבה לכך שהתביעה המשפטית של AT&T בנוגע לקוד BSD מעולם לא נגעה ב־Linux.
מתי התרחשה התביעה של AT&T נגד BSD, והאם היא חיסלה את BSD?
USL, חברת הבת של AT&T שהחזיקה ב־Unix, תבעה את BSDi באפריל 1992 ובהמשך צירפה את אוניברסיטת קליפורניה כנתבעת. בשנת 1993 סירב השופט להוציא צו מניעה זמני, בקובעו כי טענת זכויות היוצרים על קוד ה־32V הישן ככל הנראה אינה תקפה. Novell רכשה את USL באמצע 1993 והגיעה להסדר בתיק בפברואר 1994, במסגרתו הוסרו שלושה קבצים מתוך כ־18,000, ולכ־70 קבצים נוספו הודעות זכויות יוצרים חדשות. התביעה לא חיסלה את BSD. היא הקפיאה את האימוץ של BSD במהלך השנתיים שבהן העולם בחר לעצמו מערכת Unix חופשית.
מדוע Linux השתלט על שרתים במקום BSD?
ודאות משפטית הייתה סיבה אחת: לאורך 1992 ו-1993, Linux לא נשא עמו תביעה משפטית בעוד BSD נשא תביעה כזו. סיבות נוספות היו התמקדות ב־386 כבר מהיום הראשון, רישיון ה־GPL שחייב החזרת שינויים של ספקים לעץ קוד אחד, ותהליך מיזוג מהיר מספיק כדי לשמר עניין בקרב תורמים בזמן ש־386BSD התפצל לשלושה כיוונים. יתרון טכני לא היה הגורם המכריע, שכן BSD הייתה מערכת בשלה יותר בשנת 1994.
האם עדיין כדאי להריץ FreeBSD כיום?
כן, מסיבות קונקרטיות: ZFS משולב במערכת הבסיס, jails כמודל בידוד בוגר, מערכת בסיס שמפותחת כיחידה אחת קוהרנטית, ותיעוד שנשאר מדויק. המחיר הוא עבודה על תאימות, כיוון שרוב תוכנות השרת של צד שלישי, כלי מכולות (containers) ותמיכת ספקים מניחים שימוש ב־Linux. בחרו ב־FreeBSD כאשר יכולות האחסון והרשת שלה מצדיקות את המאמץ, ולא מתוך נאמנות לשושלת הוותיקה.