kubernetes:chroot
Különbségek
A kiválasztott változat és az aktuális verzió közötti különbségek a következők.
| Következő változat | Előző változat | ||
| kubernetes:chroot [2025/12/01 07:12] – létrehozva riba.zoltan | kubernetes:chroot [2025/12/01 08:32] (aktuális) – riba.zoltan | ||
|---|---|---|---|
| Sor 1: | Sor 1: | ||
| - | ====== chroot ====== | + | ====== |
| A chroot környezet a minimális konténer futtató környezet bemutatására szolgál. Először a bash shell telepítése és testreszabása történik meg, majd a futtatáshoz szükséges környezetek. Végül a szükséges fájlrendszerek csatlakoztatása. | A chroot környezet a minimális konténer futtató környezet bemutatására szolgál. Először a bash shell telepítése és testreszabása történik meg, majd a futtatáshoz szükséges környezetek. Végül a szükséges fájlrendszerek csatlakoztatása. | ||
| Sor 26: | Sor 26: | ||
| < | < | ||
| # chroot / | # chroot / | ||
| + | chroot: failed to run command ‘/ | ||
| </ | </ | ||
| + | |||
| + | A program működéséhez szükséges megosztott objektumfájlok listázása. | ||
| + | |||
| + | < | ||
| + | # ldd / | ||
| + | linux-vdso.so.1 (0x00007f65ff555000) | ||
| + | libtinfo.so.6 => / | ||
| + | libc.so.6 => / | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | A szükséges könyvtárstruktúra létrehozása. | ||
| + | |||
| + | < | ||
| + | # mkdir / | ||
| + | # ln -s usr/lib64 / | ||
| + | </ | ||
| + | |||
| + | Állományok másolása. Fontos megjegyezni, | ||
| + | |||
| + | < | ||
| + | # cp -a / | ||
| + | # cp -a / | ||
| + | # cp -a / | ||
| + | </ | ||
| + | |||
| + | A teljes struktúra a következő | ||
| + | |||
| + | < | ||
| + | # tree / | ||
| + | |||
| + | / | ||
| + | ├── bin -> usr/bin | ||
| + | ├── lib64 -> usr/lib64 | ||
| + | └── usr | ||
| + | ├── bin | ||
| + | │ └── bash | ||
| + | └── lib64 | ||
| + | ├── ld-linux-x86-64.so.2 | ||
| + | ├── libc.so.6 | ||
| + | ├── libtinfo.so.6 -> libtinfo.so.6.5 | ||
| + | └── libtinfo.so.6.5 | ||
| + | </ | ||
| + | |||
| + | Teszteljük a chroot működését | ||
| + | |||
| + | < | ||
| + | # chroot / | ||
| + | bash-5.3# exit | ||
| + | exit | ||
| + | </ | ||
| + | |||
| + | Próbáljuk listázni a chroot környezet tartalmát. | ||
| + | |||
| + | < | ||
| + | # chroot / | ||
| + | # ls / | ||
| + | bash: ls: command not found | ||
| + | bash-5.3# exit | ||
| + | exit | ||
| + | </ | ||
| + | |||
| + | Mivel nincs ls parancs, telepítsük a chroot könyvtárába. Itt is figyeljünk a megosztott objektumfájlokra. | ||
| + | |||
| + | < | ||
| + | # ldd /usr/bin/ls | ||
| + | linux-vdso.so.1 (0x00007fae7efca000) | ||
| + | libselinux.so.1 => / | ||
| + | libcap.so.2 => / | ||
| + | libc.so.6 => / | ||
| + | libpcre2-8.so.0 => / | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | Másolási műveletek. | ||
| + | |||
| + | < | ||
| + | # cp -a /usr/bin/ls / | ||
| + | # cp -a / | ||
| + | # cp -a / | ||
| + | # cp -a / | ||
| + | </ | ||
| + | |||
| + | Ellenőrzés. | ||
| + | |||
| + | < | ||
| + | # tree / | ||
| + | |||
| + | # tree / | ||
| + | / | ||
| + | ├── bin -> usr/bin | ||
| + | ├── lib64 -> usr/lib64 | ||
| + | └── usr | ||
| + | ├── bin | ||
| + | │ ├── bash | ||
| + | │ └── ls | ||
| + | └── lib64 | ||
| + | ├── ld-linux-x86-64.so.2 | ||
| + | ├── libcap.so.2 -> libcap.so.2.76 | ||
| + | ├── libcap.so.2.76 | ||
| + | ├── libc.so.6 | ||
| + | ├── libpcre2-8.so.0 -> libpcre2-8.so.0.15.0 | ||
| + | ├── libpcre2-8.so.0.15.0 | ||
| + | ├── libselinux.so.1 | ||
| + | ├── libtinfo.so.6 -> libtinfo.so.6.5 | ||
| + | └── libtinfo.so.6.5 | ||
| + | </ | ||
| + | |||
| + | Futtassuk a bash programot a chroot környezetben és listázzuk a fájlokat. | ||
| + | |||
| + | < | ||
| + | # chroot / | ||
| + | bash-5.3# ls -l / | ||
| + | total 4 | ||
| + | lrwxrwxrwx. 1 0 0 7 Dec 1 07:13 bin -> usr/bin | ||
| + | lrwxrwxrwx. 1 0 0 9 Dec 1 07:20 lib64 -> usr/lib64 | ||
| + | drwxr-xr-x. 4 0 0 4096 Dec 1 07:20 usr | ||
| + | </ | ||
| + | |||
| + | Az ls parancs közvetlenül hívható, nem szükséges a shell. Így működnek a konténerek is. Ott az entrypoint lesz a program ami a konténer indításakor automatikusan lefut. | ||
| + | |||
| + | < | ||
| + | # chroot / | ||
| + | total 4 | ||
| + | lrwxrwxrwx. 1 0 0 7 Dec 1 07:13 bin -> usr/bin | ||
| + | lrwxrwxrwx. 1 0 0 9 Dec 1 07:20 lib64 -> usr/lib64 | ||
| + | drwxr-xr-x. 4 0 0 4096 Dec 1 07:20 usr | ||
| + | </ | ||
| + | |||
| + | Ha elhagyjuk a chroot második paraméterében a futtatandó programot, akkor automatikusan a /bin/bash indul. | ||
| + | |||
| + | < | ||
| + | # chroot / | ||
| + | bash-5.3# exit | ||
| + | exit | ||
| + | |||
| + | # chroot / | ||
| + | bash-5.3# exit | ||
| + | exit | ||
| + | </ | ||
| + | |||
| + | Programok egy részének futtatásához szükség van a /proc, a /sys és néha a /dev könyvtárakra. Ezek a könyvtárak csatlakoztathatók többféle módszerrel. A könyvtárakat előre létre kell hozni a chroot környezetben. | ||
| + | |||
| + | < | ||
| + | # mkdir / | ||
| + | # mkdir / | ||
| + | # mkdir / | ||
| + | </ | ||
| + | |||
| + | === A /proc fájlrendszer kezelése === | ||
| + | |||
| + | A /proc fájlrendszer csatlakoztatása (1. módszer) | ||
| + | |||
| + | < | ||
| + | # mount -t proc proc / | ||
| + | |||
| + | # chroot / | ||
| + | 1 18846 21 2439 37 5 | ||
| + | 10 | ||
| + | ... | ||
| + | </ | ||
| + | |||
| + | A /proc fájlrendszer leválasztása. | ||
| + | |||
| + | < | ||
| + | # umount / | ||
| + | </ | ||
| + | |||
| + | A /proc fájlrendszer csatlakoztatása (2. módszer) | ||
| + | |||
| + | < | ||
| + | # mount --bind /proc / | ||
| + | |||
| + | # chroot / | ||
| + | 1 18846 21 2439 37 5 | ||
| + | 10 | ||
| + | ... | ||
| + | </ | ||
| + | |||
| + | A /proc fájlrendszer leválasztása. | ||
| + | |||
| + | < | ||
| + | # umount / | ||
| + | </ | ||
| + | |||
| + | === A /sys fájlrendszer kezelése === | ||
| + | |||
| + | A /sys fájlrendszer csatlakoztatása (1. módszer) | ||
| + | |||
| + | < | ||
| + | # mount -t sysfs none / | ||
| + | |||
| + | # chroot / | ||
| + | block class devices fs | ||
| + | bus dev firmware hypervisor | ||
| + | </ | ||
| + | |||
| + | A /sys fájlrendszer leválasztása. | ||
| + | |||
| + | < | ||
| + | # umount / | ||
| + | </ | ||
| + | |||
| + | A /sys fájlrendszer csatlakoztatása (2. módszer) | ||
| + | |||
| + | < | ||
| + | # mount --bind /sys / | ||
| + | |||
| + | # chroot / | ||
| + | block class devices fs | ||
| + | bus dev firmware hypervisor | ||
| + | </ | ||
| + | |||
| + | A /sys fájlrendszer leválasztása. | ||
| + | |||
| + | < | ||
| + | # umount / | ||
| + | </ | ||
| + | |||
| + | === A /sys fájlrendszer kezelése === | ||
| + | |||
| + | A /dev fájlrendszer csatlakoztatása | ||
| + | |||
| + | < | ||
| + | # mount --bind /dev / | ||
| + | |||
| + | # chroot / | ||
| + | autofs log sgx_vepc | ||
| + | block loop-control shm | ||
| + | ... | ||
| + | </ | ||
| + | |||
| + | A /dev fájlrendszer leválasztása. | ||
| + | |||
| + | < | ||
| + | # umount / | ||
| + | </ | ||
| + | |||
| + | Az elkészült chroot környezet kiegészíthető további állományokkal, | ||
| + | |||
| + | < | ||
| + | # tree / | ||
| + | / | ||
| + | ├── bin -> usr/bin | ||
| + | ├── dev | ||
| + | ├── lib64 -> usr/lib64 | ||
| + | ├── proc | ||
| + | ├── sys | ||
| + | └── usr | ||
| + | ├── bin | ||
| + | │ ├── bash | ||
| + | │ └── ls | ||
| + | └── lib64 | ||
| + | ├── ld-linux-x86-64.so.2 | ||
| + | ├── libcap.so.2 -> libcap.so.2.76 | ||
| + | ├── libcap.so.2.76 | ||
| + | ├── libc.so.6 | ||
| + | ├── libpcre2-8.so.0 -> libpcre2-8.so.0.15.0 | ||
| + | ├── libpcre2-8.so.0.15.0 | ||
| + | ├── libselinux.so.1 | ||
| + | ├── libtinfo.so.6 -> libtinfo.so.6.5 | ||
| + | └── libtinfo.so.6.5 | ||
| + | </ | ||
| + | |||
kubernetes/chroot.1764573173.txt.gz · Utolsó módosítás: szerkesztette: riba.zoltan
