לינוקס טרמינל סרבר - מדריך הטמעה

מאת צפריר כהן

עודכן לאחרונה ב 12.08.2006

1   הגדרות

1.1   הגדרת שמות לתחנות

לצורך הגדרת שמות לתחנות נשנה שני קבצים:

/etc/hosts
/etc/dhcp3/dhcpd.conf

קובץ dhcpd.conf לדוגמא:

default-lease-time            21600;
max-lease-time                21600;
use-host-decl-names           on;

shared-network HAZOR {
   #THIN CLIENTS NETWORK AND PARAMETERS
   subnet 172.17.0.0 netmask 255.255.0.0 {
    next-server                   172.17.0.1;
    option subnet-mask            255.255.0.0;
    option broadcast-address      172.17.255.255;
    option domain-name            "hazor-ltsp";
    option domain-name-servers    172.17.0.1;
    option root-path              "172.17.0.1:/opt/ltsp/i386";
    filename                      "/lts/2.6.9-ltsp-3/pxelinux.0";
   }
}

# GROUP OF THIN CLIENTS
group {
   host ws001 {
        hardware ethernet    00:C1:26:00:F7:9A;
        fixed-address        172.17.0.51;
   }

   host ws002 {
        hardware ethernet    00:50:04:23:11:34;
        fixed-address        172.17.0.52;
   }
}

1.2   הגדרות group (עמדות מחשב) בקובץ

host שם_עמדה {
        hardware ethernet    כתובת_חומרה_של_כרטיס_הרשת;
        fixed-address        כתובת_רצוייה_קבועה;
   }

אם קובץ הhost מלא, שמות העמדה יהיו זהים לשמות שמוגדרים שם

#####################קובץ hosts לדוגמא:

127.0.0.1     localhost.localdomain   localhost       hazor-lts

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
## LTSP-begin ##
#
# The lines between 'LTSP-begin' and 'LTSP-end' were added
# on: Fri Jun 10 12:01:50 2005, by the ltspcfg configuration tool.
# For more information, visit the LTSP homepage
# at http://www.LTSP.org
#

172.17.0.51   ws001.ltsp      ws001
172.17.0.52   ws002.ltsp      ws002

1.3   הגדרת עמדה בקובץ

כתובת_קבועה_רצוייה    שם_מחשב שם_מחשב_נוסף_לאותה_הכתובת_לצורכי_נוחות
השם הנוסף אינו נחוץ – אלא רק לצורכי נוחות.
###########################################################

1.4   הגדרת עמדה חדשה

הוספת הגדרות העמדה בdhcpd.conf, אם רוצים חיבור אוטומטי לאותה עמדה, צריך גם לערוך את autologin.sh (בחלק הבא).

2   בעיית החיבורים האוטומטים

2.1   התחברות אוטומטית

למחשבי הקצה שלנו יש משתמשים קבועים, כלומר ברגע שמפעילים את המחשב, הוא לא יבקש שם משתמש וסיסמא
ויתחבר אוטומטית ל"משתמש" הקבוע של המחשב. היינו מעדיפים לתת חשבון נפרד לכל משתמש. אולם זה לא מעשי
במקום כמו חדר מורים שבו רבים מהמשתמשים זקוקים למחשב למשך דקה או שתיים במהלך ההפסקה.
מצד שני, לא יכולנו להסתפק ביצירת חשבון אורח אחד, מכיוון שתוכניות מוזילה השונות וכן OpenOffice
גילו נטיה מרגיזה להריץ רק עותק אחד לכל משתמש. בנקודה זו ראוי לציין לטובה את תוכניות KDE.
לכן יצרנו משתמש לכל תחנת עבודה, שאליה הוא אמור להתחבר אוטומטית.
הגדרת ההתחברות האוטומטית התבררה כמסובכת מהצפוי.
גם KDM וגם GDM (מנהלי תצוגה) תומכים בהתחברות אוטומטית לחשבון. ב־ KDM אפשר אפילו לשנות חלק
מההגדרות (כולל, לדוגמה, השם של אותו חשבון) כתלות בשם התחנה. אולם כאשר מתנתקים (logout) חוזרים למסך הפתיחה הרגיל.
לכן השימוש בטריק מלוכלך: שימוש ב־ GDM, ובסקריפט ה־ Init שלו (שרץ בזמן יצירת התצוגה, לפני הצגת מסך ההתחברות)
אני בודק מאיזו תחנה התחברתי ומריץ בעצמי את ה־ Xsession עבור המשתמש. בסיום אותו סקריפט הורג את התצוגה
כדי להתחיל את הכל מהתחלה. זה בד"כ עובד, אם כי לרוב לאחר logout אין תעופה של התצוגה ולכן מגיע מסך ההתחברות הרגיל.

