Εγκατάσταση οποιαδήποτε διανομή κατευθείαν στην κατάτμηση.

andreas122 | Κυρ, 05/29/2011 - 21:10 | 3' | 17

Με αφορμή το Gentoo που δεν έχει Installer θέλω να βρω έναν τρόπο να εγκαταστήσω μια διανομή Linux π.χ. το Gentoo ή κάποια άλλη που είναι live-cd/dvd.

...και προσπαθώ να την εγκαταστήσω όπως είναι στην κατάτμηση χειροκίνητα, χωρίς Installer, και χωρίς να βάζω κάθε πακέτο ξεχωριστά, απλά μια αντιγραφή του live-cd στην κατάτμηση του σκληρού δίσκου, έτσι και αλλιώς το Live-dvd δουλεύει άψογα. και πως γίνετε αυτό? όχι δεν θέλω να μεταφέρω τα δεδομένα του dvd στο σκληρό δίσκο, αλλά το σύστημα αρχείων, δλδ το αρχείο που περιέχει το Filesystem να είναι κανονικό Filesystem και όχι σε ένα αρχείο όπως γίνετε συνήθως στα Live-cd.

Προσπάθησα να αντιγράψω το / στο /mnt/sdX αλλά έκανε άπειρες ώρες, μετά προσπάθησα να αποσυμπιέσω το αρχείο που έχει το σύστημα αρχείων άλλα και πάλι δεν έγινε διότι δεν έβρισκα που ήταν ο πυρήνας του, ίσως να ήταν στον κεντρικό φάκελο του live-dvd και όχι το συμπιεσμένο σύστημα αρχείων, και τι γίνετε με τα /proc και /dev ξαναφτιάχνονται από την αρχή ή απλά αντιγράφονται

τέλος πάντων ξέρει κανένας να πει πως γίνετε αυτό? δλδ εγκατάσταση της διανομής χωρίς την χρήση του Installer.


Ευχαριστώ για τις απαντήσεις, θα μου είναι πολύ χρήσιμες για εμένα αλλά και για τους επισκέπτες που θα σας διαβάσουν το θέμα.


Μην αφήσετε το θέμα αναπάντητο, ότι πείτε καλό θα είναι, ακόμη και ας ειναι υπερσύνδεση.

Δώσε αστέρια!

MO: (ψήφοι: 0)

Σχόλια

Όταν μιλάμε για εγκατάσταση έχουμε και έναν installer για γνωστούς λόγους.

Άν θέλουμε να τον παρακάμψουμε μιλάμε για αντιγραφή-επικόλληση πχ

# dd if=/dev/hda of=/tmp/system.img conv=noerror,sync

και δεν ενούσα τέτοια αντιγραφή, αυτό αντιγράψει και το τύπου του filesystem θα ειναι ένας κλόνος του, έτσι δεν θα δουλέψει, δεν θέλω να κάνω κλόνο του cd, αλλα μεταφορα των αρχείων τον αρχείων απο το filesystem του live-cd στον σκληρό δύσκο, δεν νομίζω οτι γίνετε με αυτόν τον τρόπο διοτι δεν θέλω frugal install αλλα μονο το filesystem που έχει το cd σε ένα αρχείο, απλα δεν ξέρω πως να το κάνω να δουλέυει σαν εγκατάσταση. δηλαδή να έκανα εγω αυτα που θα έκανε το installer σε μία live διανομή, διοτι το gentoo δεν έχει installer, δηλαδή οχι κλόνο, ούτε να βάσω κάθε πακέτο ξεχοριστά οπος γίνετε στο debian ή στο gentoo.
απλα στο debian γίνετε αυτόματα και στο gentoo χειροκίνιτα, εγω θέλω να το εγκαταστίσω με τον γρύγορο τρόπο, δλδ αντιγραφή και ρίθμιση του σίστιματος.

