Acrobase  

Καλώς ήρθατε στην AcroBase.
Δείτε εδώ τα πιο πρόσφατα μηνύματα από όλες τις περιοχές συζητήσεων, καθώς και όλες τις υπηρεσίες της AcroBase.
H εγγραφή σας είναι γρήγορη και εύκολη.

Επιστροφή   Acrobase > Υπολογιστές και Τεχνολογία > Πληροφορική και Επικοινωνία > Linux
Ομάδες (Groups) Τοίχος Άρθρα acrobase.org Ημερολόγιο Φωτογραφίες Στατιστικά

Notices

Δεν έχετε δημιουργήσει όνομα χρήστη στην Acrobase.
Μπορείτε να το δημιουργήσετε εδώ

Απάντηση στο θέμα
 
Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 01-03-10, 12:45
Το avatar του χρήστη Archmage
Archmage Ο χρήστης Archmage δεν είναι συνδεδεμένος
Μέλος
 

Τελευταία φορά Online: 14-03-18 00:30
Φύλο: Άντρας
Νέος kernel & GRUB;

Έχω το εξής πρόβλημα: To compile τοy νέου kernel (make) τελειώνει με μήνυμα λάθους, ότι δε βρίσκει το LILO. Προφανές, ίσως, επειδή έχω GRUB! Το θέμα λοιπόν είναι πώς θα βάλω το νέο kernel.

Έχω πειράξει το /boot/grub/menu.lst αλλά... δεν. Σκάει όταν δε βρίσκει το disk uuid, πιθανόν επειδή έκανα copy-paste την υπάρχουσα working γραμμή από την αρχική εγκατάσταση (και έχω παίξει και με labels/names/whatever).

Ενδεχομένως έχει σχέση αυτό με κάποιο ramdisk image που πρέπει (; ) να φτιάξω - αλλά πάλι δεν ξέρω πώς. Το make τελειώνει με 2 αρχεία, bzImage και System.map, δε θα έπρεπε να φτιάξει και το ramdisk αν είναι όντως απαραίτητο;

Με google βρήκα διάφορα πράγματα στο net, αλλά εφαρμόζονται μόνο αποσπασματικά στο συγκεκριμένο distribution (arch linux) και δεν έχω ολοκληρωμένη λύση (πχ δεν έχω το mkinitrd). Υποψιάζομαι ότι είναι κάτι εύκολο, αλλά μάλλον δεν ξέρω πώς να το ψάξω

Αλλαγή distribution δεν αποτελεί επιλογή.
__________________
may you live in interesting times
Απάντηση με παράθεση
  #2  
Παλιά 01-03-10, 20:00
Το avatar του χρήστη Morgul
Morgul Ο χρήστης Morgul δεν είναι συνδεδεμένος
Άσωτος διαχειριστής
 

Τελευταία φορά Online: 26-03-22 21:02
Φύλο: Δεν έχω αποφασίσει ακόμα
Τα kernel sources είναι stock, από το kernel.org, ή έχουν εγκατασταθεί από το distribution;

Έχω καιρό να χτίσω kernel για πλατφόρμα που δεν είχε make-kpkg, αλλά απ'όσο θυμάμαι, το make target είναι κάτι σαν bzImage, δηλαδή του λέμε:

Κώδικας:
make menuconfig bzImage modules modules_install
Εγώ προσωπικά δε λέω ποτέ make install, κι αντ'αυτού προτιμώ να κάνω cp arch/$ARCH/boot/bzImage /boot/vmlinuz-$VERSION

Αυτή ήταν η τακτική μου όταν έχτιζα kernels χωρίς initrd. Δηλαδή ο kernel είχε ενσωματωμένους όλους τους drivers που χρειαζόταν για να ξυπνήσει το storage hardware, να βρει τα partitions, και να κάνει mount το root filesystem όπου έβρισκε όλα τα υπόλοιπα modules (πχ keyboard drivers κλπ).

