วิธีรับรูทพาร์ติชันที่ใหญ่ขึ้นบน Touch


9

ฉันพยายามทำให้ Touch (14.10) ทำงานเป็นเซิร์ฟเวอร์ Ubuntu อย่างไรก็ตามพาร์ติชั่นรูทนั้นมีเพียง 2 GB และไม่เพียงพอสำหรับแพ็คเกจที่ฉันต้องติดตั้ง มีวิธีใดในการเพิ่มพื้นที่บนพาร์ติชันรูท?

ป่านนี้ฉันพยายาม:

  • resize2fs บน / dev / loop0 จะไม่ทำงานเนื่องจากเคอร์เนลไม่รองรับการปรับขนาดออนไลน์และฉันไม่สามารถยกเลิกการต่อเชื่อมราก (ro ไม่ได้ตัดมันแม้จะมี -f)

  • การเพิ่ม 2 GB ลงในตอนท้ายของ /userdata/ubuntu.img ทำงานได้ แต่ resize2fs บนไฟล์ไม่ได้ช่วยอะไร


นี่เป็นคำถามที่น่าสนใจมากสำหรับผู้ใช้ใหม่ ยินดีต้อนรับสู่ชุมชน
Akiva

คำตอบ:


1

ฉันมีปัญหาที่คล้ายกันในที่สุดฉันก็ตัดสินใจที่จะย้าย/usrไปที่/home/usr( /homeติดตั้งจากระบบไฟล์ 14G ซึ่งทำให้ฉันมีพื้นที่เหลือเฟือสำหรับแพ็คเกจเพิ่มเติม)

นี่เป็นวิธีที่แฮ็กเล็กน้อยในการทำเช่นนี้ แต่ดูเหมือนว่าจะทำงานให้ฉัน ตัวอย่างรหัส follwing กำลังใช้$เพื่อระบุว่าคำสั่งควรรันในฐานะผู้ใช้ปกติและ#เพื่อระบุบทบาทผู้ใช้รูท (ซึ่งสามารถรับได้โดย sudo หรือ loggig เป็นรูท)

  1. ตั้งค่ารหัสผ่านสำหรับผู้ใช้รูทคุณจะต้องมีความสามารถในการบันทึกเป็นรูทในกรณีที่คุณทำอะไร/usr/bin/sudoผิดพลาด โดยทำดังนี้

    $ sudo su
    # passwd
    
  2. คัดลอกเนื้อหาของ/usrการสงวนสิทธิ์และสิทธิ์:

    $ cd /usr
    $ sudo find . -depth -print0 | sudo cpio --null --sparse -pvd /home/usr/
    
  3. ตรรกะขั้นตอนต่อไปจะใช้fstabในการติดตั้ง/home/usrเป็น/usrในการบูต แต่การเปลี่ยนแปลงทั้งหมดที่ฉันพยายามที่จะทำให้ไปfstabถูกหายไปหลังจากรีบูตเครื่องอูบุนตู ดังนั้นฉันจึงสร้างสคริปต์ง่าย ๆ เพื่อทำการติดตั้งและบันทึกเป็น/etc/init.d/bind.sh:

    #!/bin/sh
    if [ "X$1" = "Xstart" ]; then
      echo "Binding /home/usr to /usr..."
      chmod 4755 /home/usr/bin/passwd /home/usr/bin/chsh /home/usr/bin/pkexec /home/usr/bin/sudo /home/usr/bin/newgrp /home/usr/bin/gpasswd /home/usr/bin/chfn /home/usr/lib/pt_chown /home/usr/lib/eject/dmcrypt-get-device /home/usr/lib/openssh/ssh-keysign /home/usr/lib/dbus-1.0/dbus-daemon-launch-helper /home/usr/lib/policykit-1/polkit-agent-helper-1 /home/usr/lib/arm-linux-gnueabihf/oxide-qt/chrome-sandbox /home/usr/lib/arm-linux-gnueabihf/lxc/lxc-user-nic
      mount -o bind,suid /home/usr /usr
      echo "...done"
    fi 
    

    บรรทัด chmod เป็นสิ่งจำเป็นที่ผมสังเกตเห็นว่าsuid bitเป็นบางครั้งหายไปหลังจากการติดตั้ง รายการของไฟล์ที่มีการsuid bitตั้งค่าสามารถพบได้โดยการเรียกใช้# find /usr -user root -perm -4000บน/usrไดเรกทอรีเดิม โปรดทราบว่าหากคุณติดตั้งอะไรในภายหลังซึ่งใช้suid bitมันอาจจะเสียหายจนกว่าคุณจะเพิ่มลงในรายการ

    คุณจะต้องสร้างลิงก์สัญลักษณ์ใน/etc/rcS.dสำหรับbind.sh:

     # ln -s /etc/init.d/bind.sh /etc/rcS.d/S36bind.sh
    

    หมายเหตุ: คุณอาจต้องการเลือกหมายเลขที่แตกต่างจาก 36 ขึ้นอยู่กับสถานะของคุณ /etc/rcS.dขึ้นอยู่กับสถานะของคุณ

    หรือคุณสามารถแก้ไขได้/lib/init/fstabตามที่อธิบายไว้ที่นี่เพื่อให้มีการเปลี่ยนแปลงถาวรใน fstab

  4. หลังจากรีบูตระบบควรใช้งาน/home/usrเป็น/usrอย่างดีดังนั้นหวังว่าคุณควรมีพื้นที่เพิ่มเติมสำหรับแพ็คเกจเพิ่มเติม โปรดทราบว่าเก่า/usrยังคงมีอยู่ แต่ไม่สามารถเข้าถึงได้ตราบใดที่ติดตั้งไดเรกทอรีใหม่

    ในกรณีที่มีข้อผิดพลาดคุณสามารถกลับสู่สถานะก่อนหน้าได้โดยเปลี่ยนชื่อลิงค์สัญลักษณ์/etc/rcS.dและรีบูต:

     # mv /etc/rcS.d/S36bind.sh /etc/rcS.d/K36bind.sh
    

