tl; dr : 우분투 터치에 .deb 패키지를 설치하는 “정식”또는 “권장”방법을 찾고 있습니다
데스크탑과 서버에서 1 년 동안 우분투를 사용해 왔으며 매우 만족합니다. 이제 첫 번째 Ubuntu 전화 인 BQ Aquaris e4.5 Ubuntu Edition을 구입했습니다. 그러나 일반 .deb
패키지를 설치하거나을 사용하여 물건을 설치할 수 없다는 것을 알았습니다 apt-get
. “일반” .deb
패키지를 설치할 수 있도록 전화기를 “루트”하는 방법은 무엇입니까?
나는 그것을 직접 시도했다. 첫 번째는 파일 시스템을 쓰기 가능하게 만드는 것입니다. 다음 단계를 수행했지만 dpkg 오류로 인해 중단되었습니다.
# Desktop:
sudo add-apt-repository ppa:phablet-team/tools
sudo apt-get update
sudo apt-get install phablet-tools
# Phone:
Security & Privacy: Lock phone: Lock when idle: Never
About this phone: Developer Mode: Developer Mode ON
# connect phone to PC via USB
# Desktop:
adb devices
# no device detected so I've manually added file
touch /home/username/.android/adb_usb.ini
# with content: 0x2a47
sudo adb kill-server
sudo adb start-server
adb devices # now my phone is on the list
# Phone:
sudo test -w filename && echo "Writable" || echo "Not Writable"
# verified it is writable
sudo add-apt-repository ppa:phablet-team/ppa
sudo apt-get update && sudo apt-get upgrade
그리고 이것은 오류가 나를 막기 시작하는 곳입니다.
dpkg: error processing archive /var/cache/apt/archives/powerd_0.16+15.04.20150430-0ubuntu1_armhf.deb (--unpack):
unable to make backup link of `./usr/share/powerd/device_configs/config-default.xml' before installing new version: Invalid cross-device link
그래서 나는 시도했다
sudo apt-get install -f
그러나 “Bluetooth main config”에 붙어 있습니다. 전화를 다시 시작했지만 더 이상 켜지지 않았습니다. Recover
부팅 옵션을 시도했습니다 . 효과가있었습니다. install -f
다시 시도했는데 이번에는 효과가있었습니다. 그러나 그렇게 한 후에도 upgrade
여전히 같은 오류가 발생했습니다.
답변
홈 디렉토리 내에 chroot를 작성하십시오.
mkdir -p vivid-chroot CD 생생한 chroot wget http://cdimage.ubuntu.com/ubuntu-touch/vivid/daily-preinstalled/current/vivid-preinstalled-touch-armhf.tar.gz sudo tar -zxvf vivid-preinstalled-touch-armhf.tar.gz
그런 다음 chroot를 사용하고 해당 chroot 내에 사용해야하는 CLI 도구를 설치하십시오.
cd ~ / vivid-chroot sudo chroot. 적절한 업데이트 apt-get 설치 git
특정 작업을 수행하려면 일부 디렉토리를 바인드 마운트해야합니다. 전화기에서 chroot를 삭제하거나 다른 파괴적인 작업을 수행하려면 추가주의를 기울여야합니다.
sudo 마운트 --bind / proc / home / phablet / vivid-chroot / proc sudo 마운트 --bind / dev / home / phablet / vivid-chroot / dev sudo 마운트 --bind / sys / home / phablet / vivid-chroot / sys
전체 목록은 아니지만 비슷한 방식으로 필요에 따라 다른 디렉토리를 마운트 할 수 있습니다. SD 카드와 같은 외부 저장 장치가있는 경우 홈 디렉토리에 chroot를 만들 필요가 없습니다. 그러나 모든 전화기에 SD 카드 슬롯이있는 것은 아닙니다. SD 카드에 chroot를 작성하려면 위 명령에서 홈 디렉토리를 chroot를 작성하려는 대체 저장 매체의 디렉토리 경로로 바꾸십시오.
답변
경고 : 이것은 전원이 켜진 패키지로 apt-get 업그레이드시 교차 장치 링크 문제를 제거하기 위한 해킹 일뿐 입니다. 이것은 “UBUNTU”인증 솔루션이 아닙니다
전제 조건 : R / W를 우분투 설치로 설정 :
phablet-config writable-image
다운로드 한 powerd * .deb 파일을 전화에서 다음 경로로 PC로 복사하십시오.
/ var / cache / apt / archives /
PC에서 .deb 파일의 압축을 풀고 /usr/share/powerd/device_configs/config-default.xml 파일을 제거하십시오 (내 테스트에서 기본적으로 나타나지 않음).
su - root
mkdir tmp
dpkg-deb -R powerd_0.16+15.04.20150507-0ubuntu1_armhf.deb tmp
rm tmp/usr/share/powerd/device_configs/config-default.xml
mv powerd_0.16+15.04.20150507-0ubuntu1_armhf.deb old.deb
dpkg-deb -b tmp powerd_0.16+15.04.20150507-0ubuntu1_armhf.deb
패키지 파일 및 디렉토리의 원래 권한을 유지하려면 모든 것이 루트로 수행되어야합니다. 다시 포장하고 전화로 다시 복사 한 후 다음을 사용하여 설치하십시오.
sudo dpkg -i powerd_0.16+15.04.20150507-0ubuntu1_armhf.deb
여전히 오류가 발생합니다.
“/usr/share/powerd/device_configs/config-default.xml”: 장치 또는 리소스 사용량이 많음
그러나 결국 패키지가 업데이트됩니다.
이제 수행 sudo apt-get upgrade
하면 오류가 사라졌습니다.
내 전화 BQ Aquaris가 잘 작동하는 것 같습니다.
답변
이미 지적했듯이 장치에 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 서비스에는 이러한 제한이 없습니다.
답변
전화의 루트 파일 시스템을 쓰기 가능하게 만들기
루트 파일 시스템을 쓰기 가능으로 다시 마운트하려면 전화기에서 다음 명령을 실행하십시오 ( 아직 터미널 앱을 아직 다운로드 하지 않은 경우 다운로드 ).
sudo mount -o remount,rw /
주의하시기 바랍니다 휴대 전화를 재부팅 한 후, /
읽기 전용 다시 . 이것을 영구적으로 유지하려면을 변경하십시오 /etc/fstab
. 그러나 BQ에 대한 우분투 터치는 아직 주요 우분투 팔 저장소에 없습니다. 아직 설치 되지 않았 tree
거나 libreoffice
작동하지 않습니다. 최신 버전 일 수 있습니다.
최신 데블 버전의 우분투 실행
(명령 줄 도구 등과 같은 저장소에 더 많은 장점이 있습니다)
BQ 전화에서 최신 Ubuntu Touch Development Release를 실행하는 방법은 무엇입니까?
모든 것을 깰 때 물건을 고정
문제가 완전히 해결되면 기기를 다시 플래시 하면 됩니다 .