chroot


chroot概念

chroot是操作系統級的“虛擬機”,其功能是切換程序運行時的根目錄,將程序限制在指定的根目錄中,從而隔離應用程序,這個目錄叫作 chroot jail

在chroot中運行的程序實際上使用的是真實系統的內核和資源,所以性能不會有損耗。

chroot 目的

切換根目錄通常為了系統維護:

  • 重新安裝 bootloader.
  • 重建 initramfs 鏡像.
  • 更新或 降級軟件包.
  • 重置 忘記的密碼.
  • 在干凈的 chroot 中構建軟件包

chroot必要條件

  • root 權限
  • 另一個 linux 環境,例如 liveCD、USB 閃存介質或者一個已經安裝的另一個 linux 發行版。
  • 匹配的架構,chroot 前后的環境架構要一致(例如均為 i686 或 x86_64)。可以用  uname –m  命令查看當前環境的架構
  • 提前加載 chroot 環境需要的內核模塊
  • 如果需要 swap, chroot 前先啟用 swap (swapon /dev/sdxY)
  • 如果需要網絡,chroot 之前先建立好網絡連接。

兩種使用 chroot 的方式

>> arch-chroot bash 腳本是軟件包 arch-install-scripts 的一部分,在運行 /usr/bin/chroot 前,這個腳本會掛載 /proc api 文件系統,建立可用的 /etc/resolv.conf。

  • 進入 chroot

 # arch-chroot /location/of/new/root 

例如在 安裝指南 中,chroot 到 /mnt:

 # arch-chroot /mnt 

  • 退出 chroot:

 # exit 

  • 運行一個命令並退出

 # arch-chroot /location/of/new/root mycommand 

例如要在 /mnt/arch 中運行 mkinitcpio -p linux 並退出:

 # arch-chroot /mnt/arch mkinitcpio -p linux 

>> 使用 chroot

警告: 使用 --rbind 選項時,將無法卸載某些 dev/ 和 sys/ 的子目錄,用 umount -l 卸載將會破壞會話並需要重啟,所以請盡可能使用 -o bind。

作為 root 掛載 api 文件系統:

# cd /location/of/new/root # mount -t proc proc proc/ # mount --rbind /sys sys/ # mount --rbind /dev dev/

可選掛載:

 # mount --rbind /run run/ 

如果已經建立了一個網絡連接並且想在 chroot 環境中繼續使用,將 DNS 服務器配置復制到新環境:

 # cp -L /etc/resolv.conf etc/resolv.conf 

chroot 到新環境中並啟用指定 shell

 # chroot /mnt/arch /usr/bin/bash 

建立一個最小的chroot環境:

1.在 /home 目錄下建立一個 rootfs目錄,作為 chroot 的根目錄  

2.建立 bin 目錄,並拷貝默認的 bash 命令和用於測試的 ls 命令:

3. ldd 找到兩個命令的依賴,拷貝到相應的位置:

4. chroot . 改變根目錄,並使用 ls -a 測試,完成后exit退出:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM