이미 지적했듯이 장치에 ARM 가능 chroot를 설치하고 해당 chroot에 필요한 모든 패키지를 설치해야합니다. 그러나 홈 디렉토리에서 그렇게하면 많은 귀중한 공간이 낭비됩니다. 대신 적절한 Linux OS (Linux Mint 17 및 Ubuntu Trusty에서 테스트)에서 실행되는 컴퓨터를 사용하여 SD 카드에서 수행 할 수 있습니다. 다른 곳에서는 이것에 대한 정보를 찾지 못 했으므로 여기에 오래된 질문에 대한 답변으로 넣었습니다.
다음 지시 사항은 jessie 디렉토리에 debian jessie chroot를 설치한다고 가정합니다.
데스크탑 컴퓨터에서 이미지 파일 작성 및 채우기
빈 이미지 파일 만들기
현재 작업 디렉토리에 IMAGE.img라는 1GB 이미지를 만들려면 다음을 수행하십시오.
dd if=/dev/zero of=IMAGE.img bs=1G count=1
GB 단위의 B는 제외됩니다. "if"는 "input file", "of"는 "output file", "bs"는 "block size"를 나타냅니다.
더 효율적인 명령이 있지만, 내가 아는 한 특정 유형의 파일 시스템에서만 작동합니다. 이것은 SD 카드 또는 tempfs에서도 작동합니다. / dev / random 또는 / dev / urandom이 아닌 / dev / zero를 사용하면 시간이 오래 걸리고 나중에 장치간에 이미지를 전송하는 데 시간이 오래 걸리므로주의하십시오.
이미지에서 파일 시스템 생성
파일 시스템이 없으면 전화기는 이미지에 데이터를 저장할 수 없습니다. 파일 시스템이 없으면 이미지를 디렉토리에, 블록 장치에만 마운트 할 수 없습니다.
이 bash 명령은 다음 빈 루프 장치를 변수에 출력합니다 LOOP
.
$LOOP=$(sudo losetup -f)
다음으로 이미지를 블록 장치에 할당하십시오.
sudo losetup $LOOP IMAGE.img
다음으로 ext4 파일 시스템을 작성하십시오.
sudo mkfs -t ext4 $LOOP
그런 다음 루프 장치에서 이미지를 분리하십시오.
sudo losetup -d $LOOP
command not found 오류가 발생하면 누락 된 프로그램을 설치하십시오.
이미지 파일을 컴퓨터에 마운트하여 액세스
이제 작업 디렉토리에 임시 디렉토리를 작성하십시오.
mkdir jessie
이미지 파일 IMAGE.img를 마운트하십시오.
sudo mount -o loop IMAGE.img $(pwd)/jessie
이 명령 pwd
을 사용하면 현재 작업 디렉토리의 절대 경로를 마운트 할 수 있습니다.
qemu-debootstrap을 사용하여 새 운영 체제로 이미지 채우기
다음 단계는 qemu-debootstrap을 사용하여 필요한 파일을 다운로드하는 것입니다. 우분투 및 파생 OS에서와 같이 qemu-debootstrap을 사용할 수있는 경우 쉽습니다. 를 실행할 때 command not found 오류가 발생하면
qemu-debootstrap --help
다음을 통해 우분투에서 수행 할 수있는 적절한 패키지를 설치하십시오.
sudo apt-get install qemu-user-static
필요한 모든 파일을 다운로드하고 새 OS를 준비하려면 다음 명령을 실행하십시오.
sudo qemu-debootstrap --arch=armhf jessie ./jessie http://http.debian.net/debian
첫 번째 jessie
는 OS 버전을 나타내고 두 번째 jessie
는 파일을 설치할 디렉토리를 나타냅니다. 이제 나머지 작업은 전화로 수행해야하므로 이미지를 마운트 해제 할 수 있습니다. 다음을 통해 수행하십시오.
sudo umount $(pwd)/jessie
qemu-debootstrap을 설치할 수 없으면 다음 섹션을 참조하십시오.
qemu-debootstrap없이 새로운 운영 체제로 이미지 채우기
qemu-debootstrap을 사용할 수있는 경우이 섹션을 건너 뛰십시오. 그래도 아키텍쳐에는 여전히 기본 debootstrap이 필요합니다. 이 armhf 될 일이 있다면, 바로 위의 명령 줄을 사용하지만 교체 qemu-debootstrap
로
debootstrap
. 그렇지 않은 경우이 섹션을 따르십시오.
새 OS에 필요한 모든 파일을 다운로드하려면 다음 명령을 실행하십시오.
sudo debootstrap --arch=armhf --foreign jessie ./jessie \
http://http.debian.net/debian
나머지 작업은 전화로 수행해야하므로 이제 이미지를 마운트 해제 할 수 있습니다. 다음을 통해 수행하십시오.
sudo umount $(pwd)/jessie
휴대 전화로 이미지 전송
이제 타르 아카이브를 만들어서 전화기에 복사하십시오. 아카이브가 SD 카드에 저장되는지 내부 저장 장치에 저장되는지는 중요하지 않습니다. 다음을 사용하여 데스크탑에서 아카이브를 작성하십시오.
tar -cvzf jessie.tar.gz IMAGE.img
이제 전화기에서 ssh 지원을 켜서 이미지를 복사하십시오. 대신 USB 케이블을 사용하여 그렇게 할 수도 있습니다. 재부팅 할 때마다 ssh 서버가 재설정되므로 다음을 통해 전화기에서 ssh 서비스를 시작하십시오.
sudo service ssh start
다음을 통해 이미지를 복사하십시오.
scp jessie.tar.gz phablet@ubuntu-phablet:$COPYDIR
여기서 변수 COPYDIR
는 이미지가 저장 될 디렉토리를 포함합니다. 이 명령은 전화기의 사용자 이름이 phablet이고 전화기의 호스트 이름이 ubuntu-phablet라고 가정합니다. 발급 echo $USER
및 echo $HOSTNAME
전화로 각각 확인할 수 있습니다 .
이제 이미지가 상주 할 위치 만 아카이브를 추출하면됩니다. 이미지를 배치 할 디렉토리가 변수에 저장되어 있다고 가정하십시오 IMAGEDIR
. bash 명령을 통해 이미지를 추출하십시오.
( cd $IMAGEDIR; tar -xvzf $COPYDIR/jessie.tar.gz; )
이제 아카이브를 제거 할 수 있습니다.
rm $COPYDIR/jessie.tar.gz
휴대 전화에서 이미지 마무리 및 사용
전화기에서 ssh 서버를 켜지 않은 경우 지금 다음을 수행하십시오.
sudo service ssh start
그런 다음 이미지를 선택한 디렉토리 (이 경우 "jessie")에 마운트하십시오.
sudo mount -o loop $IMAGEDIR/IMAGE.img $(pwd)/jessie
이제 다음을 통해 chroot를 처음 입력하십시오 :
ssh localhost "sudo chroot $(pwd)/jessie /bin/bash"
컴퓨터에서 qemu-debootstrap을 사용할 수 있다면 모든 작업이 완료된 것입니다. 위의 두 명령을 사용하여 chroot에 연결하십시오. 그렇지 않은 경우, OS를 올바르게 설정하려면 chroot 내부에 있으면 다음 명령을 계속 실행해야합니다.
/debootstrap/debootstrap --second-stage
chroot에 액세스하는 방법 요약
위의 단계를 수행 한 경우 전화에서이 간단한 스크립트를 사용하여 chroot에 액세스 할 수 있어야합니다.
#!/bin/bash
sudo service ssh start
ssh localhost "sudo chroot jessie /bin/bash"
터미널 앱의 의류 제한으로 인해 먼저 전화에서 자신의 전화로 ssh해야합니다. 터미널 앱은 특정 위치에서만 이진 파일을 실행할 수 있으며 홈 디렉토리 나 SD 카드 중 어느 것도 그 위치에 없습니다. 그러나 ssh 서비스에는 이러한 제한이 없습니다.