Sisällysluettelo

LTSP5 - Chroot

Tässä ohjeessa kuvaillaan, mitä päätteessä tapahtuu, kun päätteeseen liitetään USB-väylään joko muistitikku tai digikamera. Myös päätteeseen liitettyä näyttöä voi jollakin tavoin selvittää tämän ohjeen avulla. Päätteen ympäristönä toimii palvelimella oleva /opt/ltsp-hakemisto. Se on luotu joko asennuksen yhteydessä tai myöhemmin "ltsp-build-client"-käskyllä.

man ltsp-build-client

Tässä ohjeessa on käytetty tätä päätettä:

Fujitsu-Siemens Scenic (P4/256/i845G)

Usb-tikku on malliltaan "Viking Interworks 512 MB USB 2.0 DRIVE" ja digikamera "Olympus µ720 SW". Näyttö on "Nokia 447PRO 17" CRT".

Root-tunnuksen käyttöönotto pääteympäristössä

Pääkäyttäjän oikeuksilla siirrytään päätteiden chroot-ympäristöön.

sudo chroot /opt/ltsp/i386

Tämän jälkeen annetaan root-tunnukselle salasana. Chroot-ympäristössä ei ole muita tunnuksia, joten passwd-käskyyn ei tarvitse liittää tunnusta. Salasana annetaan luonnollisesti kaksi kertaa samalla tavalla.

passwd

Chroot-ympäristöstä poistutaan "exit"-komennolla.

exit

Levykuva pitää päivittää salasanan antamisen jälkeen.

sudo ltsp-update-image

Kun pääte on käynnistynyt, niin Ctrl-Alt-F1 -komennolla voidaan kirjautua root-tunnuksella ja äsken annetulla salasanalla päätteen konsolista päätteen omaan ympäristöön, joka siis vastaa hakemistoa /opt/ltsp palvelimella.

Tämän ohjeen teossa törmättiin virheilmoitukseen "Your account has expired, please contact your system administrator" eikä kirjautuminen onnistunut. Tästä päästään eteenpäin kirjautumalla palvelimelle vielä kerran chroot-ympäristöön ja antamalla seuraava käsky chroot-ympäristössä.

sudo chroot /opt/ltsp/i386

passwd -u root

Poistutaan chroot-ympäristöstä.

exit

Tämän jälkeen levykuva rakennettiin vielä kerran ja nyt päätteen konsolilta oli mahdollista kirjautua root-käyttäjänä sisään.

sudo ltsp-update-image

Muistilista chroot-ympäristön päivittämisestä

Ssh-palvelun käyttöönotto pääteympäristössä

Kun tiedetään päätteen ip-numero, siihen voidaan ottaa myös ssh-yhteys root-tunnuksella. Tämä vastaa täysin konsolista sisäänkirjautumista.

Ensin palvelimella tehdään kaksi liitosta /opt/ltsp-hakemistoon.

sudo mount --bind /dev /opt/ltsp/i386/dev
sudo mount -t proc none /opt/ltsp/i386/proc
sudo mount -o bind /dev/pts /opt/ltsp/i386/dev/pts

Tämän jälkeen laitetaan kuntoon sources.list- ja resolv.conf-tiedostot.

sudo cp /etc/apt/sources.list /opt/ltsp/i386/etc/apt/sources.list
sudo cp /etc/resolv.conf /opt/ltsp/i386/etc/

Siirrytään chroot-ympäristöön.

sudo chroot /opt/ltsp/i386

Tiedot saatavilla olevista ohjelmista päivitetään.

apt-get update

Tehdään päivitys.

apt-get dselect-upgrade

Asennetaan ssh-palvelu chroot-ympäristöön.

apt-get install ssh

Poistutaan chroot-ympäristöstä.

exit

Tämän jälkeen levykuva rakennettiin vielä kerran.

sudo ltsp-update-image

Palvelimelta otetaan yhteys päätteeseen root-tunnuksella, jonka salasana oli annettu aiemmin.

asmok@ubuntu:~$ ssh root@192.168.1.244
The authenticity of host '192.168.1.244 (192.168.1.244)' can't be established.
RSA key fingerprint is a5:06:53:38:f3:92:bd:28:1a:40:f0:3a:b2:10:61:cb.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.244' (RSA) to the list of known hosts.
root@192.168.1.244's password: 
Last login: Wed Jun 18 20:44:33 2008
root@ltsp:~#

USB-tikun liittäminen päätteeseen

Kun USB-tikku liitetään päätteeseen, niin sen liittäminen näkyy myös F1-konsolissa, kun siihen on ensin kirjauduttu root-tunnuksella.

