如何在 Touch 上获取更大的根分区

如何在 Touch 上获取更大的根分区

我正在尝试让 Touch (14.10) 用作 Ubuntu 服务器。但是根分区只有 2 GB,不足以安装我需要的软件包。有没有办法在根分区上获得更多空间?

到目前为止我已经尝试过:

  • /dev/loop0 上的 resize2fs 不起作用,因为内核不支持在线调整大小,而且我无法卸载根目录(ro 无法切断它,即使使用 -f)。

  • 在 /userdata/ubuntu.img 末尾添加 2 GB 是可行的,但是对文件执行 resize2fs 命令却没有帮助。

答案1

这个解决方案对我有用:

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

基本上,它是 KDE Plasma Mobile 的超级简单安装脚本。只需运行它,小睡一会儿,您就会拥有一个 6 GB 的根分区。

答案2

这是我想到的最快方法。

警告:如果输入错误,这可能会损坏您的手机。开始之前,请确保您已进行完整备份,并且愿意犯错,以防丢失手机上的所有数据。此示例命令将根文件系统的大小调整为 6GB,因此如果它已经大于 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

答案3

我遇到了类似的问题,最终我决定将我的移动/usr/home/usr/home从 14G 文件系统安装,这为我提供了足够的空间来容纳其他软件包)。

这是一种有点黑客式的做法,但对我来说似乎很管用。以下代码示例用于$指示该命令应以普通用户身份运行,并#指示 root 用户角色(可以通过 sudo 或以 root 身份 loggig 获得)。

  1. 设置 root 用户的密码,你需要能够以 root 身份登录,以防万一你的系统出现问题/usr/bin/sudo。操作如下:

    $ sudo su
    # passwd
    
  2. /usr复制保留所有权和权限的内容:

    $ cd /usr
    $ sudo find . -depth -print0 | sudo cpio --null --sparse -pvd /home/usr/
    
  3. 下一个合乎逻辑的步骤是使用在启动时fstab挂载,但是我尝试进行的所有更改在重新启动 Ubuntu 后都消失了。因此,我创建了简单的脚本来进行挂载,并将其保存为:/home/usr/usrfstab/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/usrsuid 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/usras /usr,所以希望您有更多空间来安装其他软件包。请注意,/usr只要安装了新目录,旧目录仍然存在但无法访问。

    如果出现任何问题,您可以通过重命名符号链接/etc/rcS.d并重新启动来返回到以前的状态:

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

答案4

玩一会儿之后,您将了解并完成以下操作。

Ubuntu touch 从 Android 设备启动,因此分区必须合适。

Android 系统通过以下方式识别分区分区标卷

对于魅族 pro 5,您有以下分区:系统(根分区)、缓存(用于 Ubuntu 升级,您应该有大约 1G 的空间)、自定义(不知道是做什么用的)、用户数据(用于 /home 和许多其他文件夹,这些文件夹与根的不同部分绑定在一起)

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 的大小。

您可以重新进行分区,然后使用 ubuntu-device-flash 重新刷新 Ubuntu 系统。

相关内容