Εκκίνηση LTSP clients με UEFI

Ξεκίνησε από alkisg, 06 Δεκ 2015, 08:55:39 ΠΜ

« προηγούμενο - επόμενο »

alkisg

Για προχωρημένους χρήστες.

Το UEFI εν ολίγοις αντικατέστησε το BIOS στους νεότερους υπολογιστές. Έφερε κάμποσες αλλαγές και στην τοπική εκκίνηση (απαίτηση για GPT δίσκους αντί MBR, με κάποιο partition εκκίνησης σε FAT32 κλπ) και στην εκκίνηση μέσω δικτύου.

Τα εργαλεία που χρησιμοποιούμε για εκκίνηση μέσω δικτύου (dnsmasq, iPXE κλπ) δεν είναι ακόμα πλήρως έτοιμα για εκκίνηση μέσω δικτύου κάτω από UEFI.
Έτσι συνήθως προτείνουμε να το απενεργοποιήσετε και να επιστρέψετε σε κατάσταση BIOS, που πλέον την αναφέρουν ως Legacy ή CSM:
https://neosmart.net/wiki/enable-legacy-boot-mode/
Τότε όμως είναι πιθανό να χρειαστούν επανεγκατάσταση τα Windows.

Αναφέρω εδώ μια άλλη δυνατότητα που υλοποίησα πρόσφατα στο LTSP.
1) Εγκαθιστούμε τοπικά κάποια 64 bit έκδοση Ubuntu, οι οποίες υποστηρίζουν UEFI. Δεν μας ενδιαφέρει και πολύ το ποια έκδοση είναι, μας ενδιαφέρει ότι θα καταφέρει με έναν απλό τρόπο να μας εγκαταστήσει τον grub boot manager κάτω από UEFI. Κυκλοφορούν κάμποσα laptops σε σχολεία που ήδη έχουν dual boot Windows 7/8 και Ubuntu 64 bit σε UEFI.

2) Στον LTSP server, βάζουμε στατική IP. Προσοχή, εάν έχουμε τους φτηνούς ρούτερ, speedtouch κλπ, για να βάλουμε στατική IP πρέπει να ρυθμίσουμε κατάλληλα το DHCP range από το web interface του router. Ενώ αν έχουμε Cisco/Mikrotik, βάζουμε την 10.x.y.10.

3) Εκκινούμε την τοπική εγκατάσταση Ubuntu και δίνουμε τις παρακάτω εντολές:
Κώδικας: Bash
sudo -i

# Αρχική αντιγραφή των αρχείων vmlinuz και initrd.img από τον server:
cd /boot/
# 10.x.y.10 υποτίθεται ότι είναι η IP του server σας.
scp administrator@10.x.y.10:/var/lib/tftpboot/ltsp/i386/vmlinuz .
# Πατήστε "y", δώσε τον κωδικό του administrator στον server κλπ.
scp administrator@10.x.y.10:/var/lib/tftpboot/ltsp/i386/initrd.img .

# Δημιουργία του κατάλληλου μενού στον grub:
cd /etc/grub.d/
# Εάν δεν θέλουμε η προεπιλογή να είναι το LTSP, βάζουμε 40 αντί για 09:
cp 40_custom 09_ltsp
# Με την blkid βλέπουμε το partition που έχουμε εγκαταστήσει το Ubuntu:
blkid
# Στα παρακάτω, βάλτε την IP του server σας και το partition /dev/sdax του Ubuntu:
cat >>09_ltsp <<EOF
menuentry 'Boot LTSP from 10.x.y.10' {
        linux   /boot/vmlinuz ro init=/sbin/init-ltsp forcepae root=/dev/nbd0 nbdroot=10.x.y.10:/opt/ltsp/i386 ltsp.kernel_device=/dev/sda3
        initrd  /boot/initrd.img
}
EOF
update-grub


Στην επόμενη επανεκκίνηση θα μας εμφανιστεί ένα μενού "Boot LTSP from 10.x.y.10", αν το επιλέξουμε θα ξεκινήσει μέσω δικτύου.
Η εντολή "ltsp.kernel_device" που γράψαμε παραπάνω λέει στον LTSP client να ενημερώνει αυτόματα τον τοπικό kernel όταν υπάρχει νέα έκδοσή του στον LTSP server. Σ' αυτήν την περίπτωση θα γίνεται αυτόματα αντιγραφή και επανεκκίνηση, ώστε ο client στη συνέχεια να ξεκινήσει με τον νέο πυρήνα.


Άσχετο, αλλά οι παραπάνω οδηγίες μπορούν επίσης να χρησιμοποιηθούν και εκτός UEFI, για παράδειγμα εάν κάποιος client έχει κάρτα δικτύου που δεν την υποστηρίζει το iPXE, και δεν έχει ούτε επιλογή Boot from LAN στο BIOS του.

gidarakos