Η σύγχρονη τακτική είναι να χτίζονται (σχεδόν) όλα τα drivers του kernel ως modules, και να φορτώνονται από ένα initrd image (που φορτώνει ο boot loader μαζί με τον kernel). Το κάνει πιο γενικό, αλλά και πιο περίπλοκο.

Υποψιάζομαι ότι το πρόβλημά σου είναι στο make install. Αν πεις make help, θα δεις αρκετή βοήθεια για τα make targets, μεταξύ της οποίας βρίσκω κι αυτό:

Κώδικας:
Architecture specific targets (i386):
* bzImage       - Compressed kernel image (arch/i386/boot/bzImage)
  install       - Install kernel using
                   (your) ~/bin/installkernel or
                   (distribution) /sbin/installkernel or
                   install to $(INSTALL_PATH) and run lilo
  bzdisk       - Create a boot floppy in /dev/fd0
  fdimage      - Create a boot floppy image
  isoimage     - Create a boot CD-ROM image
Κοινώς, αν δεν έχεις ~/bin/installkernel ή /sbin/installkernel, τότε το LILO είναι απαραίτητο. Θεωρητικά, το distribution σου θα πρέπει να περιλαμβάνει το /sbin/installkernel.

Βέβαια έχε υπ'όψη σου ότι θα πρέπει να χτίσεις το initrd/initramfs image μόνος σου, αν το χρησιμοποιείς. Αν δεν το χρησιμοποιείς, ο kernel πρέπει να έχει compiled in (όχι ως modules) drivers για:
  • Το filesystem του root partition σου.
  • Το δίσκο του root partition σου (αν χρειάζεται driver).
  • Το transport μεταξύ του δίσκου και του controller του (πχ USB, SCSI, SATA).
  • Τον controller που βλέπει το δίσκο του root partition.
  • Το transport με τα οποία μιλάς στον controller (PCI).
Και κατά προτίμηση, μάλλον θα θες και console drivers (keyboard, vga/vesa console, rs232/usb/bmc/ipmi drivers).

Συγγνώμη για το γενικό της απάντησης, αλλά τον τελευταίο καιρό δουλεύω σε πολλά embedded και headless κουτιά που έχουν ειδικές ανάγκες, οπότε κατέληξα να γενικεύσω κάποιες οδηγίες πάρα πολύ.
__________________
www.bedroomlan.org
Απάντηση με παράθεση
Οι παρακάτω χρήστες έχουν πει 'Ευχαριστώ' στον/στην Morgul για αυτό το μήνυμα:
Archmage (02-03-10)
  #3  
Παλιά 02-03-10, 03:46
Το avatar του χρήστη Archmage
Archmage Ο χρήστης Archmage δεν είναι συνδεδεμένος
Μέλος
 

Τελευταία φορά Online: 14-03-18 00:30
Φύλο: Άντρας
Αρχική Δημοσίευση από Morgul Εμφάνιση μηνυμάτων
Τα kernel sources είναι stock, από το kernel.org, ή έχουν εγκατασταθεί από το distribution;
Είναι γενικώς ότι έτοιμο official υπάρχει, όπως official distribution (live cd -> install), official kernel.org (τελευταίος) και official patch (xenomai). Είναι laptop αποκλειστικά για αυτό το θέμα (κενός δίσκος κλπ).

Το make μου λέει "kernel ready" χωρίς λάθος και γενικά κάνω ακριβώς ότι λένε οι διάφορες σελίδες που βρίσκω σπαρμένες εδώ κι εκεί. Έχω φτιάξει το bzimage, το System.map και τελικά έφτιαξα και το ramdisk μετά από hints του Γίλδωρα (ty!).

Δεν έκανα make install αλλά cp τα kernel image, ramdisk και System.map στο /boot

Το πρόβλημα φαίνεται[*] ότι είναι η γραμμή του grub που ορίζει το kernel, κάτι σαν:

kernel /mykernel root=/dev/sda3 ro