Kun root-tunnuksella on otetaan ssh-yhteys päätteeseen ja ajetaan päätteessä "dmesg"-komento, nähdään USB-tikun liittäminen päätteeseen.

[  387.252052] usb 3-4: new high speed USB device using ehci_hcd and address 2
[  387.468351] usb 3-4: configuration #1 chosen from 1 choice
[  387.544144] usbcore: registered new interface driver libusual
[  387.568034] Initializing USB Mass Storage driver...
[  387.571402] scsi2 : SCSI emulation for USB Mass Storage devices
[  387.573862] usbcore: registered new interface driver usb-storage
[  387.573873] USB Mass Storage support registered.
[  387.575781] usb-storage: device found at 2
[  387.575787] usb-storage: waiting for device to settle before scanning
[  392.581838] usb-storage: device scan complete
[  392.583332] scsi 2:0:0:0: Direct-Access              USB Flash Memory 1.00 PQ: 0 ANSI: 2
[  392.607090] Driver 'sd' needs updating - please use bus_type methods
[  392.615822] sd 2:0:0:0: [sda] 1001472 512-byte hardware sectors (513 MB)
[  392.617418] sd 2:0:0:0: [sda] Write Protect is off
[  392.617424] sd 2:0:0:0: [sda] Mode Sense: 0b 00 00 08
[  392.617427] sd 2:0:0:0: [sda] Assuming drive cache: write through
[  392.627787] sd 2:0:0:0: [sda] 1001472 512-byte hardware sectors (513 MB)
[  392.629288] sd 2:0:0:0: [sda] Write Protect is off
[  392.629293] sd 2:0:0:0: [sda] Mode Sense: 0b 00 00 08
[  392.629295] sd 2:0:0:0: [sda] Assuming drive cache: write through
[  392.631246]  sda: sda1
[  392.632775] sd 2:0:0:0: [sda] Attached SCSI removable disk
[  392.648310] sd 2:0:0:0: Attached scsi generic sg0 type 0

Digikameran liittäminen päätteeseen

Samalla tavalla näkyy myös digikameran liittäminen päätteeseen.

[ 1051.350531] usb 2-1: new full speed USB device using uhci_hcd and address 2
[ 1051.531583] usb 2-1: configuration #1 chosen from 1 choice
[ 1051.542637] scsi3 : SCSI emulation for USB Mass Storage devices
[ 1051.547677] usb-storage: device found at 2
[ 1051.547684] usb-storage: waiting for device to settle before scanning
[ 1056.546623] usb-storage: device scan complete
[ 1056.550619] scsi 3:0:0:0: Direct-Access     OLYMPUS  u720SW,S720SW    1.00 PQ: 0 ANSI: 2
[ 1056.573587] sd 3:0:0:0: [sda] 4095630 512-byte hardware sectors (2097 MB)
[ 1056.580610] sd 3:0:0:0: [sda] Write Protect is off
[ 1056.580620] sd 3:0:0:0: [sda] Mode Sense: 17 00 00 08
[ 1056.580623] sd 3:0:0:0: [sda] Assuming drive cache: write through
[ 1056.599580] sd 3:0:0:0: [sda] 4095630 512-byte hardware sectors (2097 MB)
[ 1056.606573] sd 3:0:0:0: [sda] Write Protect is off
[ 1056.606579] sd 3:0:0:0: [sda] Mode Sense: 17 00 00 08
[ 1056.606581] sd 3:0:0:0: [sda] Assuming drive cache: write through
[ 1056.606647]  sda: sda1
[ 1056.616705] sd 3:0:0:0: [sda] Attached SCSI removable disk
[ 1056.616763] sd 3:0:0:0: Attached scsi generic sg0 type 0

Polttavan CD-aseman liittäminen päätteeseen

Toisin kuin edellä olevat kaksi esimerkkiä (tikku ja digikamera), polttavan CD-aseman liittäminen jää puolitiehen. Kun kirjaudutaan päätteen chroot-ympäristöön, nähdän että Linux-ydin tunnistaa polttavan CD-aseman, mutta sitä ei voi kuitenkaan käyttää päätteen työpöytäympäristössä. Mikään ohjelma ei näe laitetta päätteen tunnuksella (ltsp001). Root-tunnuksella kuitenkin voidaan CD-aseman kelkka avata (eject).