Συνήθως τα livecd έχουν το σύστημα αρχείων τους σε ένα μόνο αρχείο το οποίο είναι διαμορφωμένο κατάλληλα για αυτήν την δουλειά, και το kernel το βλέπει σαν σκληρό δίσκο. Τα περισσότερα χρησιμοποιούν το squashfs σύστημα αρχείων για την δημιουργία αυτού του εικονικού δίσκου. Αν είναι αυτή η περίπτωση σου, σαν root κάνε το εξής:
mkdir /mnt/squash
mount -t squashfs /media/cdrom/casper/filesystem.squashfs /mnt/squashfs -o loop
(/media/cdrom/casper/filesystem.squashfs είναι υποθετικά η θέση του αρχείου της διανομής)
και θα έχεις στο /mnt/squash τα περιεχόμενα του εικονικού δίσκου.
Από εκεί και πέρα μπορείς να το αντιγράψεις όπως είναι όπου θέλεις (cp, rsync κλπ).
Για τα "μυστήρια" directory /dev, /proc, /sys μάλλον δεν θα χρειαστείς να κάνεις τίποτα. Τα /proc /sys πρέπει πρώτα να ξεκινήσει το kernel και να έχει κάνει mount την συγκεκριμένη κατάτμηση στο / για να αρχίσει να τα χρησιμοποιεί και το /dev το πιο πιθανό είναι να έχει μέσα ορισμένα κλασικά όπως tty, random κλπ. Αυτά που θα χρειαστεί το kernel θα τα φτιάξει κατά την εκκίνηση.

Ναι, ακριβός αυτό προσπάθησα να κάνω εγω, με την διάφορα ότι έκανα αποσυμπίεση το squashfs αντί για mount.

...Δηλαδή το /dev θα το αντιγράψω, διότι πριν που προσπάθησα δεν αντέγραφτικαν μερικά αρχεία, έλεγε ότι δεν μπορούσε να τα αντιγράψει, ότι και να έκανα (φυσικά προσπάθησα ως root). και τι περίπου να κάνω? να φτιάξω έναν φάκελο /dev άδειο? να προσπαθήσω να το αντιγράψω αγνοώντας τα αρχεία που δεν αντιγράφτικαν?
το /proc να το αντιγράψω και αυτό? ή να μην τον αντιγράψω καθόλου? το ίδιο και για το /sys?

και με τον πυρήνα του linux? με μπερδεύει λίγο γιατί δεν μπορώ να τον βρω ωστε να τον βάλω στον bootloader.
και δεν ξέρω και που είναι. μήπως ει ναι φτιαγμένος ειδικά για live cd και θα πρέπει με την χρήση του chroot να μεταγλωττίσω/βάλω έναν νέο πυρήνα? και ένα νέο Initrd? ή θα αντιγράψω αυτoν που υπάρχει και αν ναι που είναι? στο /boot  του / (live mode) ή στο φάκελο /boot του cd/dvd ? προσπάθησα να τον βρω στον Gentoo αλλά δεν ήξερα ποιος ήταν, ούτε ήξερα τι ρυθμίσεις θέλει για τον bootloader.

Σόρι για όλες αυτές τις ερώτησης ελπίζω να κατάλαβες τι λέω,

Έχω κάνει την υπόθεση ότι δουλεύεις σε κάποιο linux, βάζεις το cd/dvd με το Gentoo, το μηχάνημα σου το κάνει mount στο /media και κάνεις εσύ mount το squash αρχείο. Αν είναι έτσι, τότε τα /proc /sys πρέπει να είναι άδεια directory, και το /dev να έχει μόνο τα βασικά.
Αν εκκινείς με το cd/dvd (δεν θα το συνιστούσα) τότε δεν είναι έτσι απλά. Θα δουλέψει πάλι το mount αλλά η αντιγραφή θα είναι πιο δύσκολη. Δεν πρέπει να αντιγράψεις τα /proc, /sys. Απ'το /dev δεν μπορείς να αντιγράψεις το αρχείο του εικονικού δίσκου (θα βρεις πιο είναι από το /etc/mtab), και γενικά ότι συσκευή χρησιμοποιεί εκείνη την στιγμή το σύστημα.
Το kernel θα έπρεπε να βρίσκεται πρώτα, σε κάποιο εμφανή μέρος στο cd/dvd και ίσως στα root ή/και /boot του squashfs.
Αν το cd/dvd ξεκινά με isolinux τότε πρέπει να υπάρχει config αρχείο στο /isolinux. Εκεί μέσα θα δείς που βρίσκεται και πως λέγεται το kernel σου και το initrd που χρησιμοποιείται για την εκκίνηση καθώς και όποιες ρυθμίσεις περνάει στο kernel κατα την εκκίνηση.
Ελπίζω να βοήθησα. Για περισσότερες οδηγίες χρειάζομαι πιο πολλές πληροφορίες για το σύστημα σου. (Έχεις ήδη κάποιο linux; Υπάρχει ήδη το grub2 στο σκληρό; κλπ)
Ελπίζω να βοήθησα.

