Như đã được chỉ ra, bạn phải cài đặt một chroot có khả năng ARM trên thiết bị của bạn và cài đặt tất cả các gói cần thiết trong chroot đó. Tuy nhiên, làm như vậy trong thư mục nhà của bạn lãng phí rất nhiều không gian có giá trị. Thay vào đó, nó có thể được thực hiện trên thẻ SD của bạn bằng máy tính chạy trên HĐH Linux thích hợp (được thử nghiệm trên Linux Mint 17 và Ubuntu Trusty). Vì tôi không tìm thấy bất kỳ thông tin nào về vấn đề này ở bất cứ nơi nào khác, tôi đặt nó ở đây như một câu trả lời cho một câu hỏi cũ.
Các hướng dẫn sau đây giả sử bạn muốn cài đặt một debian jessie chroot trong thư mục jessie.
Tạo và điền tệp hình ảnh trên máy tính để bàn
Tạo một tệp hình ảnh trống
Để tạo hình ảnh 1GB có tên IMAGE.img trong thư mục làm việc hiện tại, hãy làm:
dd if=/dev/zero of=IMAGE.img bs=1G count=1
Lưu ý rằng B tính bằng GB bị bỏ lại. "Nếu" là viết tắt của "tệp đầu vào", "của" cho "tệp đầu ra" và "bs" cho "kích thước khối".
Có nhiều lệnh hiệu quả hơn, nhưng chúng chỉ hoạt động trên một số loại hệ thống tệp nhất định, theo như tôi biết. Cái này cũng hoạt động trên thẻ SD hoặc tempfs. Vui lòng lưu ý việc sử dụng / dev / zero và không / dev / ngẫu nhiên hoặc / dev / urandom vì sẽ mất nhiều thời gian hơn và khiến việc chuyển hình ảnh giữa các thiết bị sau này mất nhiều thời gian hơn.
Tạo một hệ thống tập tin trên hình ảnh
Không có hệ thống tập tin, điện thoại sẽ không thể lưu trữ bất kỳ dữ liệu nào trên hình ảnh. Nếu không có hệ thống tập tin, bạn chưa thể gắn hình ảnh vào một thư mục, chỉ vào một thiết bị khối.
Lệnh bash này sẽ xuất thiết bị vòng lặp trống tiếp theo vào biến LOOP
:
$LOOP=$(sudo losetup -f)
Tiếp theo, gán hình ảnh cho một thiết bị khối:
sudo losetup $LOOP IMAGE.img
Tiếp theo, tạo hệ thống tệp ext4 trên nó:
sudo mkfs -t ext4 $LOOP
Tiếp theo, tách hình ảnh khỏi thiết bị lặp:
sudo losetup -d $LOOP
Nếu bạn nhận được lệnh không tìm thấy lỗi, chỉ cần cài đặt các chương trình bị thiếu.
Gắn tệp hình ảnh trên máy tính để truy cập nó
Bây giờ, tạo một thư mục tạm thời trong thư mục làm việc:
mkdir jessie
và gắn tệp hình ảnh IMAGE.img vào nó:
sudo mount -o loop IMAGE.img $(pwd)/jessie
Lệnh pwd
sẽ đảm bảo bạn cung cấp cho mount một đường dẫn tuyệt đối đến thư mục làm việc hiện tại của bạn.
Tạo hình ảnh với hệ điều hành mới với qemu-debootstrap
Bước tiếp theo sẽ là sử dụng qemu-debootstrap để tải xuống các tệp cần thiết. Điều này thật dễ dàng nếu qemu-debootstrap có sẵn như trường hợp trên Ubuntu và các hệ điều hành dẫn xuất. Nếu bạn nhận được lệnh không tìm thấy lỗi khi thực thi
qemu-debootstrap --help
, hãy thử cài đặt gói thích hợp, có thể được thực hiện trên Ubuntu thông qua:
sudo apt-get install qemu-user-static
Để tải xuống tất cả các tệp cần thiết và sẵn sàng HĐH mới, hãy chạy lệnh sau:
sudo qemu-debootstrap --arch=armhf jessie ./jessie http://http.debian.net/debian
Xin lưu ý rằng jessie
phiên bản đầu tiên là phiên bản hệ điều hành trong khi phiên bản thứ hai jessie
là thư mục chứa các tệp sẽ được cài đặt. Bây giờ bạn có thể ngắt kết nối hình ảnh vì phần còn lại của công việc phải được thực hiện trên điện thoại. Làm như vậy thông qua:
sudo umount $(pwd)/jessie
Nếu bạn không thể cài đặt qemu-debootstrap, hãy xem phần tiếp theo.
Tạo hình ảnh với hệ điều hành mới mà không cần qemu-debootstrap
Vui lòng bỏ qua phần này nếu bạn có sẵn qemu-debootstrap. Bạn vẫn sẽ cần một debootstrap riêng cho kiến trúc của bạn, mặc dù. Nếu điều này xảy ra là armhf, chỉ cần sử dụng dòng lệnh trên nhưng thay thế qemu-debootstrap
bằng
debootstrap
. Nếu không, hãy làm theo phần này.
Để tải xuống tất cả các tệp cần thiết cho HĐH mới, hãy chạy lệnh sau:
sudo debootstrap --arch=armhf --foreign jessie ./jessie \
http://http.debian.net/debian
Bây giờ bạn có thể ngắt kết nối hình ảnh vì phần còn lại của công việc phải được thực hiện trên điện thoại. Làm như vậy thông qua:
sudo umount $(pwd)/jessie
Chuyển hình ảnh sang điện thoại
Bây giờ tốt nhất hãy tạo một kho lưu trữ tar từ cái này mà sau đó bạn sao chép vào điện thoại của mình. Việc lưu trữ được đặt trên thẻ SD hay bộ nhớ trong không thành vấn đề. Tạo kho lưu trữ trên máy tính để bàn bằng cách sử dụng:
tar -cvzf jessie.tar.gz IMAGE.img
Bây giờ, trên điện thoại của bạn, bật hỗ trợ ssh để sao chép hình ảnh qua. Bạn cũng có thể làm điều đó bằng cách sử dụng cáp USB thay thế. Vì máy chủ ssh được đặt lại trên mỗi lần khởi động lại, hãy khởi động dịch vụ ssh trên điện thoại qua:
sudo service ssh start
Tiếp theo, sao chép hình ảnh qua:
scp jessie.tar.gz phablet@ubuntu-phablet:$COPYDIR
trong đó biến COPYDIR
chứa thư mục lưu trữ hình ảnh. Lệnh này giả sử rằng tên người dùng của bạn trên điện thoại là phablet và tên máy chủ của điện thoại là ubfox-phablet. Bạn có thể tìm hiểu cả bằng cách phát hành echo $USER
và echo $HOSTNAME
trên điện thoại, tương ứng.
Bây giờ bạn chỉ phải trích xuất kho lưu trữ bất cứ nơi nào bạn muốn hình ảnh cư trú. Giả sử thư mục mà bạn muốn hình ảnh được định vị được lưu trữ trong biến IMAGEDIR
. Trích xuất hình ảnh ở đó thông qua lệnh bash:
( cd $IMAGEDIR; tar -xvzf $COPYDIR/jessie.tar.gz; )
Bây giờ bạn có thể xóa kho lưu trữ:
rm $COPYDIR/jessie.tar.gz
Hoàn thiện và sử dụng hình ảnh trên điện thoại
Nếu bạn không bật máy chủ ssh trên điện thoại, hãy thực hiện ngay bây giờ qua:
sudo service ssh start
Tiếp theo, gắn hình ảnh của bạn vào một thư mục bạn chọn (trong trường hợp này là "jessie"):
sudo mount -o loop $IMAGEDIR/IMAGE.img $(pwd)/jessie
Bây giờ, hãy nhập chroot của bạn lần đầu tiên qua:
ssh localhost "sudo chroot $(pwd)/jessie /bin/bash"
Nếu bạn đã có qemu-debootstrap trên máy tính của mình, bạn đã hoàn tất. Sử dụng 2 lệnh trên để kết nối với chroot của bạn. Nếu không, bạn vẫn phải thực thi lệnh sau khi bạn ở trong chroot của mình, để thiết lập đúng hệ điều hành:
/debootstrap/debootstrap --second-stage
Tóm tắt về cách truy cập chroot
Nếu bạn đã làm theo các bước trên, bạn sẽ có thể truy cập chroot của mình bằng cách sử dụng tập lệnh đơn giản này trên điện thoại:
#!/bin/bash
sudo service ssh start
ssh localhost "sudo chroot jessie /bin/bash"
Trước tiên, bạn phải ssh vào điện thoại của mình từ điện thoại do hạn chế của ứng dụng thiết bị đầu cuối. Ứng dụng đầu cuối chỉ được phép thực thi nhị phân ở một số vị trí nhất định và cả thư mục nhà của bạn cũng như thẻ SD không nằm trong số đó. Dịch vụ ssh, tuy nhiên, không có những hạn chế như vậy.