[  251.812110] usb 3-3: new high speed USB device using ehci_hcd and address 2
[  252.003518] usb 3-3: configuration #1 chosen from 1 choice
[  252.099213] usbcore: registered new interface driver libusual
[  252.125270] Initializing USB Mass Storage driver...
[  252.128075] scsi2 : SCSI emulation for USB Mass Storage devices
[  252.130455] usbcore: registered new interface driver usb-storage
[  252.130465] USB Mass Storage support registered.
[  252.132429] usb-storage: device found at 2
[  252.132436] usb-storage: waiting for device to settle before scanning
[  257.131009] usb-storage: device scan complete
[  257.132744] scsi 2:0:0:0: CD-ROM            LITE-ON  DVDRW LDW-411S   FS0B PQ: 0 ANSI: 0
[  257.173820] Driver 'sr' needs updating - please use bus_type methods
[  257.185072] sr0: scsi3-mmc drive: 94x/40x writer cd/rw xa/form2 cdda tray
[  257.185081] Uniform CD-ROM driver Revision: 3.20
[  257.185171] sr 2:0:0:0: Attached scsi CD-ROM sr0
[  257.214445] sr 2:0:0:0: Attached scsi generic sg0 type 5

Root-tunnuksella laite nähdään chroot-ympäristössä, mutta päätteessä se ei näy ltsp001-tunnuksella.

root@ltsp:~# lsusb
Bus 003 Device 002: ID 0ecd:a100 Lite-On IT Corp. 
Bus 003 Device 001: ID 0000:0000  
Bus 002 Device 001: ID 0000:0000  
Bus 001 Device 001: ID 0000:0000

root@ltsp:~# eject
root@ltsp:~#

ltsp001@ubuntu:~$ lsusb
Bus 007 Device 006: ID 046d:0990 Logitech, Inc. 
Bus 007 Device 005: ID 0603:00f2 Novatek Microelectronics Corp. 
Bus 007 Device 004: ID 046d:c019 Logitech, Inc. 
Bus 007 Device 003: ID 2001:f111 D-Link Corp. [hex] DBT-122 Bluetooth adapter
Bus 007 Device 002: ID 05e3:0606 Genesys Logic, Inc. D-Link DUB-H4 USB 2.0 Hub
Bus 007 Device 001: ID 0000:0000  
Bus 004 Device 001: ID 0000:0000  
Bus 003 Device 001: ID 0000:0000  
Bus 002 Device 001: ID 0000:0000  
Bus 006 Device 001: ID 0000:0000  
Bus 005 Device 001: ID 0000:0000  
Bus 001 Device 001: ID 0000:0000

Vaikka asema ei toimikaan polttavana, niin se toimii kuitenkin aivan normaalisti lukevana asemana.

CD-asema

Näytön liittäminen päätteeseen

Kun näyttö on liitetty päätteeseen, niin X yrittää asentaa sen automaattisesti. Yleensä tämä onnistuu, mutta mahdollisia virheilmoituksia voi yrittää jäljittää päätteen chroot-ympäristön /var/log-hakemiston Xorg.6.log-tiedostosta.

asmok@ubuntu:~$ ssh root@192.168.1.244
root@192.168.1.244's password: 
Last login: Wed Jun 18 20:57:04 2008 from server
root@ltsp:~# cd /var/log
root@ltsp:/var/log# ls
apt       boot           btmp        debug  dpkg.log  fontconfig.log  kern.log  ldm.log  mail.err   mail.log   messages  syslog    wtmp        Xorg.6.log.old
auth.log  bootstrap.log  daemon.log  dmesg  faillog   fsck            lastlog   lpr.log  mail.info  mail.warn  news      user.log  Xorg.6.log
root@ltsp:/var/log#

Chroot-ympäristön tutkiminen

Chroot-ympäristöä voi tutkia samoilla työkaluilla kuin muitakin tietokoneita ja ympäristöjä.