Παράθεση από: alkisg στις 06 Δεκ 2015, 08:55:39 ΠΜ
1) Εγκαθιστούμε τοπικά κάποια 64 bit έκδοση Ubuntu, οι οποίες υποστηρίζουν UEFI.
Άλκη, αυτό - το αναπόφευκτο - να μπορούσαμε να αποφύγουμε μια χαρά θα ήταν! ;)

Όποιος θέλει να φρεσκάρει λίγο τη θεωρία MBR/GPT ας διαβάσει λίγο - στα ελληνικά - το GUID Partition Table.

alkisg

Υπάρχουν διάφοροι οδηγοί για εγκατάσταση του GRUB σε UEFI χωρίς ταυτόχρονη εγκατάσταση Linux, αλλά είναι λίγο δύσκολοι.

Αν χρειάζεται, νομίζω ότι μπορώ να φτιάξω ένα grub-efi-ltsp.zip αρχείο κάτω από 100 MB το οποίο θα το αποσυμπιέζετε στο EFI partition και θα δίνει επιλογές "Boot LTSP/Boot Windows". Αν δεν κάνω λάθος θα χρειαστεί να κάνετε και μετονομασία ενός αρχείου του boot loader των Windows.

Στο μέλλον υποθέτω ότι ο win32-loader θα υποστηρίζει και UEFI, οπότε θα χρησιμοποιούμε αυτό, μέσα από τα Windows...

richard

My two cents

Δεν ξέρω πόσο σημαντικό είναι ότι υπάρχουν άπειρες μορφές uefi. Κάθε εταιρία βγάζει το δικό της. Για παράδειγμα, μία κυρία είχε ένα hp λάπτοπ δώρο από τα παιδιά της που είχε 64bit win8. Δεν της άρεσε και μου ζήτησε να βάλω linux.

Κατάφερα να βάλω 64bit ubuntu σε uefi και όταν πάτησες F9 στην ξεκίνημα μπόρεσες να βρεις ένα uefi menu και να διάλεξες ubuntu. Ότι άλλες αλλαγές η μέσα το linux η στο uefi να αλλάξει την προεπιλεγμένη κατάσταση να μη είναι windows δεν ήταν πετυχημένες. Απλά η κυρία εύκολα έμαθε να πατήσει το F9.

Άλλες εταιρίες αφήνουν το legacy μαζί με της επιλογές με uefi αφού δεν ενεργοποιείς την secure boot επιλογή και ότι αλλαγή ρυθμίζεις στην σειρά το κρατάει.

Επίσης όλες τις μορφές έχουν πολλές bugs, μερικές σοβαρές, άλλες μη συμαντικές.

Εάν τις καταφέρνεις όλες να τις φέρνεις βόλτα, μπράβο σου!

Richard

gidarakos

Με αφορμή αυτό το θέμα και επειδή το χρειάστηκα πρόσφατα, στο wiki στο faq 19 Δεν εγκαταστάθηκε ο Grub ή μία καινούρια εγκατάσταση Windows τον έσβησε υπάρχει λάθος στη διεύθυνση του "εδώ" - ένα "/" στο τέλος - με αποτέλεσμα να εμφανίζεται "404 Error - Page Not Found".
Το σωστό url του "εδώ" είναι: http://howtoubuntu.org/how-to-repair-restore-reinstall-grub-2-with-a-ubuntu-live-cd


jim_katsar

Ακριβώς τα ίδια μηχανήματα μας έχουν έρθει και εμάς με του: ChrMel
Τα ίδια προβλήματα συνάντησα και εγώ...
Όμως έκανα αμέσως boot στον LTSP Server 32Bit είτε πατώντας το F12(ενεργοποίησα UEFI+Legacy) είτε απενεργοποιώντας το UEFI και κρατώντας μόνο το Legacy περιβάλλον. Με τον δεύτερο τρόπο όμως δεν μπορώ να μπω στα Windows. Όταν απενεργοποιείται το UEFI εξαφανίζεται και το grub που επιτρέπει το dual boot. Με τον πρώτο τρόπο δεν μπορώ κάθε φορά ένα ένα τους client να περιμένω πατώντας F12.
Για μένα δεν είναι πρόβλημα τα windows γιατί απλά δεν τα χρησιμοποιώ, όμως οι δάσκαλοι τα θέλουν.
Και σε εμένα το grub-ipxe δεν έπαιξε.. Μάλλον κάτω από UEFI έχει θέμα!

