borzole Napisano Czerwiec 4, 2009 Zgłoszenie Share Napisano Czerwiec 4, 2009 Witam serdecznie, Próbuję zainstalować do chroot 32 bitową fedorę mając 64 bitowy system (jak w tytule). Zabieg hobbystyczny. Na razie sukces połowiczny, coś tam działa, ale yum nie działa bo mu się architektura nie zgadza. I to mnie boli. Jak to jest, że łatwiej przyszło mi zchrootować debiana 32 na tym hoście niż rodowitą fedorkę. Jeśli możecie, przetestujcie ten skrypt. Poskładałem m.in. z febootstrap. to tak ze 100MB pociągnie jakby ktoś spróbował #!/bin/bash - # Wybór katalogu instalacji (zostanie utworzony) mychroot="/home/fedora" # wybór wersji (właściwie repozytorium): 'fedora-X' lub 'rawhide' # szczegóły http://mirrors.fedoraproject.org/mirrorlis...p&arch=i386 repo=fedora-11 # architekturę i mirror # http://mirrors.fedoraproject.org/publiclist/ mirror=http://ftp.icm.edu.pl/pub/Linux/fedora/linux/releases/test/11-Preview/Fedora/i386/os/ #arch=$(arch) arch=i386 # -------------------------------------------------------------------- # zaczynamy mkdir -m 700 -p $mychroot mkdir $mychroot/dev mkdir $mychroot/etc mkdir $mychroot/proc mkdir $mychroot/sys mkdir -p $mychroot/var/cache/yum/$repo/packages mkdir -p $mychroot/var/lib/rpm # tworzymy urządzenia blokowe: cd $mychroot/dev mkdir {pts,shm,mapper} mknod null c 1 3; chmod 0666 null mknod zero c 1 5; chmod 0666 zero mknod full c 1 7; chmod 0666 full mknod random c 1 8; chmod 0666 random mknod urandom c 1 9; chmod 0444 urandom mknod tty c 5 0; chmod 0666 tty mknod console c 5 1; chmod 0600 console mknod ptmx c 5 2; chmod 0666 ptmx ln -sf /proc/self/fd/0 stdin ln -sf /proc/self/fd/1 stdout ln -sf /proc/self/fd/2 stderr # montujemy /proc /sys # echo "proc $mychroot/proc proc none 0 0" >> /etc/fstab # echo "sysfs $mychroot/sys sysfs none 0 0" >> /etc/fstab # mount proc "$mychroot"/proc -t proc # mount sysfs "$mychroot"/sys -t sysfs # tak jest chyba poprawniej: mount --bind /proc $mychroot/proc mount --bind /sys $mychroot/sys # możesz również zamontować home # mount --bind /home "$mychroot"/home # kopiujemy podstawowe pliki: cp {,$mychroot}/etc/hosts cp {,$mychroot}/etc/resolv.conf # cp {,"$mychroot"}/etc/rsyslog.conf ?? # cp {,"$mychroot"}/etc/sysconfig/network ?? # cp {,"$mychroot"}/etc/fstab ?? # Tworzymy konfigurację tymczasowego repozytorium cat > $mychroot/$repo.repo <<__EOF__ [$repo] name=$repo $arch failovermethod=priority enabled=1 gpgcheck=0 baseurl=$mirror mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=$repo&arch=$arch __EOF__ # inicjujemy bazę rpm rpm --root $mychroot --initdb # Uwaga! # wielkość paczek to około 100MB, więc instalacja trochę potrwa yum -c $mychroot/$repo.repo \ --disablerepo=* --enablerepo=$repo \ --noplugins --nogpgcheck \ --installroot=$mychroot \ groupinstall Core # lub # install yum # groupinstall "Kompilator skrośny MinGW" # groupinstall "Serwer WWW" # itp. # przy problemach z chrootową bazą rpm # cd $mychroot/var/lib/rpm # mv Packages Packages_stary # rm -f __db* # rpm --root $mychroot --initdb # rpm --rebuilddb chroot $mychroot /sbin/start_udev chroot $mychroot /sbin/ldconfig chroot $mychroot mv /var/lib/rpm/Packages{,_stary} chroot $mychroot rm -f /var/lib/rpm/__db* chroot $mychroot rpm --rebuilddb # "febootstrap-to-initramfs DIR > initrd.img" # cd $mychroot > /dev/null # find -not -name fakeroot.log -a -print0 | cpio -o0c | gzip --best instalacja ładnie się kończy, chroot niby działa, ale nie sposób cokolwiek yumem zainstalować, a polecenie rpm -qa jest puste, mimo że zainicjowałem bazę w chroot przed instalacją, a na końcu ją przebudowałem (bo były błędy z wersją architektury). ostatecznie yum wypluwa wielki bełkot # yum Traceback (most recent call last): File "/usr/bin/yum", line 29, in <module> yummain.user_main(sys.argv[1:], exit_code=True) File "/usr/share/yum-cli/yummain.py", line 309, in user_main errcode = main(args) File "/usr/share/yum-cli/yummain.py", line 157, in main base.getOptionsConfig(args) File "/usr/share/yum-cli/cli.py", line 187, in getOptionsConfig self.conf File "/usr/lib/python2.6/site-packages/yum/__init__.py", line 649, in <lambda> conf = property(fget=lambda self: self._getConfig(), File "/usr/lib/python2.6/site-packages/yum/__init__.py", line 239, in _getConfig self._conf = config.readMainConfig(startupconf) File "/usr/lib/python2.6/site-packages/yum/config.py", line 794, in readMainConfig yumvars['releasever'] = _getsysver(startupconf.installroot, startupconf.distroverpkg) File "/usr/lib/python2.6/site-packages/yum/config.py", line 873, in _getsysver hdr = idx.next() StopIteration Zastanawiam się czy to jest w ogóle możliwe tak hop-siup, z uwagi na komentarz w man febootstrap COMPARISON TO DEBOOTSTRAP febootstrap cannot do cross-architecture installs ("debootstrap --foreign"). The reason is that %pre and %post scripts cannot run. It may be possible to defer running of scriptlets (which is basically how debootstrap works), and patches to do this are welcomed. febootstrap cannot do 32-on-64 bit installs. The reason is that fakeroot and fakechroot do not load the correct preload library. This is really a bug in fakeroot/fakechroot, which we think would be easy to fix. (debootstrap deals with this case the same as for "--foreign" installs - see previous point). Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
morsik Napisano Czerwiec 4, 2009 Zgłoszenie Share Napisano Czerwiec 4, 2009 Nie wiem czy czytałeś co w tym sktypcie jest, ale jest napisane tam: # przy problemach z chrootową bazą rpm # cd $mychroot/var/lib/rpm # mv Packages Packages_stary # rm -f __db* # rpm --root $mychroot --initdb # rpm --rebuilddb Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Czerwiec 4, 2009 Autor Zgłoszenie Share Napisano Czerwiec 4, 2009 sam go wydłubałem, więc wiem Zrobiłem drugą instalkę dla 64bit i też kończy się nieczytelną bazą rpm. To trochę dziwne, bo system jest już całkiem ten sam. Przebudowałem bazę rpm będąc w chroot i też rpm -qa nic nie zwraca. Czegoś nie podłączyłem, tylko czego Pocieszam się faktem, że używając febootstrap wcale dalej nie zaszedłem [EDIT] tararara ! # rpm -qa setup-2.8.3-1.fc11.noarch basesystem-10.0-2.noarch ncurses-base-5.7-2.20090207.fc11.i586 ncurses-libs-5.7-2.20090207.fc11.i586 nss-softokn-freebl-3.12.3-3.fc11.i586 libgcc-4.4.0-0.34.i586 filesystem-2.4.21-1.fc11.i586 tzdata-2009f-1.fc11.noarch glibc-2.9.90-19.i586 bash-4.0-6.fc11.i586 Po prostu baza była pusta, więc yum głupiał. Trzeba będzie jakoś skrypt zoptymalizować żeby dwa razy tych samych paczek nie ściągać. Pytanie W jaki sposób uzyskać listę paczek na minimalny system dowolnego distro opartego o rpm? Tutaj było prosto posłużyć się yumem, ale już poza posiadaną wersją systemu może być ciężko. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
morsik Napisano Czerwiec 4, 2009 Zgłoszenie Share Napisano Czerwiec 4, 2009 Paczki dla core, to głównie: kernel, grub(?), initscripts, core(coś tam, nie pamietam nazwy...), udev, mount i podobne. Reszte w teorii pociągnie w zależnościach... Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Czerwiec 5, 2009 Zgłoszenie Share Napisano Czerwiec 5, 2009 Może to? → https://fedoraproject.org/w/index.php?title...t&limit=250 Przeczytaj warninga poniżej linku. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Czerwiec 5, 2009 Autor Zgłoszenie Share Napisano Czerwiec 5, 2009 Mam teraz dziwny problem. Chciałem tylko ściągnąć paczki i robić lokalnie, dodałem więc plugin yum install yum*download* to da nam dwie opcje, ale nie wiem jak ich użyć. Zmieniłem w powyższym skrypcie część z yum'em yum -c $mychroot/$repo.repo --disablerepo=* --enablerepo=$repo \ --installroot=$mychroot \ --downloadonly --downloaddir=$mychroot \ --nogpgcheck \ groupinstall Core no i yum nie wie co to jest " --downloadonly". Nie wiem czy plugin jest zrąbany, czy ten zapis (kopiuj-wklej). @ pytanko Począwszy od Fedora 2 (centos też tak można) w repo jest plik ...comps.xml a w nim grupa "Core". http://ftp.icm.edu.pl/pub/Linux/fedora/lin...64/os/repodata/ Paczki leżą obok, trzeba te teraz zautomatyzować. 1. przepuścić plik comps.xml przez coś żęby zwrócił tylko paczki z grupy core 2. wget'nąć ;P te paczki z automatu nie znając ich numerków 3. przepuścić przez rpm2cpio paczka.rpm | cpio -idv do chroot i mamy wstęp do instalacji fedory w chroot na dowolnym distro bez yum. Ręcznie to dużo klikania będzie Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Czerwiec 5, 2009 Autor Zgłoszenie Share Napisano Czerwiec 5, 2009 wybaczcie że odpowiadam pod swoim postem, ale udało mi się stworzyć w miarę prostu skrypt instalujący fedorę na dowolnej dystrybucji znając tylko adres mirora. Sprawdziłem tylko czy yum w chrootcie jest wstanie zrobić update i... chciał mi rawhade ściągać nie dla tej architektury, ale to chyba kwestia korekty repo (tam wszędzie jest parametr $arch wciskany na chama zamiast po prostu i386). http://wiki.fedora.pl/wiki/U%C5%BCytkownik:Borzole/chroot (podświetlanie składni trochę nawala) * chroota robię pierwszy raz w życiu od wczoraj, więc jeśli popełniłem jakiś makabryczny błąd to proszę krzyczeć. * optymalizacja skryptu mile widziana, proszę śmiało edytować * podział skryptu na: start, download, install, init...all wynika raczej z potrzeby zatrzymania się i sprawdzenia czy wszystko idzie po naszej myśli. * jak będę miał czas to dorzucę jeszcze init do grubasa i spróbuje zabootować ...ojej, ale się na skrobałem [EDIT] jest dziwna jazda ze wszystkimi mirrorami dla f11, chyba coś przemontowują więc jak coś nie działa to nie moja wina [EDIT] w plikach repozytoriów trzeba tylko zmienić $basearch na i386 i można jechać na rawhide, Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Czerwiec 5, 2009 Autor Zgłoszenie Share Napisano Czerwiec 5, 2009 * zrobiłem update w chroot * zainstalowałem kernel * przeniosłem co trzeba mv $mychroot/boot/* /boot * reboot jakiś tam start jest, montuje proc, sysfs, dev i zatrzymuje się (chyba koniec urządzeń) nie uruchamia żadnej usługi. Czarna dziura między odczytem sprzętem a usługami jest pewnie spowodowana tym: jak zabootować system z katalogu? próbuję ustawić root=/home/fedora tzn. title Fedora 32 (chroot) root (hd0,0) kernel /vmlinuz-2.6.29.4-167.fc11.i586 ro root=/home/fedora initrd /initrd-2.6.29.4-167.fc11.i586.img ale parametrem mogą być chyba tylko urządzenia / lvm no to jak katalog ma udawać urządzenie? Czy ja muszę mieć na to partycję? [EDIT] no dobra poświęciłem jakąś tam partycję i system działa ! jupi!! zrobiłem chroota SAM! SAM! SAM! [EDIT] tę edycję zrobiłem z nowej instalki * działa wszystko, żadnych błędów, tylko sieć uruchomiłem w jakiś magiczny sposób (nie pamiętam co dokładnie zrobiłem) Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się