מה ההבדל בין הפצות לינוקס?
-
@nigun
(אני לא בטוח שכל מה שאני כותב הוא מדוייק ב-100 אחוז אבל כך אני רואה את התמונה)לפני שנסביר את החילוקים בין הפצות השונות, בא נדבר על הנושא של "מה זה לינוקס? מה זה GNU? מה תורם ההפצה ל-Linux/GNU?"
מה זה לינוקס?
כפי שמן הסתם כבר ידוע לך, לינוקס הינו ליבת המערכת. הקרנל (Kernel) בלע"ז.
הקרנל לא עושה כלום.
כלומר, כל מציאותו של הקרנל הוא לשרת את ה-userland. ה-userland הינו כל התהליכים שרצים על המחשב. הקרנל אין לו שום תכלית חוץ מלשרת את התהליכים האלו.
לא קיים מחשב "לינוקס" טהור. כי אם אין תהליכים, הקרנל נכנס לפניקה (kernel panic זה המקביל של מסך כחול של ווינדוס)מה זה GNU?
GNU הינו פרוייקט קוד פתוח שתורם חלק גדול של ה-userland של הפצות לינוקס רגילים.
לדוגמא, הספרייה הסטנדרטית של שפת C, מערכת כלים עבור דיבוג וקימפול של כמה שפות, shell סטנדרטי, חבילה שנקראת coreutils שכולל כל הכלים הבסיסיים שמערכת מבוססת UNIX אמורה להכיל... ועוד ועוד...מה תורם ההפצה ל-Linux/GNU?
אבל אם נשלב קרנל של לינוקס עם shell ו-coreutils עדיין לא קיבלנו מערכת שעובדת.
מה חסר? נראה בקטעים הבאים.-
כאשר הקרנל עולה, הוא מחפש בינארי בשם init. הבינארי הזאת יהיה הקוד שירוץ כתהליך מספר 1. לתהליך הזאת יש כמה מטלות חשובות (ע"ע איניט ו-init). ביניהם, להריץ את כל שאר התהליכים החל משירותי מערכת עד ל-shell (גרפי או אחר).
אחד מההבדלים הגדולים בין הפצות הוא איך הם ממשים את תהליך init.
כהיום תהליך ה-init הכי פופולארי הוא systemd, אבל יש המון פולמוסים סביבו, (ביניהם, על איזה חלקים של המערכת אמורה ה-init לשלוט), וזה כמובן משריץ עוד ועוד הפצות...
(מערכת הלינוקס הכי פשוטה, אולי יכולה להיות מערכת שתהליך מספר 1 (PID 1) הינו ה-shell בעצמו, אבל זה לא יהיה מערכת שימושי ביותר) -
נגיד שיש לנו מערכת init ויש לנו coreutils ו-shell, מה עוד חסר?
חסרים כמה וכמה שירותי מערכת נחוצים.
לדוגמא, cron לתזמון משימות, שירות שמזהה כוננים שמגיעים ויוצאים ומעלה אותם בהתאם, שירות שמזהה חיבורי רשת זמינים ופועל בהתאם, שירות שמזהה חומרה שמתחברת או מתנתקת ופועל בהתאם, ועוד...
לפעמים יש כמה מימושים של שירותים אלו. כל הפצה מחליטה איזה מהם הוא הכי מתאים לפי קווי היסוד והייעוד של ההפצה -
כל הפצה מביאה דרך לנהל הוספה והסרה של תוכנות. יש הפצות שמקמפלים בשבילך את התוכנות ומנהלים אוצרות (repositories) של תוכנות מקומפלות. ויש שמנהלים repositories של נוסחאות שאפשר להריץ להרדה וקימפול והתקנה אוטומטית של תוכנות.
כל הפצה מחליטה על -- מערכת לניהול הוספה/הסרה/מציאת ופתרון תלויות (dependencies)
- מדיניות לגבי איזה תוכנות הם מציעים
- מדיניות לגבי מבנה התקייות של התוכנות
- עוד מדיניות, (האם ואיפה התיעוד ימוקם במערכת הקבצים, מבנה קבצי התצורה ואיפה ימוקמו, ועוד ועוד)
-
מה עוד חסר?
- מבנה מערכת הקבצים לא בא למציאות מעצמה. כל הפצה מחליטה על מדיניות שונות בנוגע למבנה מערכת הקבצים.
- מעטפות גרפיות (graphical shells) קיימים רבים כחול הים. כל הפצה מציעה אפס, אחד, או כמה מעטפות גרפיות
עכשיו להפצות השונות שקיימות:
בגדול אפשר לחלק את ההפצות ל-3 קטגוריות- Debian ואביזרייהו
- Redhat ואביזרייהו
- כל השאר
Debian - הוא האבא (והסבא וסבא רבה...) של רוב ההפצות כהיום.
Ubuntu הוא בן של Debian. ההבדליים הם בעיקר ש-Debian הוא יותר מבוסס, ישן, מנוסה, ובסיסי. משא"כ Ubuntu מביאה יותר תוכנות ותכונות מהקופסא, וגירסאות ותכונות יותר מתקדמות אבל פחות מנוסים ומבוססים. אבל זה בנוי על הליבה של Debian.Redhat - הוא השם הגדול השני בתחום, זה כולל Fedora ו-Centos ג"כ. ועוד בנים ובני בנים.
כל השאר - כולל הפצות שלא מבוססות על אף אחד מהנ"ל. כולל slackware, arch, ועוד.
אם הייתי רוצה לכתוב את כל ההבדלים בין ההפצות, יכלה הזמן והם לא יכלו. אבל בגדול אפשר לחלק את ההבדלים לכמה קטגוריות.
-
ההבדלים בין שלוש ההפצות הראשיות שהזכרתי, הם ההבדלים הכי גדולים. הם מתבטאים כמעט בכל התחומים שהזכרתי בקטע של "מה תורמת ההפצה?". כל הפצה מביאה מדיניות שונה בנוגע לכל תחומים אלו.
- מתחת לזה יש תתי הפצות שבנויות על אחד מההפצות הראשיות אבל יש להם מחלוקת אידיאילוגית בנוגע לאחד מהדברים הבסיסיים. לדוגמה הם מבוססים על Debian אבל הם אוחזים ש-systemd לא טוב.
-
יש הפצות שבנויים לגמרי על הפצה קיימת אבל הם מותאמים לצורך ספציפי או לאוכלוסיה ספציפית.
-
יש כמה הפצות שהליבה שלהם בנוי על אחד מההפצות הראשיות, אבל הם מביאים סביבה גראפית יותר טובה/נוחה/יפה לדעתם.
כל זה בלי לדבר על מערכות כמו אנדרויד ו-chromeos שלקחו רק את הקרנל וכל השאר שונה הרבה ממערכת לינוקס רגילה. ובלי לדבר מערכות אחרות מבוססי UNIX אבל עם קרנל שונה.
-
-