έχω κάποιο linux εδω 2 χρόνια.
Και έχει isolinux και δεν θα το κάνω απο το live-cd, αλλα απο άλλο σύστιμα τελικά.
λιοπον ακού να δείς τι θα κάνω και πες και την γνώμη σου.
1. θα κάνω mount το iso αρχείο, θα κάνω mount το  squash,
2. θα αντιγράψω τα πάντα, μαζί με τα /proc /sys αφού ειναι άδια έτσι και αλιός, και θα αντιγράψω και το /dev αγνωώντας τυχόν αρχεία που δεν μπορεί να αντιγράψει.
3.Θα πάω στο /isolinux/isolinux.cfg και θα βρω το kernel και το initrd.
Το πρόβλημα μου είναι οτι δεν ξέρω ποιο κερνελ θελώ, υπάρχει για 64βιτ και για 32βιτ, εγω πως θα ξέρω με ποια αρχεία ειναι συμβατός ο 32 και με ποια αρχεία ο 64βιτ? με μπερδέυει αυτό. 

Εδω είναι τα αρχεία isolinux.cfg και kernel.msg τσέκαρετα άμα θες.

isolinux.cfg   http://shorttext.com/fsq7l3wu3do

kernel.msg http://shorttext.com/5evwektcqc

Ωραία γενικά το έππιασα το κόλπο, αλλα δεν ξέρω ποιο πυρήνα να διαλέξω, και δεν ξέρω ποιος ειναι ο κατάλιλος για τα προγραμματα που το αρχείο squashfs, κανονικα θα έπρεπε να υπάρχαν 2, ενα για το 32 και ενα για 64 για να αντιστιχούν το κατάλιλο πυρήνα αλλα ειναι μόνο 1!. τωρα ποιο θα διαλέξω?.
 

Μπορείς να βάλεις και τα τέσσερα και να φτιάξεις τέσσερις επιλογές στο grub του σκληρού σου. Τα προγράμματα σου τρέχουν το ίδιο είτε 32 είτε 64 bit, αφού ήταν live-cd και ο χρήστης μπορούσε να επιλέξει όποιο ήθελε σημαίνει ότι η διανομή περιέχει και τις 32 bit βιβλιοθήκες για τα προγράμματα που τις χρειάζονται. Οπότε, η γνώμη μου είναι αν έχεις μνήμη > 4GB τότε 64bit.

Ακόμα, πρέπει μετά την αντιγραφή του συστήματος αρχείων στο δίσκο να αλλάξεις το /etc/fstab, για να μπορέσει να γίνει mount rw από το init πλέον και να τρέξουν όλα τα init scripts σωστά.
Το πιο πιθανό είναι να έχει μια γραμμή:
/dev/aufs / aufs 0 1
Άλλαξε την σε
/dev/sdXΧ / ext4 0 1
όπου /dev/sdXΧ η κατάτμηση που το αντέγραψες (πχ sda2, sdb2)
ext4 αν την έκανες format σε ext4.

Ακόμα, βλέπω ότι περνάει αρκετές μεταβλητές στο kernel με append.
Σίγουρα πρέπει να βάλεις root=/dev/sdXX initrd=/boot/gentoo.igz init=/linuxrc
Δεν χρειάζεσαι τα: aufs looptype loop
Για την splash screen θα πειραματιστείς αρκετά να δεις πως θα δουλέψει με το grub, αν την χρειάζεσαι. 
Για να δούμε πως θα πάει. 