การเห็น "Xstart" ในโซลูชันที่คุณเสนอทำให้ฉันคิดว่านี่ไม่ใช่สิ่งที่คุณทำบนอุปกรณ์ Ubuntu Touch ใช่ไหม
Kris Jace

4

วิธีนี้ใช้ได้ผลสำหรับฉัน:

https://github.com/plasma-mobile/plasma-phone-dev-setup/blob/master/usr/bin/resize-root-partition

โดยพื้นฐานแล้วมันเป็นสคริปต์การติดตั้งง่ายสุดของ KDE Plasma Mobile เพียงแค่เรียกใช้งีบและคุณควรมีพาร์ทิชันรูทขนาด 6 GB


นี่คือลิงก์ถาวรเนื่องจากลิงก์ไปยังทรัพยากรดั้งเดิมใช้งานไม่ได้: github.com/KDE/plasma-phone-dev-setup/commit/…
Aᴄʜᴇʀᴏɴғᴀɪʟ

2

นี่เป็นวิธีที่เร็วที่สุดที่ฉันคิดได้

คำเตือน : สิ่งนี้อาจทำให้โทรศัพท์ของคุณเสียหายหากพิมพ์ไม่ถูกต้อง ให้แน่ใจว่าคุณมีการสำรองข้อมูลเต็มรูปแบบก่อนที่จะเริ่มต้นและยินดีที่จะทำผิดพลาดในกรณีที่คุณสูญเสียข้อมูลทั้งหมดในโทรศัพท์ของคุณ คำสั่งตัวอย่างนี้ปรับขนาดระบบไฟล์รูทเป็น 6GB ดังนั้นหากมันมีขนาดใหญ่กว่านั้นจะถูกตัดทอนและโทรศัพท์ของคุณอาจจะไม่สามารถบูตได้ (จนกว่าจะทำการถ่ายภาพซ้ำ) ใช้คำสั่งนี้เฉพาะเมื่ออิมเมจระบบไฟล์รูทของคุณน้อยกว่า 6GB (ค่าเริ่มต้นของ Ubuntu Touch คือ 2GB)

$ sudo -s
# dd if=/dev/null of=/userdata/ubuntu.img bs=1M seek=6000 count=0
# resize2fs -f /userdata/ubuntu.img
# reboot

คุณช่วยอธิบายให้ฉันดีขึ้นได้ไหม
Alko

@Alko นี่คือคำตอบที่สมบูรณ์ยิ่งขึ้นซึ่งมีข้อมูลสำหรับ Touch ด้วย
Scrooge McDuck

0

ตกลงนี่คือวิธีที่ฉันทำกับ meizu pro5 ของฉัน ไมล์สะสมของคุณอาจหลากหลาย

O และคุณอาจอิฐโทรศัพท์ของคุณ

ใช้คู่มือนี้เป็นแนวทางในการติดตามเส้นทางของคุณ อย่ากลับมาร้องไห้