Δοκίμασα αυτά που προτείνει ο άλκης: https://alkisg.mysch.gr/steki/index.php?topic=6466.msg75020#msg75020 όμως δεν τα κατάφερα
Παραθέτω παρακάτω τα αποτελέσματα του client αφού έβαλα στατική ip στον server όπως λένε οι οδηγίες
Το ρουτερ είναι κλασικό speedport (https://www.cosmote.gr/fixed/documents/10280/87751345/Speedport_Entry_2i_Maintenance_Management_EN_v_2_1.pdf/e5aa9ed9-8e66-4d3b-8283-b79d67e0ded9) του ΟΤΕ

Καμία επιπλέον ιδέα;

Υ.Γ. Κάτι είπαν σήμερα ότι θα έρθει από τον ΟΤΕ τεχνικός να μας συνδέσει με οπτικές ίνες... Δεν ξέρω αν αυτό θα επηρεάσει το εργαστήριο και τι αλλαγή θα γίνει με το υπάρχον router του ΟΤΕ

alkisg

Σ' εκείνο το σημείο τρέξε λίγο την παρακάτω εντολή, και ανέβασε το αποτέλεσμα ή φωτογραφία:
cat /proc/cmdline

Μήπως δεν έβαλες την σωστή ip στο nbdroot=...

jim_katsar

Άλκη έχεις δίκιο δεν το είχα προσέξει το: nbdroot=... και δεν είχα αλλάξει εκεί την ip
Δούλεψε εφαρμόζοντας αυτή την αλλαγή!
Υπάρχει όμως ένα θέμα, με βάζει σε ανάλυση 1024χ768 υποχρεωτικά χωρίς να μπορώ να την αλλάξω. Εννοείται δεν το θέλω αυτό.
Όταν κάνω boot με F12 ή απενεργοποιώντας το UEFI (μέσα από legacy) μπαίνει κανονικά στην ανάλυση που υποστηρίζει ο υπολογιστής 1920χ1080. Και δίνεται η δυνατότητα να αλλάξω την ανάλυση και σε μικρότερη!
Λύνεται αυτό το θέμα;

Και ένα δεύτερο, σε λίγο θα συνδεθούμε στο πανελλήνιο σχολικό δίκτυο τι ip θα δώσω; Εννοείται δεν υπάρχει Cisco/Mikrotik ρούτερ. Να δώσω 10.x.y.10  ή όπου 'χ' και 'y' να βάλω κανονικά τιμές;


alkisg

Για την ανάλυση, μπορεί να θέλει νέο kernel ή xorg. Αφού μπουτάρει σε uefi, μέσα από τον Επόπτη κάνε άνοιγμα τερματικού → Διαχειριστή, τοπικά, και δώσε:
cat /var/log/Xorg.7.log | nc termbin.com 9999
Θα σου απαντήσει με ένα URL της μορφής termbin.com/qwer, ανέβασέ το εδώ.
Ή έλα από το IRC.

Για τις IP, εφόσον δεν έχεις cisco/mikrotik, μπες στον router στο μενού που συνήθως λέει "DHCP binding" και δήλωσε εκεί τις στατικές IP που χρειάζεσαι με βάση τη MAC address τους χωρίς να αλλάξεις το DHCP range του router.
Δηλαδή ο router θα συνεχίσει να δίνει IP π.χ. από 192.168.1.2 ως 192.168.1.254,
αλλά θα του έχεις πει να δίνει την 192.168.1.10 συγκεκριμένα στον LTSP server δηλώνοντας την MAC address του εκεί.

Οπότε τελικά στον client βάλε nbdroot=192.168.1.10 κλπ.

jim_katsar

#10
Όλα τα προηγούμενα τα εφάρμοσα σε LTSP Ubuntu 12.04 και δούλεψαν όπως αναφέρω (Δεν καίγομαι γιατί είναι για πολύ λίγο μέχρι να μπει ο 18.04)
Σήμερα που έστησα τον UbuntuMate 18.04 έκανα όλα αυτά που αναφέρεις στο router και server. Έβαλα άλλη στατική ip από τον παλιό 12.04 και κολλάω εδώ όπως φαίνεται στην φωτογραφία  ενώ υπάρχει ο Server με ip 192.168.1.71

Μήπως επειδή ο νέος Server 18.04 είναι στημένος με 64bit σύστημα;
Θέλει άλλες εντολές; (Μου ήρθε φλασιά! παρατηρώντας καλύτερα τις εντολές)





jim_katsar

Το αποτέλεσμα είναι στην παρακάτω εικόνα...
Μήπως επειδή ο Server είναι 64bit;



alkisg

Ναι εφόσον είναι 64bit πρέπει στη διαδρομή του φακέλου να αλλάξεις το i386 σε amd64.
Επίσης θες μπορείς να κάνεις αντιγραφή/επικόλληση το κείμενο, για να μην παιδεύεσαι με εικόνες...

jim_katsar

Δούλεψε τελικά μια χαρά.. Το μόνο θέμα είναι ότι δεν δουλεύει το autologin(έχω ένα χρήστη σε κάθε υπολογιστή). Παρόλο που το lts.conf είναι κανονικά ρυθμισμένο
Όταν κάνω boot με F12 δουλεύει κανονικά το autologin

Με τον LTSP Server 12.04 που είχα δοκιμάσει, πάλι τις ίδιες εντολές το autologin δούλευε κανονικά!