οκ θα το δοκιμάσω αλλα επιδή ο πηρήνας και το bootloader είναι λίγο μπέρδεμα θα περάσω το LI.LO. απο το υπάρχον λειτουργικό διοτι φαίνετε ποιο έυκολος στις ριθμίσης.

μια διευκρίνιση όμως: το init=/linuxrc θα το βάλω στο LI.LO. ? ή το λές για το grub ή για το grub-pc ?
και γιατι 0 1 στο fstab ? αυτα τα νουμερα με μπερδέυουν λίγο, πες αμα θες γιατι μπορεί να τα χρειαστο στο μέλλον. 

Θα τα βάλεις αυτά σε όποιον bootloader χρησιμοποιείς. Ο τρόπος που θα τα βάλεις διαφέρει από τον έναν στον άλλον. Στο grub2 πάνε στην ίδια γραμμή με το kernel, στο isolinux όπως είδες έχει άλλη γραμμη με append. Εγω θα έλεγα να μην αλλάξεις τον bootloader που έχεις ήδη.
Αν έχεις grub2 ή grub-pc (μου φαίνεται ότι είναι το ίδιο) βάλε στο τέλος του /boot/grub/grub.cfg την εξής παράγραφο:
menuentry "Gentoo" {
insmod ext2
linux /boot/gentoo root=/dev/sdXX ro vga=791 init=/linuxrc
initrd /boot/gentoo.igz
}
Ξεκίνα έτσι και αν βαρέσει λάθος και τι λάθος θα είναι αυτό προχωράς αναλόγως.
Το 0 είναι ότι δεν χρειάζεται να κάνεις dump αυτό το filesystem και το 1 είναι για να κάνει fsck κατα το boot.
Με man fstab σου λύνονται οι απορίες.

Λοιπόν το δοκίμασα και πριν και τώρα.
Ο Πυρήνας του λειτουργικό φορτόνει αλλα σε κάποιο συμείο φαίνετε οτι κολάει, αντιγράφω την οθόνη που είχε εκείνη στην στηγμή που την συμείωσα και χειρόγραφα. (ενα μέρος τουλάχιστον).

.............................
>> Hint ...και λέει διάφορα.
>> Activating mdev                                                                                                                                  
>> Determming root device                                                                                                                  
! !   Could not find the root block divice in.                                                                                          
      Please specify another value or press Enter for the same, type ''shell'' for a shell or ''q''  
      root divice block() : :                                                                                                                         

Εάν πατήσω q βγάζει αυτό:

* *  SKiping step, this will likely couse a boot faiure                                                                      
>> Mounting root                                                                                                                                   
mount: cant find /newroot in /etc/fstab                                                                                              
! !  Count not specifed ROOT, try again                                                                                            
! !  Could not find the root block divice in.                                                                                         
     Please specify another value or press Enter for the same, type ''shell'' for a shell or ''q'' 
     root divice block() : :                                                                                                                         

Εαν πατήσω shell βγάζει αυτό:

Τo leave and try again just press <ctrl>+I  (κάπος έτσι το έλεγε νομίζω)

BusyBox v1.1.8.1 (2011 ... ... UTC) Built-in shell                                          
Enter 'help' fro a list of build-in commants.                                                   
/bin/ash: can't acsess ttyq; job control turned off.                                         
#                                                                                                                             

ΕΑΝ εδώ πατίσω ''ls /proc'' βγάζει αρχεία απο τον φάκελο που συμένει οτι ο φάκελος έχει αρχεία ενω πριν ήταν άδειος, γενικά η εντολές του κέλυφους λειτουργούνε αλλα η εντολές του συστίματος οπος για παραδειγμά το startx δεν λειτουργούνε. διοτι δεν βρίσκετε η τοποθεσία τους.

Εδω είναι το αρχείο /etc/fstab:

####################################################
## ATTENTION: THIS IS THE FSTAB ON THE LIVECD ##
## PLEASE EDIT THE FSTAB at /mnt/gentoo/etc/fstab ##
#############tora pia den einai#####################
/dev/sda5 / ext4 0 1