root@ltsp:~# ps ax
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:00 /sbin/init
    2 ?        S<     0:00 [kthreadd]
    3 ?        S<     0:00 [migration/0]
    4 ?        S<     0:00 [ksoftirqd/0]
    5 ?        S<     0:00 [watchdog/0]
    6 ?        S<     0:00 [events/0]
    7 ?        S<     0:00 [khelper]
   42 ?        S<     0:00 [kblockd/0]
   45 ?        S<     0:00 [kacpid]
   46 ?        S<     0:00 [kacpi_notify]
  108 ?        S<     0:00 [kseriod]
  142 ?        S      0:00 [pdflush]
  143 ?        S      0:00 [pdflush]
  144 ?        S<     0:00 [kswapd0]
  184 ?        S<     0:00 [aio/0]
 1135 ?        S<     0:00 [unionfs_siod/0]
 1310 ?        S<     0:00 [ksuspend_usbd]
 1313 ?        S<     0:00 [khubd]
 2076 ?        S      0:00 nbd-client 192.168.1.101 2000 /dev/nbd0
 2222 ?        S<s    0:00 /sbin/udevd --daemon
 2400 ?        S<     0:00 [ata/0]
 2406 ?        S<     0:00 [ata_aux]
 2435 ?        S<     0:00 [scsi_eh_0]
 2442 ?        S<     0:00 [scsi_eh_1]
 2495 ?        S<     0:00 [kpsmoused]
 3539 ?        Ss     0:00 /sbin/syslogd -u syslog
 3563 ?        S      0:00 /bin/dd bs 1 if /proc/kmsg of /var/run/klogd/kmsg
 3567 ?        Ss     0:00 /sbin/klogd -P /var/run/klogd/kmsg
 3595 ?        Ss     0:00 /usr/sbin/sshd
 3647 ?        S      0:00 /bin/sh /usr/lib/ltsp/screen.d/ldm
 3655 ?        S<l    0:00 /usr/bin/pulseaudio --system --disable-shm --no-cpu-limit --resample-method=trivial --high-priority -L module-detect -L module-esound-protocol-tcp auth-anonymous=1 -L module-native
 3674 ?        Ss     0:00 /usr/bin/ltspfsd
 3721 tty1     Ss     0:00 /bin/login --     
 3797 tty1     S+     0:00 -bash
 3846 ?        S      0:00 ldm vt7 :6
 3847 tty7     Ss+    0:01 /usr/bin/X -auth /root/.Xauthority -br -noreset vt7 :6
 3848 pts/0    Ss+    0:00 /usr/bin/ssh -X -t -M -S /var/run/ldm_socket_vt7_192.168.1.101 ltsp001@192.168.1.101 echo LTSPROCKS ; LANG=C /bin/sh -
 3883 ?        S      0:00 /usr/bin/ssh -X -t -S /var/run/ldm_socket_vt7_192.168.1.101 -l ltsp001 192.168.1.101 LTSP_CLIENT=192.168.1.244 DISPLAY=192.168.1.244:6  PULSE_SERVER=tcp:192.168.1.244:4713 ESPEAKER
 3886 ?        Ss     0:00 sshd: root@pts/1 
 3889 pts/1    Rs     0:00 -bash
 3920 ?        S<     0:00 [scsi_eh_2]
 3922 ?        S<     0:00 [usb-storage]
 3965 ?        S      0:00 /usr/bin/ltspfsd
 3994 pts/1    R+     0:00 ps ax
root@ltsp:~#


Chroot-ympäristön hyödyntäminen

Kun luodaan joltakin koneelta (palvelin tai vaikka pääkäyttäjän kannettava tietokone) ssh-avainparit päätteelle/päätteille no voidaan sammuttaa etänä päivän päätteeksi. Kun skripti on ei-interaktiivinen (salasanaa ei kysytä), se voidaan ajaa crontab-tehtävänä päivän päätteeksi.

Ensin luodan ssh-avainpari sillä koneella, josta yhteys otetaan päätteeseen/päätteisiin. Kun painetaan Enter-näppäintä kaksi kertaa, niin ei luoda lainkaan kysyttävää salasanaa.

asmok@ubuntu:~$ ssh-keygen -q -f ~/.ssh/id_rsa -t rsa
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
asmok@ubuntu:~$

Kopioidaan julkinen avainpari päätteeseen. Tällä kertaa vielä tarvitaan päätteen root-käyttäjän salasanaa.

asmok@ubuntu:~$ scp ~/.ssh/id_rsa.pub root@192.168.1.244:
root@192.168.1.244's password:
id_rsa.pub 100% 394 0.4KB/s 00:00    
asmok@ubuntu:~$

Kopioidaan julkinen avain paikoilleen ja poistutaan päätteestä.

asmok@ubuntu:~$ ssh root@192.168.1.244
root@192.168.1.244's password: 
root@ltsp:~# cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
root@ltsp:~# exit
logout
Connection to 192.168.1.244 closed.

Testataan kirjautuminen ilman salasanaa.

asmok@ubuntu:~$ ssh root@192.168.1.244
Last login: Thu Jun 19 19:40:51 2008 from server
root@ltsp:~#

Poistutaan päätteestä ja annetaan etänä käsky, joka sammuttaa päätteen. Käsky kirjoitetaan ' '-merkkien väliin.

asmok@ubuntu:~$ ssh root@192.168.1.244 'shutdown -h now'
asmok@ubuntu:~$

Kun kaikkien päätteiden ip-numerot tiedetään, voidaan kirjoittaa skripti, joka sammuttaa päätteet etänä päivän päätteeksi.