• Firefox Quantum pod CentOS 6, czyli zabaw z chroot ciąg dalszy

    dodany przez Konrad Stępień

    Postanowiłem założyć sobie nowego Firefox-a pod starym CentOS-em. Bo jakoś tak lubię CentOS-a 6, nie przekonuje mnie ani systemd ani nowy gnome, a jak mam kombinować z Centosem7 i robić z niego Centosa-6 (np. przez instalację Mate) to postanowiłem pomajstrować w drugą stronę.
    Wykorzystałem patent opisany przy okazji instalacji php-7 w chroot https://centos.com.pl/2017/09/28/php7-obok-standardowego-php-dzieki-yumchroot/. No to jedziemy, tym razem popełniłem skrypt który załatwi mi czarną robotę. Oprócz tego skryptu musimy ręcznie pobrać pakiet centos-release-7-4.1708.el7.centos.x86_64.rpm z instalacji CentOS-a 7. Oczywiście numerek pakietu może się zmienić, ten który zamieściłem był aktualny w czasie gdy to robiłem.
    #!/bin/bash
    DIR=/opt/centos7/
    mkdir -p $DIR
    rpm --root=$DIR --initdb
    rpm --root=$DIR -ivh centos-release-7-4.1708.el7.centos.x86_64.rpm rpm --root=$DIR --import $DIR/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    yum -y --installroot=$DIR install bash util-linux
    mount --bind /tmp/ $DIR/tmp
    mount --bind /proc/ $DIR/proc
    mount --bind /dev $DIR/dev
    mount --bind /dev/pts/ $DIR/dev/pts
    mount --bind /dev/shm/ $DIR/dev/shm
    mount --bind /home/ $DIR/home/
    ln -f /etc/resolv.conf $DIR/etc/
    ln -f /etc/passwd $DIR/etc/
    ln -f /etc/shadow $DIR/etc/
    ln -f /etc/group $DIR/etc/
    yum -y --installroot=$DIR install gtk3 xorg-x11-xauth vi

    W porównaniu z przypadkiem w którym opisywałem instalację php-7, tu nie chcę robić całkowicie izolowanego środowiska, wprost przeciwnie, chcę, żeby $HOME było wspólne. Dlatego zastosowałem mount -bind które to pozwoliło mi na współdzielenie “strategicznych” katalogów pomiędzy systemem bazowym a moim minimalistycznym CentOS-em 7 w chroocie. Dodatkowo tworzę hardlinki /etc/passd (i powiązanych) oraz “/etc/resolv.conf”
    Operację tę trzeba powtarzać przy każdym boocie systemu, tak więc warto zrobić sobie drugi skrypt który będzie startował np. z rc.local. Taki oto:
    #!/bin/bash
    DIR=/opt/centos7
    mount --bind /tmp/ $DIR/tmp
    mount --bind /proc/ $DIR/proc
    mount --bind /dev $DIR/dev
    mount --bind /dev/pts/ $DIR/dev/pts
    mount --bind /dev/shm/ $DIR/dev/shm
    mount --bind /home/ $DIR/home/
    ln -f /etc/resolv.conf $DIR/etc/
    ln -f /etc/passwd $DIR/etc/
    ln -f /etc/shadow $DIR/etc/
    ln -f /etc/group $DIR/etc/

    No dobra, mamy tego minimalistycznego CentOS-a 7, pora go wypróbować.
    Ściągamy Firefoxa Quantum i rozpakowujemy go gdzieś w obrębie $DIR. Ja to robię w “/opt/centos7/opt/firefox”. Trochę dziwnie wyglądają te dwa razy /opt/ ale z punktu widzenia środowiska chrootowanego jest to po prostu /opt/firefox.
    Dla wygody stworzyłem kolejny skrypt który nazwałem 7run. Służy do uruchamiania programów w naszym chroocie. Oto on:
    #!/bin/bash

    DIR=/opt/centos7
    chroot $DIR su konrad $*

    A żeby wykonać chroot trzeba być root-em, to tworzymy plik “/etc/sudoers.d/jail” z taką zawartością:
    konrad ALL = NOPASSWD: /usr/local/bin/7run

    Trochę to może pokrętne, ale dzięki temu możemy uruchomić naszego firefoxa przez

    sudo /usr/local/bin/7run "-c /opt/firefox/firefox"

    Oczywiście, konrad to ja, zmieńcie sobie na wasz login.

    Jeśli wszystko poszło dobrze, powinniście zobaczyć pięknego nowego firefoxa. Aaaa, najpierw zamknijcie starego firefoxa, ba zamiast uruchomić nowego firefoxa, dostaniecie nowe okno starego. Na wszelki wypadek warto też zbackupować katalog .mozilla

    Do pełni szczęścia potrzebujemy jeszcze pomajstrować z pulseuadio, bo nowy firefox jest póki co “niemy.
    W pliku /etc/pulse/default.pa na końcu dopisujemy linijkę

    load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1

    a w katalogu domowym, w podkatalogu .pulse tworzymy plik “client.conf” w którym wpisujemy

    default-server = 127.0.0.1

    Oczywiście tego naszego niby-centosa-7 możemy wykorzystać nie tylko dla firefox-a. Możemy sobie “w srodku” instalować każdy program który nie chce działać na CentOS-ie 6 i uruchamiać przez 7run.

Dodaj komentarz

Warto odwiedzić
Valid XHTML 1.0 Transitional centos.com.pl- mapa strony