2.2   פתרון ניסיוני: התחברות אוטומטית ל- GDM בעזרת סקריפט

אנו מגדירים התחברות אוטומטית במנהל התצוגה GDM והמשתמש האוטומטי שאמור להתחבר מוחזר מסקריפט בהתאם למחשב
(כך יש חיבור אוטומטי של "משתמש"-עמדה), או במידה ומעוניינים שבאחד (או יותר) מהמחשבים החיבור יהיה לפי משתמש ולא אוטומטי,
הסקריפט פשוט יחזיר ערך ריק.

שינוי הגדרות מנהל התצוגה:

/etc/X11/gdm/gdm.conf
[deamon]
AutomaticLoginEnable=true
AutomaticLogin=/usr/local/sbin/autologin.sh|
TimedLoginEnable=true
TimedLogin=/usr/local/sbin/autologin.sh|
TimedLoginDelay=5
כאן מוגדר חיבור אוטומטי בהפעלה הראשונה של מנהל התצוגה ואם התנתקו ממנהל התצוגה –
יופיע מסך החיבור (שבו צריך להכניס שם משתמש וסיסמא) אך לאחר 5 שניות יחובר אוטומטית
ללא כל צורך להכניס שם משתמש או סיסמא.

הערה

סימן ה- ”|” לאחר autologin.sh אינו טעות דפוס – הוא תו נחוץ.

וכעת נעבור לכתיבת הסקריפט:

/usr/local/sbin/autologin.sh

את הסקריפט הזה נכתוב לפי הצורך – לדוגמא:

#!/bin/sh
user=
logger "$0: Checking remote gdm host: $REMOTE_HOST."
case "$REMOTE_HOST" in
ws001.ltsp)user=mor1;;
#ws002.ltsp)user=mor2;;
esac
echo $user
כאן דאגנו לקשר בין שם המחשב ל"משתמש" העמדה:
ws001.ltsp יחובר באופן אוטומטי בעזרת "משתמש" העמדה mor1. לעומת זאת ws002.ltsp
לא יתחבר באופן אוטומטי כי תו ה"#” מסתיר אותו (מסמן הערה).

3   הפרדת רשתות

רקע

