12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #!/bin/bash
- if [ -z $ROOTFS ];then
- ROOTFS="/home/mlfs/onsistem"
- fi
- if [ ! -z $1 ];then
- ROOTFS="$1"
- fi
- if [ ! -d $ROOTFS ];then
- echo "$ROOTFS dizini mevcut değil!"
- exit 1
- fi
- # Herhangi bir hatada çıkış için
- set -e
- LC_ALL=C
- export LC_ALL
- unmount_ortam()
- {
- for node in "${ROOTFS}/sys" \
- "${ROOTFS}/proc" \
- "${ROOTFS}/dev/pts" \
- "${ROOTFS}/dev" \
- "${ROOTFS}/run" ; \
- do
- if mount | grep -q "$node"
- then
- echo "Çözülüyor ${node} ..."
- if ! umount "$node"
- then
- echo "Sorunlu $node çözülüyor ..."
- umount -l "$node"
- fi
- fi
- done
- }
- # chroot girerken eski bağlar temizlenir.
- unmount_ortam
- # chroot için gerekli dizinlerin oluşturulması
- # Create required directory for destination
- mkdir -p -- "${ROOTFS}/dev" \
- "${ROOTFS}/dev/pts" \
- "${ROOTFS}/proc" \
- "${ROOTFS}/sys" \
- "${ROOTFS}/run"
- if [ -h $ROOTFS/dev/shm ]; then
- mkdir -pv $ROOTFS/$(readlink $ROOTFS/dev/shm)
- fi
- rm -f ${ROOTFS}/dev/console
- rm -f ${ROOTFS}/dev/null
- mknod -m 600 ${ROOTFS}/dev/console c 5 1
- mknod -m 666 ${ROOTFS}/dev/null c 1 3
- echo "Chroot ortamı bağlanıyor..."
- mount -v --bind /dev $ROOTFS/dev
- mount -vt devpts devpts $ROOTFS/dev/pts -o gid=5,mode=620
- mount -vt proc proc $ROOTFS/proc
- mount -vt sysfs sysfs $ROOTFS/sys
- mount -vt tmpfs tmpfs $ROOTFS/run
- # Çıkışları yakalamak için bash tuzak(trap) eklenir.
- trap 'echo ; unmount_ortam' EXIT HUP QUIT ABRT TERM
- chroot "$ROOTFS" /usr/bin/env -i \
- HOME=/root \
- TERM="$TERM" \
- PS1='(temel) \u:\w\$ ' \
- PATH=/bin:/usr/bin:/sbin:/usr/sbin \
- USER=root \
- /usr/bin/bash --login +h
|