Αρνείται πεισματικά να δει το δίσκο (υπαρξιακό ερώτημα: και τότε πώς φορτώνει, με παρθενογένεση; ), διότι δε δέχεται κανένα συνδυασμό /dev/* που μπορώ να φανταστώ (με κόκκινο). Έχω δοκιμάσει το υπάρχον uuid, δικό μου label και τα /dev/hda, /dev/sda με ή χωρίς νούμερο μετά το a.
Αρχική Δημοσίευση από Morgul Εμφάνιση μηνυμάτων
Κοινώς, αν δεν έχεις ~/bin/installkernel ή /sbin/installkernel, τότε το LILO είναι απαραίτητο. Θεωρητικά, το distribution σου θα πρέπει να περιλαμβάνει το /sbin/installkernel.
Δεν είμαι απόλυτα σίγουρος, αλλά δε νομίζω ότι έχει τέτοιο πράγμα, ούτε το είδα να αναφέρεται σε οποιαδήποτε από τις σελίδες που διάβασα.

Αν είναι τόσο σημαντικό, φαντάζομαι θα έπρεπε να το γράφει κάπου με, ας πούμε, μεγάλα γράμματα (τέλος πάντων).
Αρχική Δημοσίευση από Morgul Εμφάνιση μηνυμάτων
Βέβαια έχε υπ'όψη σου ότι θα πρέπει να χτίσεις το initrd/initramfs image μόνος σου, αν το χρησιμοποιείς.
Υπάρχει σημαντικός λόγος που δεν το κάνει το make; (ΟΚ κι αυτό ανήκει στα υπαρξιακά ερωτήματα..)
Αρχική Δημοσίευση από Morgul Εμφάνιση μηνυμάτων
Αν δεν το χρησιμοποιείς, ο kernel πρέπει να έχει compiled in (όχι ως modules) drivers για: .......
Στο make menuconfig (ή οπουδήποτε πριν το τελικό make) υπάρχει τρόπος να του πω να κάνει "forced" compiled in όλα όσα επέλεξα ώστε να έχω μηδέν modules; Ή πρέπει να ελέγξω μία μία τις (πολλές...) επιλογές που έχει;



[*] Ενδεχομένως το πρόβλημα δεν έχει καθόλου σχέση με το make ή τον kernel αλλά πχ με το grub ή κάτι τελείως διαφορετικό. Δεδομένου ότι δεν έχω πείρα από όλα αυτά, μπορεί να το έθεσα εξαρχής σε λάθος βάση...
__________________
may you live in interesting times
Απάντηση με παράθεση
  #4  
Παλιά 02-03-10, 22:57
Το avatar του χρήστη Morgul
Morgul Ο χρήστης Morgul δεν είναι συνδεδεμένος
Άσωτος διαχειριστής
 

Τελευταία φορά Online: 26-03-22 21:02
Φύλο: Δεν έχω αποφασίσει ακόμα
Αρχική Δημοσίευση από Archmage Εμφάνιση μηνυμάτων
Το make μου λέει "kernel ready" χωρίς λάθος και γενικά κάνω ακριβώς ότι λένε οι διάφορες σελίδες που βρίσκω σπαρμένες εδώ κι εκεί. Έχω φτιάξει το bzimage, το System.map και τελικά έφτιαξα και το ramdisk μετά από hints του Γίλδωρα (ty!).

Δεν έκανα make install αλλά cp τα kernel image, ramdisk και System.map στο /boot

Το πρόβλημα φαίνεται[*] ότι είναι η γραμμή του grub που ορίζει το kernel, κάτι σαν:

kernel /mykernel root=/dev/sda3 ro

Αρνείται πεισματικά να δει το δίσκο (υπαρξιακό ερώτημα: και τότε πώς φορτώνει, με παρθενογένεση; ), διότι δε δέχεται κανένα συνδυασμό /dev/* που μπορώ να φανταστώ (με κόκκινο). Έχω δοκιμάσει το υπάρχον uuid, δικό μου label και τα /dev/hda, /dev/sda με ή χωρίς νούμερο μετά το a.
Σχετικά με το πώς φορτώνει:

Μετά το POST, το BIOS φόρτώνει το MBR του πρώτου σου δίσκου, βρίσκει το boot loader του GRUB, το φορτώνει, και σταδιακά φορτώνει το υπόλοιπο GRUB με BIOS calls και το εκτελεί.

Όταν επιλέξεις kernel, το GRUB φορτώνει (με BIOS calls) το kernel image και το initrd/initramfs και εκτελεί τον kernel. Σ'αυτό το σημείο ο kernel κάνει boot, αποσυμπιέζει το initrd/initramfs, το κάνει mount, φορτώνει όσα modules χρειάζεται, και μετά κάνει mount (read-only) το root filesystem (/dev/sda3) στο / και εκτελεί το /sbin/init.

Στη δική σου περίπτωση, προφανώς το /dev/sda3 δεν υπάρχει. Να μερικά σενάρια:
  • Δεν ξέρει τι filesystem είναι το /dev/sda3 (άκυρη περίπτωση, αν σου λέει ότι δεν ΒΡΙΣΚΕΙ το /dev/sda3).
  • Δεν υπάρχει το /dev/sda3 (αλλά υπάρχει το /dev/sda) επειδή δεν έχεις χτίσει/περιλάβει στο initramfs τον driver για το PC partitioning scheme.
  • Δεν υπάρχει το /dev/sda3 ούτε το /dev/sda γιατί δε βρίσκει τον driver για το PCI, SATA controller, κλπ.
  • Το initramfs/initrd σου δεν έχει udevd/hald, κι έτσι, ενώ τα απαραίτητα modules υπάρχουν, δεν φορτώνονται γιατί λείπει το user-space πρόγραμμα που είναι υπεύθυνο να φορτώσει τα kernel modules.

Αρχική Δημοσίευση από Archmage Εμφάνιση μηνυμάτων
Στο make menuconfig (ή οπουδήποτε πριν το τελικό make) υπάρχει τρόπος να του πω να κάνει "forced" compiled in όλα όσα επέλεξα ώστε να έχω μηδέν modules;
Κάθε driver που μπορεί να χτιστεί ως module μπορεί να χτιστεί και ως μέρος του μονολιθικού kernel: στο menuconfig απλά πατάς Y αντί για M. Οι δυνατότητες που μπορούν να χτιστούν περικλείουν το σχετικό indicator σε <>, ενώ όσες μπορούν να χτιστούν αποκλειστικά ως μέρος του μονολιθικού kernel περικλείονται από []. Πχ:

Κώδικας:
< > Dell laptop support
[ ] Enable X86 board specific fixups for reboot
Το πρώτο μπορεί να είναι disabled (N), στον kernel (Y) ή σε module (M). Το δεύτεορ μπορεί να είναι μόνο disabled ή μέσα στον kernel.

Αλλά αν έχεις μηδέν modules, καλύτερα να ενσωματώσεις στον kernel ακριβώς αυτά που χρειάζεσαι, και καλύτερα να ξέρεις ακριβώς τι χρειάζεσαι. Αλλιώς θα έχεις πρόβλημα, μια και υπάρχουν όλο και περισσότερα layers στον kernel αυτή την εποχή. Προσωπικά χτίζω τα πάντα σε modules και αφήνω τον hald να φορτώσει ό,τι χρειάζεται όταν το χρειαστεί. Αυτό κάνει και το Debian.

Αρχική Δημοσίευση από Archmage Εμφάνιση μηνυμάτων
[*] Ενδεχομένως το πρόβλημα δεν έχει καθόλου σχέση με το make ή τον kernel αλλά πχ με το grub ή κάτι τελείως διαφορετικό. Δεδομένου ότι δεν έχω πείρα από όλα αυτά, μπορεί να το έθεσα εξαρχής σε λάθος βάση...
Κι εγώ νομίζω ότι είναι δύο διαφορετικά προβλήματα, ή έστω δύο προβλήματα που σχετίζονται αλλά όχι τελείως.

Επί της ουσίας, τι ακριβώς προσπαθείς να κάνεις με τον kernel;
__________________
www.bedroomlan.org
Απάντηση με παράθεση
  #5  
Παλιά 03-03-10, 12:39
Το avatar του χρήστη Archmage
Archmage Ο χρήστης Archmage δεν είναι συνδεδεμένος
Μέλος
 

Τελευταία φορά Online: 14-03-18 00:30
Φύλο: Άντρας
Αρχική Δημοσίευση από Morgul Εμφάνιση μηνυμάτων
Επί της ουσίας, τι ακριβώς προσπαθείς να κάνεις με τον kernel;
Καταρχήν ευχαριστώ για τις πληροφορίες.

Αυτό που προσπαθώ να κάνω είναι τυπικό install -> patch kernel -> replace kernel με όποια τελευταία stable version βρήκα από οτιδήποτε (distro, patch, kernel.org). Προφανώς... θέλει κάτι παραπάνω από RTFM
__________________
may you live in interesting times
Απάντηση με παράθεση
  #6  
Παλιά 03-03-10, 22:48
Το avatar του χρήστη Morgul
Morgul Ο χρήστης Morgul δεν είναι συνδεδεμένος
Άσωτος διαχειριστής
 

Τελευταία φορά Online: 26-03-22 21:02
Φύλο: Δεν έχω αποφασίσει ακόμα
Αρχική Δημοσίευση από Archmage Εμφάνιση μηνυμάτων
Καταρχήν ευχαριστώ για τις πληροφορίες.

Αυτό που προσπαθώ να κάνω είναι τυπικό install -> patch kernel -> replace kernel με όποια τελευταία stable version βρήκα από οτιδήποτε (distro, patch, kernel.org). Προφανώς... θέλει κάτι παραπάνω από RTFM
Αχά, άρα δεν προσπαθείς υποχρεωτικά να κάνεις reconfigure.

Μια καλή λύση για να χτίσεις ένα νέο kernel με το configuration που έχεις ήδη είναι η εξής:

1. Κοίτα στο boot και βρες το αρχείο /boot/config-x.yy.zz όπου x.yy.zz είναι η έκδοση του kernel σου (με uname -r μπορείς να τη δεις). Αν υπάρχει αυτό, είσαι τυχερός!

2. Αντίγραψε αυτό το αρχείο στο root directory του kernel source σου, και ονόμασέ το «.config».

3. Κάνε make oldconfig και θα σου εμφανιστούν όλες οι νέες επιλογές του kernel configuration. Οι παλιές θα μείνουν ως έχουν σύμφωνα με το config file που μόλις εγκατέστησες. Απαντάς όπως θες σ'αυτές (αν θες τις default απαντήσεις, μπορείς απλώς να πεις make menuconfig και να τις κοιτάξεις, μια και το make oldconfig δεν είναι ιδιαίτερα φιλικό στο χρήστη).

4. Χτίζεις τον kernel σύμφωνα με τις οδηγίες του distribution σου. Αν ο παλιός σου kernel δούλευε στο κουτί σου, λογικά και ο νέος θα δουλέψει μια χαρά.
__________________
www.bedroomlan.org
Απάντηση με παράθεση
Οι παρακάτω χρήστες έχουν πει 'Ευχαριστώ' στον/στην Morgul για αυτό το μήνυμα:
Archmage (04-03-10)
Απάντηση στο θέμα


Συνδεδεμένοι χρήστες που διαβάζουν αυτό το θέμα: 1 (0 μέλη και 1 επισκέπτες)
 
Εργαλεία Θεμάτων
Τρόποι εμφάνισης

Δικαιώματα - Επιλογές
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι σε λειτουργία

Που θέλετε να σας πάμε;


Όλες οι ώρες είναι GMT +3. Η ώρα τώρα είναι 15:34.



Forum engine powered by : vBulletin Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.