Install ubuntu in chroot environment

Cute_Security15·2023년 8월 12일
0

설정

목록 보기
3/30
post-thumbnail

chroot?

os-level 에서 제공하는 심플한 가상화 기법
chroot 시스템콜을 부르면, 프로세스 자신의 root directory(/) 를 다른 곳으로 변경할수 있다.
(= 다른 rootfs 사용)

프로세스가 접근할수 있는 디렉토리가 chroot-jail 내로 제한되므로, 몇가지
확실한 이점이 생긴다.

1) 프로그램 실행할때

  • 별도의 hw 없이, process 별로 독립적인 공간 제공가능
  • ex) qemu 로 다른 아키텍쳐 vm 구성

2) 프로그램 빌드할때

  • 잘못된 의존성을 따라가는 상황 방지
    (= 직접 컴파일러, 소스받아서 빌드시 깔끔한 빌드가 가능)
  • ex) cross compile, lfs build

Pre-requisites

magisk 로 루팅된 태블릿, termux

why not just use linux deploy?

https://wiki.termux.com/wiki/PRoot#PRoot_vs_Chroot

linux deploy 는 meefik busybox 를 설치해야 하는데,
오래된 패키지여서 그런지, 없는 볼륨(/system) 을 rw 로 remount 시도하고 설치실패가 된다.

설치스탭 원본링크

https://ivonblog.com/en-us/posts/termux-chroot-ubuntu/#1-install-busybox-for-android-12-devices

설치스탭

1) Magisk Builtin Busybox 설치

  • Fox's Magisk Module Manager 설치
    (FoxMMM == Androidacy Module Manager == AMM)
  • AMM 열고 Magisk repository 활성화
  • Magisk Builtin Busybox 검색 후 설치

2) Ubuntu base rootfs 준비

3) chroot 스크립트 작성

( busybox 바이너리를 사용해서 mount, chroot )

  • /data remount
  • /dev, /sys, /proc, /dev/pts bind-mount
  • /sdcard bind-mount
  • chroot /data/local/tmp/chrootubuntu su - root
  • umount /dev, /sys, /proc

4) sh "chroot 스크립트"

( child shell 만들어서 실행하라는 뜻 )

5) chroot-jail 내에 apt 환경설정

  • /etc/resolv.conf : nameserver 8.8.8.8,
  • /etc/hosts : 127.0.0.1 localhost
  • aid_inet(3003), aid_net_raw(3004), aid_graphics(1003) 그룹생성
  • _apt 유저를 aid_inet, aid_net_raw 에 등록
  • root 유저를 aid_inet 에 등록

6) apt update; apt upgrade

  • 그 외에 vim net-tools sudo git 도 설치

7) sshd 설치, sshd 실행

  • apt install openssh-client openssh-server
  • passwd root
  • mkdir /run/sshd; /usr/sbin/sshd -D &

8) xfce4, vncserver 설치

  • apt install xfce4 xfce4-goodies
  • update-alternatives --config x-terminal-emulator (xfce4 로 변경)
  • apt install tigervnc-standalone-server tigervnc-xorg-extension
  • vncpasswd

9) vncserver startup 스크립트(~/.vnc/xstartup) 추가, vncserver 실행

#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADRESS
export PULSE_SERVER=127.0.0.1 && pulseaudio --start --disable-shm=1 --exit-idle-time=-1
exec startxfce4

chmod +x ~/.vnc/xstartup
vncserver -localhost no (종료는 vncserver -kill :1)

10) Optional: pulseaudio 설정 및 일반 user 생성

일반 termux

pulseaudio --start --load="module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1" --exit-idle-time=-1
pacmd load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1

chroot (아래 명령 수행후 user 에 sudo 권한부여)

groupadd storage
groupadd wheel
useradd -m -g users -G wheel,audio,video,storage -s /bin/bash user
passwd user

ubuntu 동작확인

chroot 환경에서 vncserver 구동, avnc 어플로 접속

  • rootfs : (ubuntu22)
  • desktop environment (xfce4)

confer.

chroot "su -" 를 써야 하는 이유 : 기존 유저의 PATH 랑 환경변수 쓸께 아니기 때문

profile
관심분야 : Filesystem, Data structure, user/kernel IPC

0개의 댓글