Ενωείτε οτι το άλλαξα το αρχείο απλα ξέχασα να σβήσω τα σχόλια, εγω προσθεσα αυτην την τελευταία γραμμή ενω έσβησα τις άλλες, αν εχω κάνει λάθος πες το. 

Και εδω είναι το τμήμα απο το grub.conf (έχει το grub1 και οχι το 2 οποτε άλλαξα λίγο τιν σειρά και δεν την έβαλα οπος την εδωσες διοτι ήταν για το grub1 έχει και λινκ στο menu.lst.
title Gentoo (2.6.38.6-26.rc1.fc15.i686)
 root (hd0,4)
 kernel /boot/gentoo ro vga=791 init=/linuxrc
 initrd /boot/gentoo.igz

Σχόλια, το vga λειτουργεί διοτι φαίνετε το linux-εικονάκι στο πάνω μέρος όταν φορτόνει.
Βρες λίγο χρόνο να το διαβάσεις όλο αυτό. σίγουρα θα ξέρεις κάτι. ελπίζω να μην ήταν κουραστικό το κείμενο.

Ψάχνει για το /newroot στο fstab και δεν το βρίσκει.

1) Στο menu.lst άλλαξε την γραμμή του kernel:

kernel /boot/gentoo ro vga=791 init=/linuxrc root=/dev/sda5

2) Το fstab χρειάζεται και την περιγραφή του /proc. Καλό θα ήταν του και του swap.

Παράδειγμα ολοκληρωμένο:

proc /proc proc defaults 0 0

/dev/sda5 / ext4 errors=remount-ro 0 1

/dev/sdXX none swap sw 0 0

 

Δυστιχός το ίδιο λέει, μονο που λέει κάτι παραπάνω, διαβασε:

>> Activating mdev                                                                                                      
>> Determming root device                                                                                           
 ! ! The filesystem mounted at /dev/sda5 does not appear to be a valid /,try again.         
 ! ! Could not find the root block divice in.                                                                     
      Please specify another value or press Enter for the same, type ''shell'' for a shell or ''q''
      root divice block() : :                                                                                                           

Και μετά λέει τα ίδια πάλι, οτι δεν βρήσκει το newroot κ.τ.λ.
εγω μήπος δεν έχω κάνει καλά το fstab? οτι το /dev/sda5 dows not appear to be a valid /. το βγάζει μονο οταν περνάω αυτην την γραμμη στο grub που είπες, οταν δεν την βάζω βγάζει αυτό που έβγαζε και πριν.

έκανα διάφορες δοκιμές στο fstab αλλα δεν φαίνετε να αλλάζε τίποτα.
μήπος η κατάτμηση θέλει κάποια ριθμιση? μήπος να βάλω και 'rw' στο grub?
το newroot τι είναι? θα πρέπει να το βάλω στο fstab? και αν ναι που και πως?

Είναι σίγουρα το sda5 το partition με το gentoo?
Μήπως έχει "χτυπησει" κατα την αντιγραφή;
Βάλε και αυτό στην γραμμή του kernel rootfstype=ext4 
Στο prompt που σου βγάζει αν γράψεις shell σε βγάζει σε shell. Για δες από εκεί τι μπορείς να κάνεις; Μπορείς να το κάνεις mount κάπου;  
Δεν φτάνει ως το σημείο να διαβάσει το fstab. Το mdev που αναφέρει τρέχει μέσα από το initrd και είναι υπεύθυνο να φτιάξει το  /dev με τους δίσκους που έχεις. 
 

ναι στο sda5 είναι.
να έχει χτυπήσει? θα κάνω ενα check με το gparted.
Δλδ με το fstab δεν υπάρχει προβλημα? είναι λίγο πριν το fstab ενοείς? οποτε οτι και να έχει το fstab δεν θα ενωχλεί σε αυτό το συμείο. τελικά το newroot τι ειναι? πρεπει να αυτό να βάλω στο fstab?.
Δεν έχω δοκιμάσει ακόμη να βάλω rootfstype=ext4 , πάω να το δοκικάσω τώρα και θα δω τι λέει.

Το πρόβλημα είναι πάρα πολύ περίεργο!

κάνει το mount το filesystem (/dev/sda5) στο /newroot, είναι εκεί το βλέπω κανονικά.
αλλα δεν μπορεί να συνεχίση γιατι δεν μπορεί να βάλει τιποτα στο /. (έτσι μου φαίνετε τουλάχιστον).
οταν πατάω shell και πατάω mount βλέπω το sda5 να είναι στο /newroot αντι για το / ενω στο fstab λέω να μπεί στο /. και το λέω έτσι:
UUID=315d09fc-7094-4dad-b06e-ba7d81fab631 / ext4    defaults        0 1
tmpfs                   /dev/shm                tmpfs   defaults        0 0proc                  
/proc                   proc    defaults        0 0
sysfs                   /sys                    sysfs   defaults        0 0

φαίνετε πολύ καλά οτι η κατάτμιση είναι στο / γιατι βρίσκεte στο /newroot δεν ξέρω!.
μάλλον εκεί είναι το πρόβλημα και λέει οτι δεν βρισκεί το newroot στο fstab (αυτό που έλεγε ποιο πάνω).
και προσπάθησα να βάλω /newroot αντι για / αλλα ήταν ακριβός τα ίδια.
πως θα το διορθόσω αυτό?, μήπος φταίει το initrd? το bootloader? στο unetbootin δουλέυε κανονικότατα. 

σχόλιο: εκει που λέει UUID είχα βάλει και /dev/sda5 αλλα το ίδιο ήτανε.

Η διαδικασία εκκίνησης είναι η εξής:
Φορτώνεται το kernel και αυτό κάνει mount το initrd στο root για να βρει τα modules. Στην συνέχεια εκτελείται το /linuxrc (που υπάρχει μέσα στο initrd) το οποίο βρίσκει τους δίσκους κάνει unmount το initrd και στην θέση του βάζει αυτό που του έχουμε πει στο root=/dev/sda5.
Απ' ότι φαίνεται το έχει ήδη κάνει mount στο /newroot. Αν όλα πήγαιναν καλά θα το έπαιρνε από εκεί και θα το έβαζε στο root. Σε αυτή την φάση κολλάει σε σένα. Δεν προλαβαίνει να διαβάσει το /etc/fstab, ότι και να κάνεις εκεί δεν έχει αντίκτυπο.

Όταν είσαι στο shell κάνεις ένα  ls /newroot να βεβαιωθεις ότι είναι αυτό που θέλεις;
Στο λέω αυτό γιατι μια φορά που έβαζα ένα linux, ενώ ήξερα ότι ήταν στο sdd4 στο καινούργιο kernel μου το έφερνε σαν hda4. Όχι μόνο είχε αλλάξει η σειρά των δίσκων αλλά και ο driver. Να μην κάνει boot με τίποτα και κατα τύχη είδα ότι αυτό που  του έλεγα εγώ sdd4 το kernel το έβλεπε hda4. Άλλαξα το root=/dev/sdd4 σε /dev/hda4 και bootαρε κανονικά.

Τα μόνα που δεν έχεις βάλει από τον ορισμό του kernel στο isolinux όπως τον είχες στείλει είναι: cdroot, dokeymap και aufs
Θα πρότεινα να βάλεις κι αυτά αλλά αντί για aufs βάλε ext4.
Αν δεν παίξει και τώρα μάλλον στα forum του gentoo  θα βρεις πιο ειδική βοήθεια.

Ωραία! τώρα δουλέυει! επιτέλους ανακάλυψα των γρηγορότερο τρόπο εγκατάστασείς του gentoo.
δεν ξέρω αν ειναι read-write ή read-only ακόμη, οποτε ας μην πέρνω και πολύ χαρα.

telika δεν έφτιαξε απλος φορτοσε μονο και μόνο επιδή είχα usb μέσα, και βρήκε το usb. παρόλο που το usb δεν είχε gentoo μέσα. απλα το διορθοσα για να μην νομίζει κανένας οτι φτιάχτικε ή οτι χάλασε.