มีโทรศัพท์ใหม่ทำโดย ubuntu-device-flash ในโทรศัพท์คุณควรมีการ์ด SD ใหญ่พอที่จะเก็บ fs จากพาร์ติชัน userdata บวก 512M บวก 700M สำหรับพาร์ติชันแบบกำหนดเองและแคช

  • ใส่ twrp3.0 เป็นอิมเมจการกู้คืน
  • ใช้ fdisk -l / dev / block / sda เพื่อดูพาร์ติชัน
  • บันทึกรายงานนั้น คุณควรมี 4 พาร์ติชันล่าสุดเป็นระบบกำหนดเองแคชและข้อมูลผู้ใช้
  • mkdir / tmp / userdata
  • mount / dev / block / sda44 (สำหรับฉันมันคือ 44) / tmp / userdata
  • cd / tmp
  • tar -czf /external_sd/userdata.tar.gz userdata
  • umount / tmp / userdata
  • dd if = / dev / block / sda43 จาก = / externa_sd / cache.img
  • dd if = / dev / block / sda42 จาก = / externa_sd / custom.img

ตอนนี้คุณได้บันทึกข้อมูลตอนนี้เพื่อทำซ้ำพาร์ทิชันที่เราจะใช้ fdisk จากอูบุนตูตั้งแต่ fdisk จาก twrp ไม่ดีพอ

  • mkdir / tmp / ubuntu
  • mount -o loop /system/var/lib/lxc-andoid/system.img / tmp / ubuntu
  • mknod -m 666 b 8 0 / tmp / ubuntu / dev / sda
  • chroot / tmp / ubuntu / sbin / fdisk / dev / sda

คุณลบพาร์ติชั่น 41,42,43,44 และสร้าง:

  • ใหม่ 41 เริ่มต้นจากที่เดียวกัน แต่ใหญ่กว่า
  • ใหม่ 42 เริ่มต้นหลังจาก 41 ที่มีขนาดเดียวกับ 42 เก่า
  • ใหม่ 43 เริ่มต้นหลังจาก 42 ด้วยขนาดเดียวกับ 43 เก่า
  • ใหม่ 44 เริ่มต้นหลังจาก 43 และสิ้นสุดในเซกเตอร์เดียวกับ 44 เก่า
  • บันทึกตารางพาร์ติชันใหม่
  • umount / tmp / ubuntu

นำข้อมูลผู้ใช้กำหนดเองและแคชกลับมา

  • dd if = / externa_sd / cache.img ของ = / dev / block / sda43
  • dd if = / externa_sd / custom.img ของ = / dev / block / sda42
  • สร้าง ext4 ใหม่บน 44: mke2fs / dev / block / sda44
  • mount / dev / block / sda44 / tmp / userdata
  • cd / tmp
  • tar -xzf /external_sd/userdata.tar.gz
  • umount / tmp / userdata
  • umount / tmp / ubuntu
  • umount / ระบบ
  • เพิ่มตอนนี้พาร์ติชันระบบ: resize2fs / dev / block / sda41

ตอนนี้คุณควรมีรูทพาร์ติชันที่ใหญ่กว่าในระบบ ubuntu-touch ของคุณ

มีความสุข.


0

หลังจากเล่นเพิ่มเติมที่นี่เป็นสิ่งที่คุณต้องรู้และทำ

Ubuntu touch กำลังทำการบูทจากอุปกรณ์ android ดังนั้นพาร์ติชั่นต้องได้รับการพิสูจน์

ระบบ android กำลังระบุพาร์ติชั่นด้วยฉลากพาร์ติชั่น

คุณมี meizu pro 5 พาร์ติชั่นนี้: ระบบ (พาร์ติชั่นรูท), แคช (ใช้สำหรับอัปเกรดโดย Ubuntu, คุณควรมีประมาณ 1G อยู่), กำหนดเอง (ไม่รู้จะใช้อะไร), userdata (ใช้สำหรับบ้าน / และ โฟลเดอร์อื่น ๆ จำนวนมากที่ถูกเมาท์ด้วยการผูกกับส่วนต่าง ๆ ของรูท)

phablet@ubuntu-phablet:~$ sudo fdisk /dev/sda

Welcome to fdisk (util-linux 2.25.2).

Changes will remain in memory only, until you decide to write them.

Be careful before using the write command.


Command (m for help): x

Expert command (m for help): p
Disk /dev/sda: 58.2 GiB, 62537072640 bytes, 15267840 sectors
Units: sectors of 1 * 4096 = 4096 bytes
Sector size (logical/physical): 4096 bytes / 16384 bytes
I/O size (minimum/optimal): 16384 bytes / 8192 bytes
Disklabel type: gpt
Disk identifier: 00042021-0408-4601-9DCC-xxxxxxxxxxx
First LBA: 6
Last LBA: 15267834
Alternative LBA: 15267839
Partitions entries LBA: 2
Allocated partition entries: 128

