שיעור 08: טרמינל ושירותי רקע¶
**חלק א': מאגר ידע למדריך **
מסמך זה מהווה את Asset A - Instructor Reference עבור שיעור 08. המסמך מכיל תשתית תיאורטית וטכנית עמוקה, מקיפה ומעודכנת עבור כל נושאי השיעור. המסמך מוגדר כ-"Book-Book" לשימוש פנימי של המדריך, תוך שמירה קפדנית על חלוקה ל-80% ליבת macOS ו-20% תיבול ארגוני.
1. מבוא לטרמינל (Terminal)¶
1. High-Level Theory & History¶
ממשק שורת הפקודה (CLI), המיוצג ב-macOS על ידי אפליקציית ה-Terminal, הוא שער הגישה הישיר ביותר לליבת המערכת (Darwin). בעוד שהממשק הגרפי (GUI) של macOS נועד להסתיר מורכבות ולספק חווית משתמש חלקה, אנשי IT ותמיכה חייבים לעקוף מעטפת זו כדי לבצע אבחון מדויק, אוטומציה וניהול מרחוק. היסטורית, הטרמינל וסקריפטים שרצים בו הגיעו לעולם המק ממערכת NeXTSTEP עם השקת Mac OS X 10.0 Cheetah בשנת 2001.
המעבר ל-Zsh (Z shell) כמעטפת ברירת המחדל (החל מ-macOS Catalina) יישר קו עם סטנדרטים מודרניים של סקריפטים וסיפק כלי פיתוח חזקים יותר לעומת Bash הוותיק. שליטה בטרמינל היא קריטית משום שכלי MDM מריצים פקודות וסקריפטים ברמת ה-CLI תחת הרשאות Root, ולא דרך הממשק הגרפי.
הערת מורשת (Legacy) לגבי Bash
לפני Catalina, מעטפת Bash הייתה ברירת המחדל. בגלל בעיות רישוי (הימנעות מרישיון GPLv3), אפל עברה ל-Zsh. עדיין תמצאו במערכת את /bin/bash אך בגרסה ישנה מאוד. סקריפטים מודרניים צריכים להיכתב מתוך הנחה שמורץ Zsh.
2. Deep Technical Architecture¶
כאשר משתמש פותח את אפליקציית Terminal.app, המערכת מריצה את תהליך ה-login שקורא את קבצי התצורה של המעטפת (כגון /etc/zprofile, /etc/zshrc, ולאחר מכן את הקבצים בספריית הבית ~/.zprofile ו-~/.zshrc). הטרמינל עצמו אינו ה"מערכת", אלא רק תוכנת מעטפת (Emulator) שמתקשרת עם תהליך ה-zsh (ה-Shell).
פקודות שמורצות בטרמינל מתורגמות לקריאות מערכת (System Calls) המועברות ל-Kernel (XNU). כאשר מריצים פקודות עם sudo, המערכת בודקת את הרשאות המשתמש מול קובץ /etc/sudoers (באמצעות קריאה ל-Directory Service המקומי של המק) ודורשת סיסמה או אישור Touch ID (אם הוגדר) כדי להעניק הרשאות Root זמניות לאותו תהליך בלבד.
3. Terminal Commands, Plists & Logs¶
⌨️ קיצורי דרך וטיפים קריטיים לעבודה מהירה:¶
Tab/Tab Tab: השלמה אוטומטית של פקודות ונתיבים. הקשה כפולה מציגה את כל האפשרויות.Ctrl + C: ביטול (Interrupt / SIGINT) מיידי של פקודה שרצה או נתקעה.Ctrl + L(אוclear): ניקוי המסך.Ctrl + A/Ctrl + E: קפיצה מהירה לתחילת / סוף השורה.- חצים
↑/↓: גלילה בהיסטוריית הפקודות. - גרירת קבצים (Drag & Drop): גרירת קובץ/תיקייה מחלון Finder ישירות לחלון הטרמינל מדביקה אוטומטית את הנתיב המלא כולל Escapes מדויקים לרווחים.
- גשר הפוך ל-Finder (
open .): הפקודהopen .פותחת חלון Finder חדש בדיוק במיקום הנוכחי שבו הטרמינל עומד.open <file>פותחת קובץ באפליקציית ברירת המחדל שלו, ו-open -a <AppName> <file>פותחת באפליקציה ייעודית.
📂 פקודות ניווט והתמצאות:¶
| פקודה | תיאור ודגלים |
|---|---|
pwd |
הדפסת הנתיב הנוכחי (Print Working Directory). |
cd <path> |
מעבר לתיקייה (cd ~ לבית, cd .. רמה למעלה, cd - יעד קודם, cd / שורש). |
ls -la |
הצגת כל הקבצים כולל נסתרים (.) והרשאות. |
ls -lh |
רשימה מפורטת עם גדלים קריאים לאדם (Human Readable). |
ls -le / ls -l@ |
הצגת רשימות בקרת גישה (ACLs) ומאפיינים מורחבים (Extended Attributes). |
🛠️ ניהול קבצים ותיקיות:¶
| פקודה | תיאור ודגלים |
|---|---|
mkdir -p <dir> |
יצירת תיקייה (כולל היררכיה מקוננת שלמה). |
touch <file> |
יצירת קובץ טקסט ריק או עדכון חותמת זמן. |
cp -R <src> <dst> |
העתקת קובץ/תיקייה באופן רקורסיבי. |
mv <src> <dst> |
העברה ו/או שינוי שם של קובץ/תיקייה. |
rm <file> |
מחיקת קובץ לצמיתות (עוקף את Trash). |
rm -r <dir> |
מחיקת תיקייה ותוכנה באופן רקורסיבי. |
📄 צפייה ועריכה:¶
| פקודה | תיאור ודגלים |
|---|---|
cat <file> |
הדפסת כל תוכן הקובץ למסך. |
less <file> |
דפדוף אינטראקטיבי בקובץ ארוך (יציאה עם q, חיפוש עם /). |
head -n 20 / tail -n 20 |
צפייה ב-20 השורות הראשונות / האחרונות. |
tail -f <logfile> |
עקיבה חיה בזמן אמת אחרי לוגים מתעדכנים. |
nano <file> |
עורך טקסט אינטואיטיבי מובנה בטרמינל. |
🔍 מידע מערכת וזהות:¶
| פקודה | תיאור ודגלים |
|---|---|
man <command> |
מדריך התיעוד הרשמי של המערכת (Manual). |
which <command> |
איתור הנתיב הבינארי של הפקודה. |
whoami |
שם המשתמש הנוכחי. |
sw_vers |
גרסת מערכת ההפעלה ומספר Build. |
uname -m |
ארכיטקטורת המעבד (arm64 מול x86_64). |
sudo <command> |
הרצה בהרשאות מנהל-על (Root). |
- הגדרות טרמינל:
- קובץ העדפות הטרמינל:
~/Library/Preferences/com.apple.Terminal.plist
- קובץ העדפות הטרמינל:
4. Edge Cases & Troubleshooting¶
- בעיה: הרשאות ה-Terminal חסומות (למשל, הטרמינל מודיע
Operation not permittedבעת ניסיון לגשת לתיקיית Downloads או Desktop).- פתרון: מנגנון ה-TCC (Transparency, Consent, and Control) חוסם את הטרמינל. יש לגשת ל-System Settings > Privacy & Security > Full Disk Access (או Files and Folders) ולוודא שלאפליקציית Terminal יש הרשאות. בארגון, ניתן לדחוף פרופיל PPPC (Privacy Preferences Policy Control) שמעניק לטרמינל (או לכלי שורת פקודה אחר) את הגישה הנדרשת מראש.
- בעיה: תהליכים לא מגיבים ל-
Ctrl + C(תהליך "זומבי" או תקוע).- פתרון: פתיחת חלון טרמינל חדש (
Cmd + N), איתור ה-PID באמצעותtopאוps -ax, וחיסול התהליך באמצעותkill -9 <PID>.
- פתרון: פתיחת חלון טרמינל חדש (
2. הלב של המערכת: launchd, DAS, ו-CTS¶
1. High-Level Theory & History¶
מנגנון ה-launchd הוא ה"הורה" של כל התהליכים ב-macOS. הוא פותח במקור על ידי Dave Zarzycki ושוחרר לראשונה ב-2005 (Mac OS X 10.4 Tiger). הוא מחליף את מערכות האתחול הישנות של Unix (כמו init, rc, inetd, cron ועוד) לכדי תהליך ניהול אחד אחוד. הוא אחראי להפעיל את המערכת, לנהל את תהליכי הרקע, להפעיל שירותים לפי דרישה (On-Demand), ולפקח עליהם (להפעילם מחדש אם קרסו).
מאחר ש-launchd היה נוקשה מדי בתזמון המשימות שלו, אפל הוסיפה בהמשך כלים בשם DAS (Duet Activity Scheduler) ו-CTS (Centralized Task Scheduling) בגרסת OS X 10.10. מנגנון DAS מנהל רשימת משימות מתוזמנות ומנקד אותן (Scoring) בהתאם למצב הסוללה, חיבור לחשמל, עומס מעבד וטמפרטורה. כאשר התנאים אידיאליים, CTS מוציא לפועל את המשימה באמצעות ערוץ תקשורת XPC.
בגרסאות מודרניות, כולל macOS 26 Tahoe, אפל הרחיבה את המערכת האקולוגית של הרקע. בין היתר, Tahoe מציגה את LaunchAngels, סיווג חדש של שירותי מערכת המנוהלים ישירות על ידי RunningBoard תחת ניהול העל של launchd.
2. Deep Technical Architecture¶
מיד לאחר שה-Kernel מסיים את טעינתו מתוך ה-System Volume (SSV) המוגן, הוא מעביר את השליטה לתהליך launchd אשר מקבל תמיד את ה-Process ID של 1 (PID 1).
- ברמת המערכת: בשלב הראשון,
launchdרץ ברמת ה-System (כ-root). הוא קורא את קבצי התצורה של ה-LaunchDaemons מתוך הנתיבים המובנים (/System/Library/LaunchDaemons) והחיצוניים (/Library/LaunchDaemons). - ברמת המשתמש: כאשר משתמש מבצע Login, תהליך ה-
launchdהראשי מוליד (Spawns) עותק נוסף שלlaunchdשרץ תחת ה-UID של אותו משתמש. תהליך משני זה קורא את ה-LaunchAgents מנתיבי המערכת וכן מהנתיב המקומי של המשתמש (~/Library/LaunchAgents). - LaunchAngels (ב-macOS Tahoe 26): נוספה תיקייה חדשה בשם
/System/Library/LaunchAngels. מדובר באפליקציות שירות פנימיות של אפל (כמוAccessibilityUIServerאוGameOverlayUI) אשר כוללות הגדרות ניהול-חיים מולRunningBoard(לדוגמהManaged: true). אלו נעולים על ה-SSV ולא ניתנים לשינוי.
launchd משתמש במנגנון IPC (Inter-Process Communication) מסוג XPC כדי לאפשר לאפליקציות לתקשר עם ה-Daemons בצורה מאובטחת.
3. Terminal Commands, Plists & Logs¶
-
קריאה וניהול של תהליכים (פקודת העל
launchctl):-
רשימת כל התהליכים שרצים תחת ה-launchd הנוכחי:
launchctl list -
הדפסת עץ מלא של כל השירותים והסטטוס שלהם:
launchctl print system(ברמת המערכת - דורשsudo)launchctl print gui/$(id -u)(ברמת המשתמש) -
הטענה (Load/Bootstrap) והורדה (Unload/Bootout) של תהליך:
sudo launchctl bootstrap system /Library/LaunchDaemons/com.example.plistsudo launchctl bootout system /Library/LaunchDaemons/com.example.plist
-
-
נתיבי קבצי התצורה:
/System/Library/LaunchDaemons(בליבת המערכת - SSV מוגן)./Library/LaunchDaemons(לתוכנות צד שלישי).~/Library/LaunchAgents(לשירותים ברמת המשתמש הספציפי)./System/Library/LaunchAngels(ב-Tahoe, שירותים מנוהלי RunningBoard).
4. Edge Cases & Troubleshooting¶
- בעיה: אפליקציה מנסה לטעון Daemon חיצוני ונכשלת שוב ושוב.
- פתרון: החל מ-macOS Ventura הוכנסה שכבת שקיפות בשם "Background Task Management" (BTM). אם המשתמש ביטל את הפריט תחת
System Settings > General > Login Items & Extensions, ה-launchdיסרב לטעון את ה-Daemon, וכל ניסיון להריץlaunchctl bootstrapייכשל עם שגיאהService cannot load in requested session.
- פתרון: החל מ-macOS Ventura הוכנסה שכבת שקיפות בשם "Background Task Management" (BTM). אם המשתמש ביטל את הפריט תחת
- פתרון תקלות עמוק בעזרת
sfltool:- ב-macOS Tahoe ניהול עמוק של BTM נעשה דרך פקודת
sfltoolהלא-מתועדת רשמית. - שליפת כל בסיס הנתונים של ה-BTM כדי להבין מה חסום:
sudo sfltool dumpbtm > ~/Documents/btmdump.txt - איפוס מלא (אופציה גרעינית) לבסיס נתוני תהליכי הרקע בעת השחתה:
sudo sfltool resetbtm
- ב-macOS Tahoe ניהול עמוק של BTM נעשה דרך פקודת
- הגדרות ארגוניות (MDM): בארגון, יש למנוע מהמשתמשים את היכולת לבטל שירותים קריטיים על ידי דחיפת פרופיל תצורה מסוג
ServiceManagementהמאשר אותם ספציפית ומונע מהמשתמש לכבותם במסך ההגדרות.
3. אבחון עמוק¶
1. High-Level Theory & History¶
אבחון עמוק של מערכת עובדת ב-macOS דורש הבנה של שני עולמות: משאבי חומרה (ניהול זיכרון ו-CPU דרך Activity Monitor או כלי שורת פקודה) ומבנה נתונים והגדרות (קבצי Plist).
ההיסטוריה של Activity Monitor החלה כתוכנות נפרדות כמו Process Viewer ו-CPU Monitor שהתאחדו ב-2003 לתוכנה אחת מקיפה. אפל משתמשת בקבצי Plist (Property List) כדי לשמור את כל הגדרה, העדפה וקובץ תצורה של אפליקציות ומערכת ההפעלה. הפורמט צמח מ-SGML העתיק, ובשנת 2002 עברה המערכת לפורמט בינארי (bplist) שמשפר את מהירות הטעינה ומונע עריכה לא מכוונת. Activity Monitor מספק מבט בזמן אמת על התנהגות המערכת, כאשר מושג המפתח "Memory Pressure" מחליף לחלוטין את ההסתכלות הישנה והפשטנית של "כמה זיכרון RAM נשאר פנוי".
2. Deep Technical Architecture¶
- ניהול זיכרון (Memory Pressure): מערכת macOS משתמשת בטכנולוגיית Memory Compression ובמנגנון ה-Swap. כשהזיכרון הפיזי (RAM) מתחיל להתמלא, המערכת קודם כל דוחסת אותו במקום. כאשר גם הדחיסה אינה מספיקה, היא מתחילה להעביר "דפים" (Pages) שאינם בשימוש מה-RAM לכונן ה-SSD (תהליך ה-Swap). גרף ה-Memory Pressure מסכם התנהגות זו:
- ירוק: המערכת מתנהלת היטב ומנהלת את הזיכרוןביעילות.
- צהוב: מעיד על תהליך דחיסה אינטנסיבי ולחץ גובר.
- אדום: "Swap Death" – המערכת נלחמת על משאבי קלט/פלט (I/O) מול ה-SSD והביצועים יתרסקו לחלוטין.
- Plist (Property Lists) ו-
cfprefsd: קבצי ה-Plist מבוססים על מבנה XML או מקודדים בינארית לטובת חיסכון במקום ומהירות קריאה. לרוב הם מנוהלים ומאוכסנים במטמון על ידי התהליךcfprefsd(Core Foundation Preferences Daemon). בשל השימוש במטמון (Cache), עריכה ידנית של קובץ Plist דרך עורך טקסט בזמן שהאפליקציה או התהליך רצים עשויה להידרס (Overwritten) על ידי המערכת ברגע שהאפליקציה תשמור הגדרות בחזרה.
3. Terminal Commands, Plists & Logs¶
-
ניטור משאבים בטרמינל:
top -u(מציג את התהליכים הצורכים הכי הרבה CPU).htopאו כלי ניטור פנימי שלpowermetricsלאבחון תרמי/ביצועים (דורשsudo).
-
עבודה עם קבצי Plist פקודת
plutil:-
סריקה ובדיקת תקינות הקובץ (מציג שגיאות Syntax אם ישנן):
plutil -lint /path/to/file.plist -
המרת קובץ בינארי ל-XML קריא (XML1):
sudo plutil -convert xml1 /path/to/file.plist -
המרת קובץ חזרה לפורמט בינארי:
sudo plutil -convert binary1 /path/to/file.plist -
קריאה מהירה של קובץ בינארי כמבנה נתונים בטרמינל:
plutil -p /path/to/file.plist
-
4. Edge Cases & Troubleshooting¶
- בעיה: עומס זיכרון קיצוני (אדום) ב-Activity Monitor, אבל ה-CPU נמוך.
- פתרון: יש למיין את טבלת הזיכרון לפי עמודת ה-Memory, ולחפש תהליכים עם "Memory Leak" (דליפת זיכרון שבה התוכנה לא משחררת זיכרון שלא בשימוש). במקרים של תוכנות צד-שלישי או Daemons בעייתיים, ניתן להשתמש ב-
kill -9על התהליך הספציפי, או לאפס את ההעדפות (מחיקת ה-plist של האפליקציה) אם התקלה חוזרת על עצמה מיד בפתיחה.
- פתרון: יש למיין את טבלת הזיכרון לפי עמודת ה-Memory, ולחפש תהליכים עם "Memory Leak" (דליפת זיכרון שבה התוכנה לא משחררת זיכרון שלא בשימוש). במקרים של תוכנות צד-שלישי או Daemons בעייתיים, ניתן להשתמש ב-
- בעיה: קובץ Plist נפגם לאחר עריכה (נניח בניסיון לערוך קובץ LaunchDaemon).
- פתרון: הרצת
plutil -lintתזהה בדיוק באיזו שורה ב-XML קיים הפגם (למשל סגירת תגית חסרה</dict>). תיקון התגית ושמירה. אין לעשותlaunchctl bootstrapעד שהקובץ עובר את בדיקת ה-lint בהצלחה.
- פתרון: הרצת
4. תיבול ארגוני (MDM)¶
1. High-Level Theory & History¶
בסביבה ארגונית, ה-Mac אינו עומד בפני עצמו – הוא מנוהל (Managed) על ידי מערכת MDM (Mobile Device Management). הליבה של קשר זה אינה מבוססת רק על התקנת "אפליקציה" של ספק ה-MDM, אלא נשענת עמוקות על היכולות המובנות במערכת ההפעלה של אפל. פרוטוקול ה-MDM שולח פקודות בפורמט XML דרך שרתי Push (APNs) אל הלקוח. בצד של המק, הרכיב המובנה שאחראי על אכיפת הפוליסות, התקנת הפרופילים, וקבלת פקודות כגון נעילה וניתוב מחדש, הוא תהליך ה-mdmclient.
2. Deep Technical Architecture¶
תהליך ה-mdmclient מתפקד כ-Daemon ברמת המערכת וכ-Agent ברמת המשתמש.
- האזנה ל-APNs: הוא מאזין לערוץ תקשורת מיוחד מול שרתי ה-APNs של Apple. כשהוא מקבל "Wake Up" דרך APNs, התהליך "מתעורר" ויוצר קשר יוצא (Outbound HTTPS) אל שרת ה-MDM הארגוני כדי לקבל פקודות (Polling).
- אכיפת פרופילים (
profiled): הוא פועל במקביל למנוע פרופילי התצורה (profiled). כאשר מגיעה הוראה משרת ה-MDM להתקין פרופיל תצורה (Configuration Profile),mdmclientמעביר את ההוראה ל-profiled, שמחיל את השינוי במערכת ההפעלה (למשל, אכיפת הגדרת אבטחה, הוספת VPN, או הסתרת הגדרות מסוימות ב-System Settings). - התערבות Daemons צד ג': מרבית ספקי ה-MDM (כגון Jamf, Kandji, Intune) יפרסו בנוסף ל-
mdmclientהמובנה גם LaunchDaemon מקוסטם משלהם (למשל/Library/LaunchDaemons/com.jamfsoftware.task.1.daemon.plist), אשר רץ כמשתמש root ומריץ סקריפטים ופעולות מורכבות יותר ממה שפרוטוקול ה-MDM הבסיסי של אפל מאפשר.
3. Terminal Commands, Plists & Logs¶
-
פקודות ניהול למערכת ה-Profiles:
-
הצגת רשימת כל הפרופילים המותקנים על המחשב (רמת המערכת):
sudo profiles show -type configuration -
כפיית סנכרון מחודש מול שרת ה-MDM:
sudo profiles renew -type enrollment
-
-
ניטור ה-MDM ב-Activity Monitor וב-Console:
- ב-Activity Monitor, ניתן לחפש תחת שורת החיפוש
mdmclientאו את שם ה-Daemon של פלטפורמת ה-MDM.
- ב-Activity Monitor, ניתן לחפש תחת שורת החיפוש
- שאיבת לוגים לאבחון בעיות סנכרון (
mdmclient):- זרם לוגים בזמן אמת של פעילות לקוח ה-MDM (מעולה לראות מה קורה מיד כששולחים פקודה מהשרת):
log stream --predicate 'process == "mdmclient"' --info
- זרם לוגים בזמן אמת של פעילות לקוח ה-MDM (מעולה לראות מה קורה מיד כששולחים פקודה מהשרת):
4. Edge Cases & Troubleshooting¶
- בעיה: מחשב מק מופיע כ"לא מגיב" (Unresponsive) במסוף ניהול ה-MDM של ה-IT, ופקודות נתקעות במצב Pending.
- פתרון:
- יש לוודא שה-Daemon הרשמי של חברת ה-MDM עדיין רץ. ניתן לעשות זאת באמצעות
Activity Monitorאוlaunchctl print system | grep [mdm-vendor-name]. - יש לבדוק האם המחשב מקבל הודעות Push (APNs). אם יש בעיית רשת בארגון שחוסמת פורט 5223 או את טווחי כתובות ה-IP
17.0.0.0/8, ה-mdmclientלעולם לא יקבל את הודעת ה-"Wake Up". - כדי לאבחן בדיוק היכן החסימה, אנשי תמיכה ישתמשו בפקודת
log streamבשילוב עםmdmclient, ולאחר מכן ישלחו פקודת רענון ידנית או ישתמשו ב-sudo profiles renew -type enrollment. אם בלוגים יופיעו שגיאות שלNSURLErrorDomain(כגון שגיאה 1009- או 1004-), זוהי אינדיקציה חותכת לכך שחומת האש הארגונית, או פרוקסי אגרסיבי, מיירטים את תעבורת ה-SSL של שרת ה-MDM ומונעים את החיבור עקב שבירת Certificate Pinning.
- יש לוודא שה-Daemon הרשמי של חברת ה-MDM עדיין רץ. ניתן לעשות זאת באמצעות
- פתרון:
- בעיה: שגיאת פריסה של סוכן צד-שלישי.
- פתרון: במידה ו-Daemon של MDM או תוכנת הגנה קורסים (Crash), ניתן לבחון האם הם מושעים (Bootout) ולהעלות אותם מחדש בעזרת
launchctl bootstrapלטובת חידוש תקשורת מהיר ללא הפעלה מחדש של המערכת כולה.
- פתרון: במידה ו-Daemon של MDM או תוכנת הגנה קורסים (Crash), ניתן לבחון האם הם מושעים (Bootout) ולהעלות אותם מחדש בעזרת
5. קישורים ומקורות להעמקה¶
- Terminal User Guide for Mac (Apple Support) — מדריך המשתמש הרשמי של אפל לאפליקציית הטרמינל.
- Complete Mac Terminal Commands Cheat Sheet (GeeksforGeeks) — לוח עזר מקיף לפקודות טרמינל במק.
- Use zsh as the default shell on your Mac (Apple Support) — הסבר על מעטפת Zsh וקובצי הפרופיל והאתחול שלה.
- Command-line management in macOS (Apple Platform Deployment) — מדריך הניהול הרשמי של אפל לאנשי IT באמצעות שורת הפקודה.
- View Memory Usage in Activity Monitor (Apple Support) — המדריך הרשמי לקריאת לחץ הזיכרון (Memory Pressure).
- Explainer: % CPU in Activity Monitor (The Eclectic Light Company) — הסבר למה אחוזי מעבד לפעמים מטעים ואיך לקרוא אותם (ליבות P מול E).
- A brief history of XML and property lists (The Eclectic Light Company) — מדוע אפל נשענת כל כך חזק על קבצי Plist.
עזרים ויזואליים¶
המחשה ויזואלית (עזר לתלמיד)
תמונות אלו ממחישות את הממשק או המנגנון הרלוונטי לנושא השיעור.
