Skocz do zawartości

Instalacja Do Chroot F11.i386 Na Hoście F11.x86_64


borzole

Rekomendowane odpowiedzi

Witam serdecznie,

Próbuję zainstalować do chroot 32 bitową fedorę mając 64 bitowy system (jak w tytule). Zabieg hobbystyczny. :rolleyes:

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

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 :unsure: Pocieszam się faktem, że używając febootstrap wcale dalej nie zaszedłem :ph34r:

 

[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

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 :lol:

Odnośnik do komentarza
Udostępnij na innych stronach

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

* 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! :lol:

 

[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

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ę
×
×
  • Dodaj nową pozycję...