אצלינו קיים שרת DHCP (שחילק כתובות לרשת שהייתה כבר במקום), עליו היינו צריכים להוסיף
לרשת את שרת ה- LTSP (שאמור לחלק כתובות למחשבי הקצה).
קיום 2 מחשבים המחלקים כתובות באותה הרשת בו זמנית יוצר בעיות ולכן הוחלט לבצע הפרדת רשתות בתוך הרשת עצמה.
הפתרון: שימוש ב- PORT 1067
כדי להמנע מהתנגשויות עם שרת ה- DHCP הקיים וגם מתלות בו, המערכת משתמשת בפרוטוקול DHCP על פורטים 1067 ו- 1068.
תמונת הדיסקט של Etherboot נבנתה עם פרמטר מיוחד לשם כך. כמו כן צריך להעביר את הפרמטר dport=1067 בהגדרות pxeboot
וכמובן: להגדיר את שרת ה- dhcp בהתאם.
לקוח ב- TERMIINAL SERVER צריך הגדרות DHCP מיוחדות וכן הגדרות מיוחדות בשרת השמות (DNS).
ברשת לא יכול להיות יותר משרת DHCP אחד ולכן אותו שרת DHCP הוא גם זה שצריך לשרת את התחנות האחרות ברשת.
אין אפשרות ששרת ה- LTSP יהיה שרת DHCP עבור כל הרשת ומצד שני אנו רוצים להמנע משימוש בשרת חיצוני.
לכן אנו מריצים ווריאציה של שרת ה- DHCP על שרת ה- LTSP שמשתמש ב- PORT 1067. השרת רץ על PORT 1067 והלקוח על PORT 1068.
למעשה יש לנו 2 קבוצות קליינטים מרכזיים ל- DHCP – הראשון הוא של ה- PXEBOOT והשני נותן פרמטר ל- kernel.
ומאידך יש לנו את שרת ה- DHCP.
ה- ETHERBOOT הורד מהאינטרנט ושונה (לאחר מכן קומפל וממנו נוצרו גם הדיסקטים של האתחול).
טיב השינוי הוא בקוד התוכנה – חיפוש 1067 בקובץ ההגדרות ומחיקת סימן ההערה (#) -
הדבר מאלץ הפנית בקשה מהלקוח לכתובת DHCP בעזרת שימוש ב- PORT 1067.

להסבר מורחב ניתן לפנות באימייל לצפריר.

3.1   איך בונים את דיסקט האתחול?

ראשית, נוריד מהאינטרנט את קוד התוכנה העדכני של ה- ETHERBOOT מהכתובת:

|תhttp://etherboot.sourceforge.net | את הקוד של התוכנה נמצא תחת הקטגוריה Download source from Sourceforge. | לאחר שהורדנו את הקובץ, נפתח אותו לספריה זמנית, נכנס לספריה החדשה שנוצרה ונריץ את שורת הפקודה:

make bin/3c509—3c90x—dmfe—eepro—ns8390—rtl8139—sis900.zdsk
כל מה שבין ה-- הם שמות של מודולים (דרייברים) של כרטיסי רשת שברצוננו שדיסקט האתחול יתמוך בהם,
לכן יש לדעת אילו כרטיסי רשת מורכבים בעמדות הקצה. הקובץ החדש שנוצר (עם הסיומת zdsk)
יימצא בתת הספריה bin - הוא קובץ תמונה של דיסקט.

כעת נעתיק את הקובץ החדש שנוצר אל הדיסקט בעזרת פקודת dd.

dd if=bin/3c509—3c90x—dmfe—eepro—ns8390—rtl8139—sis900.zdsk of=/dev/fd0

(dev/fd0/ – כונן הדיסקטים ברוב המערכות)

מומלץ להכין דיסקט שתומך בכל כרטיסי הרשת שבמחשבי הקצה, אך אין להגזים בכמות המודולים שנטענים
וזאת בגלל מגבלות של טעינה (אם לקובץ נטענו יותר מדי מודולים תהיה שגיאת קומפילציה בהרצת פקודת ה- make).
במידה וקיים רק סוג אחד של כרטיסי רשת, ניתן לייצר קובץ בצורה אוטומטית (ובנוסף להפעיל את האפשרות של שימוש בPORT 1067 ) באתר:
http://rom-o-matic.net
כל מה שנותר הוא רק להעתיק את הקובץ לדיסקט בעזרת dd.
עד כה עסקנו בהגדרות של מחשבי הקצה. כעת נגדיר בהתאם את שרת ה- LTSP לחלוקת כתובת.
לשם כך נשנה את הקובץ etc/init.d/ בשרת ה- LTSP.

3.2   הקובץ etc/init.d/

שונתה שורת הפקודה של start-stop-daemon

-- exec /usr/sbin/dhcpd3 -- -p 1067 -q $INTERFACES
(-p 1067 :החלק שנוסף הוא)

לאחר השינוי בוצע RESTART לשרת ה- DHCP ע"י הפקודה

dhcpd3-server restart

לאחר ביצוע RESTART ידווח על שימוש ב- PORT 1067 כנדרש.

4   הדפסת עברית מ־ Firefox

נראה שאי־אפשר להדפיס עברית מ־ Firefox: מודפסים קווים במקום תווים עבריים.
פתרון נוכחי: שימוש ב- xprint. הפתרון הוא לא פתרון אופטימלי.
חיבור מדפסת לוקאלית – הבעיה היא במציאת דרייברים מתאימים ולכן העניין תלוי בסוג המדפסת.
מדפסת USB תוגדר כ- usblp. מידע נוסף בנושא קיים באתר של ltsp תחת hardware – ניתן למצוא שם גם מידע
על חיבור Disk-On-Key, סורקים, כרטיסי קול והתקנים נוספים.

חיבור DISK-ON-KEY USB במחשבי הקצה אצלינו כרגע לא עובד.

הגדרות desktop מרכזיות
ניסוי וטעיה – עדיין בשלבי בדיקת kiosktool

5   הוספת משתמשים חדשים רגילים

הכוונה היא למשתמש אישי של תלמיד או מורה ספציפיים
הוספת משתמש חדש תבוצע על ידי הפקודה:
adduser
לאחר הרצת הפקודה המחשב יבקש להכניס את שם המשתמש המבוקש, הסיסמא ואת השם הפרטי ושם המשפחה של המשתמש.
ניתן לקבוע סיסמא זמנית למשתמש ולאחר מכן המשתמש יכול לשנות אותה לסיסמא כרצונו בעזרת הפקודה:
passwd
לאחר הרצת פקודה זו, המשתמש יקיש את הסיסמא הזמנית שקיבל (או הסיסמא הנוכחית שקיימת) לצורך אישור זהותו.
כעת על המשתמש להקיש את הסיסמא החדשה ו- enter. כעת המחשב יבקש מהמשתמש להכניס את הסיסמא החדשה פעם שנייה
כדי לוודא שלא היו בה טעויות.