Δείτε εδώ τα πιο πρόσφατα μηνύματα από όλες τις περιοχές συζητήσεων, καθώς και όλες τις υπηρεσίες της AcroBase. H εγγραφή σας είναι γρήγορη και εύκολη. |
|
|
|
Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
|
#2
|
|
||||
Τα kernel sources είναι stock, από το kernel.org, ή έχουν εγκατασταθεί από το distribution;
Έχω καιρό να χτίσω kernel για πλατφόρμα που δεν είχε make-kpkg, αλλά απ'όσο θυμάμαι, το make target είναι κάτι σαν bzImage, δηλαδή του λέμε: Κώδικας:
make menuconfig bzImage modules modules_install Αυτή ήταν η τακτική μου όταν έχτιζα 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 Βέβαια έχε υπ'όψη σου ότι θα πρέπει να χτίσεις το initrd/initramfs image μόνος σου, αν το χρησιμοποιείς. Αν δεν το χρησιμοποιείς, ο kernel πρέπει να έχει compiled in (όχι ως modules) drivers για:
Συγγνώμη για το γενικό της απάντησης, αλλά τον τελευταίο καιρό δουλεύω σε πολλά embedded και headless κουτιά που έχουν ειδικές ανάγκες, οπότε κατέληξα να γενικεύσω κάποιες οδηγίες πάρα πολύ.
__________________
www.bedroomlan.org |
Οι παρακάτω χρήστες έχουν πει 'Ευχαριστώ' στον/στην Morgul για αυτό το μήνυμα: | ||
Archmage (02-03-10) |
#3
|
|
||||
Το 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. Αν είναι τόσο σημαντικό, φαντάζομαι θα έπρεπε να το γράφει κάπου με, ας πούμε, μεγάλα γράμματα (τέλος πάντων). [*] Ενδεχομένως το πρόβλημα δεν έχει καθόλου σχέση με το make ή τον kernel αλλά πχ με το grub ή κάτι τελείως διαφορετικό. Δεδομένου ότι δεν έχω πείρα από όλα αυτά, μπορεί να το έθεσα εξαρχής σε λάθος βάση...
__________________
may you live in interesting times |
#4
|
|
||||
Μετά το 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 δεν υπάρχει. Να μερικά σενάρια:
Κώδικας:
< > Dell laptop support [ ] Enable X86 board specific fixups for reboot Αλλά αν έχεις μηδέν modules, καλύτερα να ενσωματώσεις στον kernel ακριβώς αυτά που χρειάζεσαι, και καλύτερα να ξέρεις ακριβώς τι χρειάζεσαι. Αλλιώς θα έχεις πρόβλημα, μια και υπάρχουν όλο και περισσότερα layers στον kernel αυτή την εποχή. Προσωπικά χτίζω τα πάντα σε modules και αφήνω τον hald να φορτώσει ό,τι χρειάζεται όταν το χρειαστεί. Αυτό κάνει και το Debian. Επί της ουσίας, τι ακριβώς προσπαθείς να κάνεις με τον kernel;
__________________
www.bedroomlan.org |
#5
|
|
||||
Καταρχήν ευχαριστώ για τις πληροφορίες.
Αυτό που προσπαθώ να κάνω είναι τυπικό install -> patch kernel -> replace kernel με όποια τελευταία stable version βρήκα από οτιδήποτε (distro, patch, kernel.org). Προφανώς... θέλει κάτι παραπάνω από RTFM
__________________
may you live in interesting times |
#6
|
|
||||
Μια καλή λύση για να χτίσεις ένα νέο 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 επισκέπτες) | |
|
|