ההיסטוריה של Unix ו-Linux: מ-1969 ועד היום
גלו כיצד Unix הפכה ל-Linux דרך המעבדות של Bell, רישוי AT&T, פיתוח BSD והתביעה המשפטית של 1992. הסבר מקיף על המעבר ממערכות קנייניות לעולם הקוד הפתוח בשרתים.
ההיסטוריה של 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 (ראשי תיבות של multiplexed information and computing service) הייתה מערכת זמן-שיתוף גדולה שנבנתה בשיתוף עם MIT ועם General Electric, והמעבדות החליטו שהיא גדולה מכדי להשלים אותה. Ken Thompson שמר את הרעיונות שאהב וזנח את השאר, תוך שהוא כותב מערכת זמן-שיתוף קטנה על מחשב מיני מסוג PDP-7 שנזרק. Dennis Ritchie הצטרף אליו. השם Unix היה בדיחה על חשבונה של Multics.
בשנת 1970 עברה המערכת למחשב PDP-11, שאותו רכשו המעבדות עבור הקלדניות של מחלקת הפטנטים, כיוון שקל היה יותר לממן כלי לעיבוד טקסט מאשר מערכת הפעלה. למכונה ההיא היו 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 לא יכלו למכור אותה כמוצר. הן העניקו רישיון לקוד המקור תמורת תשלום סמלי, ללא תמיכה וללא אחריות.
ההשפעה הייתה רחבה, ולא הייתה זו התוכנית המקורית של AT&T. גרסת Sixth Edition Unix, ששוחררה ב-1975, הגיעה למאות מחלקות למדעי המחשב עם קוד מקור מלא. ג'ון ליונס (John Lions) מאוניברסיטת ניו סאות' ויילס הדפיס את קוד המקור של הליבה עם הערות שורה-אחר-שורה ולימד ממנו. דור שלם למד כיצד מערכת הפעלה עובדת על ידי קריאת מערכת אמיתית.
לאחר מכן הרישיון השתנה. הרישיון של 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 נותרה קטנה במכוון, שכן היה עליה להיות מובנת במסגרת ספר, ו-Tanenbaum דחה טלאים שהיו הופכים אותה למערכת ייצור. הרישיון גם הוא לא היה חופשי: רכשת את הספר, והפצה מחדש של גרסת Minix ששינית לא הייתה נתונה להחלטתך. כך, עד שנת 1991, סטודנט יכול היה לקרוא ליבה (kernel) עובדת דמוית Unix, אך לא יכול היה לבנות עליה דבר בעל קיום מתמשך.
לפרויקט GNU היה הכל חוץ מליבה (kernel)
ריצ'רד סטולמן הכריז על פרויקט GNU בספטמבר 1983, במטרה ליצור מערכת הפעלה חופשית מלאה דמוית Unix. עד שנת 1991, GNU כבר הפיקה את רוב הרכיבים המקיפים ליבה: המהדר GCC, ספריית ה-C של GNU, כלי ה-binary, ו-bash, ה-shell שכתב בריאן פוקס ב-1989 ושבו השרת שלך עדיין מפעיל אותך כברירת מחדל. ליבת GNU, שנקראת Hurd, הייתה הרכיב שהתעכב שוב ושוב.
הגרסה השנייה של הרישיון הציבורי הכללי של GNU (GNU General Public License version 2) פורסמה ביוני 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. התביעה תוקנה מאוחר יותר כדי לכלול את ה-Regents of the University of California. האוניברסיטה הגישה תביעה נגדית בקליפורניה ב-1993, בטענה ש-AT&T הפיצה קוד של ברקלי בתוך System V ללא מתן הקרדיט שדרש הרישיון שלה.
הליבה המשפטית התפרקה ב-1993. השופט דיקינסון דבבויז סירב להעניק ל-USL צו מניעה זמני, מתוך תפיסה שתביעת זכויות היוצרים של USL על קוד ה-32V הישן הייתה כנראה לא תקפה, כיוון ש-AT&T הפיצה את הקוד הזה במשך שנים ללא הודעות זכויות יוצרים. Novell רכשה את USL מ-AT&T באמצע 1993, והנהלת Novell רצתה לסיים את המאבק. התיק יושב בפברואר 1994. מתוך כ-18,000 קבצים בהפצת ברקלי, שלושה הוסרו וכ-70 קיבלו הודעות זכויות יוצרים של USL.
ברקלי הפיצה את 4.4BSD-Lite ביוני 1994 והיא הייתה נקייה מבחינה משפטית. FreeBSD ו-NetBSD, שתיהן נוסדו ב-1993 על בסיס קוד ה-Net/2 השנוי במחלוקת, נאלצו לאחר מכן לבנות מחדש את המערכות שלהן על הבסיס החדש, מה שגזל את רוב שארית שנת 1994. גרסה 1.0 של Linux הופצה במרץ 1994, בעיצומה של אותה בנייה מחדש.
מדוע לינוקס השתלטה על עולם השרתים ולא BSD?
התביעה המשפטית היא התשובה המקובלת, והיא אכן חלק מהתשובה. בין אפריל 1992 לפברואר 1994, כל מי שבחר ב-Unix חופשי עבור מוצר היה צריך לשקול תביעה פעילה מצד עורכי הדין של AT&T מול קרנל של סטודנט פיני שאף אחד לא יכול היה לתבוע. זה היה בדיוק חלון הזמנים שבו הגיע ה-web ובו הופיעו הפצות הלינוקס הראשונות: Slackware ביולי 1993, Debian באוגוסט 1993, ולאחר מכן Red Hat ו-SUSE. חברת Red Hat הפכה את יתרון הפתיחה הזה לסטנדרט מסחרי, ו-המסלול מ-Red Hat Linux ל-CentOS ואז ל-Rocky ו-AlmaLinux מסביר מדוע הפצה שנוסדה ב-1993 עדיין קובעת מה ירוץ על שרתים עסקיים רבים.
ארבעה גורמים נוספים היו חשובים לא פחות מההליך המשפטי:
- חומרה. לינוקס כיוונה למחשבי PC מבוססי 386 מהשורה הראשונה של הקוד שלה, וזו החומרה שהפכה לזולה. מרכז הכובד של BSD היה ה-VAX ותחנות עבודה, וההסבה ל-386 הייתה מאמץ חיצוני של שני אנשים בלבד.
- הרישיון. ה-GPL מחייב חברה שמפיצה קרנל שעבר שינויים לפרסם את השינויים שלה, כך שעבודה של ספקים זרמה חזרה לעץ אחד. רישיון ה-BSD מאפשר לחברה לשמור את השינויים שלה לעצמה, וחברות אכן עשו זאת.
- מודל הפיתוח. Torvalds מיזג טלאים (patches) מזרים במהירות ושחרר גרסאות ללא הרף. מערכת 386BSD שוחררה לאט מספיק כדי שהמשתמשים שלה יפצלו אותה פעמיים ב-1993, ל-NetBSD ול-FreeBSD, ושוב ל-OpenBSD ב-1995.
- מומנטום. מפתחים הולכים למקום שבו נמצאים מפתחים אחרים, ודרייברים נכתבים עבור המערכת שיש לה הכי הרבה משתמשים.
צריך להיות כנים לגבי השאלה הטכנית. ב-1994, BSD הייתה מערכת בשלה יותר, עם בסיס קוהרנטי, היסטוריה מתועדת וקוד רשת שלינוקס השקיעה שנים כדי להדביק את הפער בו. אף אחד לא בחר בלינוקס ב-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 tree, ובמידת ההנחה של תוכנות צד-שלישי ש-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קיים כי דיסק ה-root באותו 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, כיוון שהתקן הוא הדבר שכולן הטמיעו.
ירושה אחת לא שרדה את המסע: רצף ה-boot של סקריפטי ה-shell ש-Linux אימצה מ-System V נעלם כמעט מכל הפצה כיום, ו-הטיעון שהחליף אותו ב-systemd הוא הוויכוח העדכני ביותר על מה שמערכת דמוית-Unix צריכה להיות.
כשאתם שוכרים שרת וירטואלי פרטי ונכנסים אליו, אתם מקלידים בממשק שתוכנן עבור מכונה עם 24 KB של זיכרון ומחלקת פטנטים לשרת. הוא שרד כיוון שהממשק פורסם, עורר ויכוחים, עבר סטנדרטיזציה, ואז מומש מחדש מאפס על ידי אנשים שמעולם לא הורשו לראות את הקוד המקורי.
FAQ
האם Linux מכילה קוד Unix מקורי?
לא. Linus Torvalds כתב את ה-kernel מאפס החל משנת 1991, תוך התמקדות בממשקי POSIX ולא בקוד המקור של AT&T. הירושה מ-Unix היא עיצובית וממשקית בלבד: קבצים, תהליכים, pipes ושמות של system calls. גם כלי ה-GNU סביב ה-kernel נכתבו מאפס, החל משנת 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 התפצלה לשלושה כיוונים. יתרון טכני לא היה הגורם המכריע, שכן ב-1994 BSD הייתה מערכת בשלה יותר.
האם עדיין כדאי להריץ FreeBSD כיום?
כן, מסיבות קונקרטיות: ZFS משולבת במערכת הבסיס, jails כמודל בידוד בוגר, מערכת בסיס שמפותחת כיחידה אחת קוהרנטית, ותיעוד שנשאר מדויק. המחיר הוא עבודה על תאימות, כיוון שרוב תוכנות השרת של צד שלישי, כלי ה-container ותמיכת הספקים מניחים סביבת Linux. בחרו ב-FreeBSD כאשר יכולות האחסון והרשת שלה מצדיקות את המאמץ, ולא מתוך נאמנות לשושלת הוותיקה.