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


9

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

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

  • / dev / loop0上的resize2fs无法工作,因为内核不支持在线调整大小,并且我无法卸载root(即使使用-f,ro也无法将其切掉)。

  • 在/userdata/ubuntu.img的末尾添加2 GB可以,但是文件上的resize2fs没有帮助。


对于新用户来说,这是一个非常有趣的问题。欢迎来到社区。
Akiva 2014年

Answers:


1

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

这是一种有点骇人听闻的方法,但是似乎对我有用。下面的代码示例$用于指示命令应以普通用户身份运行并#指示root用户角色(可以通过sudo或loggig作为root用户获得)。

  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安装/home/usr作为/usr在启动,但所有的变化,我试图做的fstab是重新启动的Ubuntu后消失。因此,我创建了简单的脚本来进行安装,并将其保存为/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.dbind.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设备上执行的操作,是吗?
克里斯·杰斯


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 2015年

@Alko,这是更完整的答案,其中也包含有关Touch的信息。
Scrooge McDuck

0

好的,这是我在魅族pro5上做到的方式。您的里程可能会变化。

哦,您可能会弄碎手机。

将此指南作为您遵循之路的提示。不要再哭了。

请使用ubuntu-device-flash制作的新手机。在电话中,您应该有足够大的SD卡来容纳userdata分区中的fs,再加上512M和700M的自定义和缓存分区。

  • 将twrp3.0作为恢复映像。
  • 使用fdisk -l / dev / block / sda查看分区。
  • 保存该报告。您应该具有最后4个分区,分别是系统,自定义,缓存和用户数据。
  • mkdir / tmp /用户数据
  • 挂载/ dev / block / sda44(对我来说是44)/ tmp / userdata
  • cd / tmp
  • tar -czf /external_sd/userdata.tar.gz用户数据
  • 卸载/ tmp / userdata
  • dd if = / dev / block / sda43 of = / externa_sd / cache.img
  • dd if = / dev / block / sda42 of = / externa_sd / custom.img

您现在已经保存了数据,现在要重做分区,我们将使用ubuntu的fdisk,因为twrp的fdisk不够好。

  • mkdir / tmp / ubuntu
  • 挂载-o循环/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 of = / dev / block / sda43
  • dd if = / externa_sd / custom.img of = / dev / block / sda42
  • 在44上创建一个新的ext4:mke2fs / dev / block / sda44
  • 挂载/ dev / block / sda44 / tmp / userdata
  • cd / tmp
  • tar -xzf /external_sd/userdata.tar.gz
  • 卸载/ tmp / userdata
  • umount / tmp / ubuntu
  • 挂载/ system
  • 现在增加系统分区:resize2fs / dev / block / sda41

应该现在在你的Ubuntu触控系统更大的根分区。

玩得开心。


0

经过一番游戏之后,您需要了解和做的事情。

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

android系统通过分区标签识别分区

对于meizu 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变体,并且没有修改命令。因此,只需在SD卡上复制系统分区的副本(将dd从系统映像复制到文件,以便您可以将其作为循环设备挂载),然后挂载它,并在此挂载中使用mknod / dev / sda和chroot / sbin /创建磁盘

现在您可以玩分区了。请注意不要弄乱四个目标分区。不要忘记将名称放在分区的标签上。

所有这四个分区都是ext4组成的文件系统,然后您应该可以从TWRP菜单中挂载它们。如果您刚刚扩展了系统分区,则应该能够调整fs的大小。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.