ดังที่ได้กล่าวแล้วคุณต้องติดตั้ง chroot ที่สามารถใช้งาน ARM ได้บนอุปกรณ์ของคุณและติดตั้งแพ็คเกจที่จำเป็นทั้งหมดใน chroot นั้น อย่างไรก็ตามการทำเช่นนั้นในโฮมไดเร็กตอรี่ของคุณเป็นการสิ้นเปลืองพื้นที่มีค่ามากมาย แต่สามารถทำได้บนการ์ด SD ของคุณโดยใช้คอมพิวเตอร์ที่ใช้ระบบปฏิบัติการ Linux ที่เหมาะสม (ทดสอบกับ Linux Mint 17 และ Ubuntu Trusty) เนื่องจากฉันไม่พบข้อมูลใด ๆ เกี่ยวกับเรื่องนี้ในที่อื่นฉันจึงใส่คำตอบไว้ในคำถามเก่า
คำแนะนำต่อไปนี้จะถือว่าคุณต้องการติดตั้ง debian jessie chroot ในไดเรกทอรี jessie
การสร้างและเติมไฟล์ภาพในคอมพิวเตอร์เดสก์ท็อป
การสร้างไฟล์ภาพเปล่า
ในการสร้างภาพ 1GB ชื่อ IMAGE.img ในไดเรกทอรีการทำงานปัจจุบันให้ทำ:
dd if=/dev/zero of=IMAGE.img bs=1G count=1
โปรดทราบว่า B ใน GB ถูกปล่อยออกมา "ถ้า" หมายถึง "ไฟล์อินพุต", "ของ" สำหรับ "ไฟล์เอาต์พุต" และ "bs" สำหรับ "ขนาดบล็อก"
มีคำสั่งที่มีประสิทธิภาพมากกว่า แต่คำสั่งเหล่านั้นใช้ได้กับระบบไฟล์บางประเภทเท่าที่ฉันรู้ อันนี้ยังทำงานบนการ์ด SD หรือ tempfs โปรดทราบการใช้ / dev / ศูนย์และไม่ / dev / สุ่มหรือ / dev / urandom เนื่องจากอาจใช้เวลานานกว่าและทำให้การถ่ายโอนรูปภาพระหว่างอุปกรณ์ในภายหลังนั้นนานขึ้น
การสร้างระบบไฟล์บนภาพ
หากไม่มีระบบไฟล์โทรศัพท์จะไม่สามารถจัดเก็บข้อมูลใด ๆ ในภาพได้ หากไม่มีระบบไฟล์คุณจะไม่สามารถเมานต์อิมเมจไปยังไดเรกทอรีได้เฉพาะกับอุปกรณ์บล็อก
คำสั่ง bash นี้จะเอาท์พุทอุปกรณ์ลูปต่อไปลงในตัวแปรLOOP
:
$LOOP=$(sudo losetup -f)
ถัดไปกำหนดภาพให้กับอุปกรณ์บล็อก:
sudo losetup $LOOP IMAGE.img
ถัดไปสร้างระบบไฟล์ ext4 บน:
sudo mkfs -t ext4 $LOOP
ถัดไปถอดรูปภาพออกจากอุปกรณ์ลูป:
sudo losetup -d $LOOP
หากคุณได้รับคำสั่งไม่พบข้อผิดพลาดเพียงแค่ติดตั้งโปรแกรมที่หายไป
เมาท์ไฟล์รูปภาพบนคอมพิวเตอร์เพื่อเข้าถึง
ตอนนี้สร้างไดเรกทอรีชั่วคราวในไดเรกทอรีการทำงาน:
mkdir jessie
และเมานต์ไฟล์ภาพ IMAGE.img:
sudo mount -o loop IMAGE.img $(pwd)/jessie
คำสั่งpwd
จะทำให้แน่ใจว่าคุณกำหนดเส้นทางที่แน่นอนไปยังไดเรกทอรีการทำงานปัจจุบันของคุณ
การเติมอิมเมจด้วยระบบปฏิบัติการใหม่ที่มี qemu-debootstrap
ขั้นตอนต่อไปคือการใช้ qemu-debootstrap เพื่อดาวน์โหลดไฟล์ที่จำเป็น นี่เป็นเรื่องง่ายหาก qemu-debootstrap มีให้บริการเช่นเดียวกับใน Ubuntu และ OS ที่ได้รับ หากคุณได้รับคำสั่งไม่พบข้อผิดพลาดขณะดำเนินการ
qemu-debootstrap --help
ให้ลองติดตั้งแพ็คเกจที่เหมาะสมซึ่งสามารถทำได้บน Ubuntu ผ่าน:
sudo apt-get install qemu-user-static
ในการดาวน์โหลดไฟล์ที่จำเป็นทั้งหมดและพร้อมระบบปฏิบัติการใหม่ให้รันคำสั่งต่อไปนี้:
sudo qemu-debootstrap --arch=armhf jessie ./jessie http://http.debian.net/debian
โปรดทราบว่าตัวแรกjessie
หมายถึงเวอร์ชั่นของระบบปฏิบัติการในขณะที่ตัวที่สองjessie
หมายถึงไดเรกทอรีที่จะติดตั้งไฟล์ตอนนี้คุณสามารถยกเลิกการต่อเชื่อมภาพได้เนื่องจากต้องทำงานที่เหลือบนโทรศัพท์ ทำได้ผ่าน:
sudo umount $(pwd)/jessie
หากคุณไม่สามารถติดตั้ง qemu-debootstrap ให้ดูหัวข้อถัดไป
การเติมอิมเมจด้วยระบบปฏิบัติการใหม่โดยไม่มี qemu-debootstrap
โปรดข้ามส่วนนี้หากคุณมี qemu-debootstrap คุณจะยังคงต้องใช้ debootstrap ดั้งเดิมสำหรับสถาปัตยกรรมของคุณ หากเกิดเหตุการณ์นี้จะเป็น armhf เพียงใช้บรรทัดคำสั่งดังกล่าวข้างต้น แต่แทนที่โดยqemu-debootstrap
debootstrap
ถ้าไม่ทำตามส่วนนี้
ในการดาวน์โหลดไฟล์ที่จำเป็นทั้งหมดสำหรับระบบปฏิบัติการใหม่ให้รันคำสั่งต่อไปนี้:
sudo debootstrap --arch=armhf --foreign jessie ./jessie \
http://http.debian.net/debian
ตอนนี้คุณสามารถยกเลิกการต่อเชื่อมภาพได้เนื่องจากงานที่เหลือต้องทำบนโทรศัพท์ ทำได้ผ่าน:
sudo umount $(pwd)/jessie
ถ่ายโอนภาพไปยังโทรศัพท์
ตอนนี้ควรสร้างไฟล์เก็บถาวร tar จากสิ่งที่ดีที่สุดซึ่งคุณคัดลอกไปยังโทรศัพท์ของคุณ ไม่สำคัญว่าจะจัดเก็บลงสื่อถาวรบนการ์ด 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 บนคอมพิวเตอร์ของคุณแสดงว่าคุณทำเสร็จแล้ว ใช้ 2 คำสั่งด้านบนเพื่อเชื่อมต่อกับ chroot ของคุณ ถ้าไม่คุณยังคงต้องดำเนินการคำสั่งต่อไปนี้เมื่อคุณอยู่ใน chroot ของคุณเพื่อติดตั้งระบบปฏิบัติการอย่างถูกต้อง:
/debootstrap/debootstrap --second-stage
สรุปวิธีการเข้าถึง chroot
หากคุณทำตามขั้นตอนข้างต้นคุณควรจะสามารถเข้าถึง chroot ของคุณโดยใช้สคริปต์ง่ายๆนี้บนโทรศัพท์:
#!/bin/bash
sudo service ssh start
ssh localhost "sudo chroot jessie /bin/bash"
คุณต้อง ssh แรกลงในโทรศัพท์ของคุณเองจากโทรศัพท์เนื่องจากข้อ จำกัด apparmor ของแอป terminal แอพพลิเคชั่นเทอร์มินัลอนุญาตให้เรียกใช้ไบนารีในบางตำแหน่งเท่านั้นและไม่มีไดเรกทอรีหลักหรือการ์ด SD ของคุณ อย่างไรก็ตามบริการ ssh ไม่มีข้อ จำกัด ดังกล่าว