Device       Start      End Sectors Type-UUID                            UUID                                 Name      Attrs
/dev/sda1     1024     1279     256 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx D117F98E-6F2C-D04B-A5B2-xxxxxxxxxxxx private   
/dev/sda2     1280     1343      64 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx 25718777-D0AD-7443-9E60-xxxxxxxxxxxx proinfo   
/dev/sda3     1344     1407      64 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx 8A4BB8B4-E304-AE48-8536-xxxxxxxxxxxx misc      
/dev/sda21    2048     3071    1024 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx 08992135-13C6-084B-9322-xxxxxxxxxxxx param     
/dev/sda22    3072     5119    2048 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx 333A128E-D3E3-B94D-92F4-xxxxxxxxxxxx efs       
/dev/sda23    5120     5631     512 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx F20AA902-1C5D-294A-9177-xxxxxxxxxxxx pnv       
/dev/sda24    5632     6655    1024 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx DB88503D-34A5-3E41-836D-xxxxxxxxxxxx ldfw      
/dev/sda25    6656     7679    1024 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx 012B3303-34AC-284D-99B4-xxxxxxxxxxxx dtb       
/dev/sda26    7680    13823    6144 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx FAEC2ECF-8544-E241-B19D-xxxxxxxxxxxx bootimg   
/dev/sda27   13824    22015    8192 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx F13A0978-B1B5-1A4E-8821-xxxxxxxxxxxx recovery  
/dev/sda28   22016    30207    8192 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx B710EB04-45B9-E94A-8D0B-xxxxxxxxxxxx bootlogo  
/dev/sda29   30208    35327    5120 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx AD5EC4B6-2D9F-8544-9417-xxxxxxxxxxxx rstinfo   
/dev/sda30   35328    40447    5120 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx CCEB0B18-39CB-D547-9DB7-xxxxxxxxxxxx mnv       
/dev/sda31   40448    45567    5120 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx D4981A2B-0478-544E-9607-xxxxxxxxxxxx reserved1 
/dev/sda32   45568    50687    5120 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx 6D6C9A36-E919-264D-A9EE-xxxxxxxxxxxx reserved2 
/dev/sda33   50688    55807    5120 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx 60B98C0E-BEAD-B043-9CC6-xxxxxxxxxxxx reserved3 
/dev/sda41   65536  7929855 7864320 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx F2ECCD60-9303-46B1-B193-xxxxxxxxxxxx system    
/dev/sda42 7929856  8060927  131072 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx DD8D25F3-92F2-4B24-9558-xxxxxxxxxxxx custom    
/dev/sda43 8060928  8323071  262144 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx 01573816-7EBF-4860-8AB7-xxxxxxxxxxxx cache     
/dev/sda44 8323072 15267834 6944763 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx E15F5427-031C-4BB0-89D5-xxxxxxxxxxxx userdata  


Expert command (m for help): 

เนื่องจากคุณมีการเชื่อมโยงกับรูทจำนวนมากคุณจึงต้องแก้ไขการกู้คืนฟอร์มพาร์ติชัน

ข้อผิดพลาดครั้งแรกอิมเมจการกู้คืนเริ่มต้นสำหรับ Ubuntu ไม่ได้เปิดใช้งาน adb ฉันใช้ TWRP 3.0

ข้อผิดพลาดประการที่สองยูทิลิตี TWRP fdisk ไม่ดีพอมันเป็นตัวแปร busybox และไม่มีคำสั่งการปรับเปลี่ยน ดังนั้นเพียงแค่ทำสำเนา (ด้วย dd จากอิมเมจระบบไปยังไฟล์เพื่อให้คุณสามารถเมานต์เป็นอุปกรณ์ลูป) ของพาร์ติชันระบบบนการ์ด SD ติดตั้งสร้างด้วย mknod / dev / sda ในเมานต์นี้และ chroot / sbin / fdisk

ตอนนี้คุณสามารถเล่นกับพาร์ทิชัน ระวังอย่าทำอะไรเลยนอกจากพาร์ติชั่นเป้าหมายทั้งสี่ อย่าลืมใส่ชื่อลงในฉลากของพาร์ติชั่น

พาร์ติชั่นทั้งสี่พาร์ติชั่นนั้นเป็น ext4 สร้างระบบไฟล์ขึ้นมาจากนั้นคุณควรจะเมานท์ได้จากเมนู TWRP หากคุณมีการขยายพาร์ติชันระบบเพียงอย่างเดียวคุณควรจะสามารถปรับขนาด fs ได้

คุณสามารถทำการแบ่งพาร์ติชั่นใหม่แล้วเพียงแค่ reflash ระบบ Ubuntu ด้วย ubuntu-device-flash

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.