Answers:
我遇到了类似的问题,最终我决定将其移动/usr
到/home/usr
(/home
从14G文件系统挂载,这为我提供了足够的空间来容纳其他软件包)。
这是一种有点骇人听闻的方法,但是似乎对我有用。下面的代码示例$
用于指示命令应以普通用户身份运行并#
指示root用户角色(可以通过sudo或loggig作为root用户获得)。
为root用户设置密码,您将需要具有以root用户身份登录的功能,以防万一/usr/bin/sudo
。为此:
$ sudo su
# passwd
复制/usr
保留所有权和权限的内容:
$ cd /usr
$ sudo find . -depth -print0 | sudo cpio --null --sparse -pvd /home/usr/
下一个逻辑步骤是使用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.d
为bind.sh
:
# ln -s /etc/init.d/bind.sh /etc/rcS.d/S36bind.sh
注意:根据您的状态,您可能需要选择不同于36的数字/etc/rcS.d
。
或者,您可以/lib/init/fstab
按此处所述进行编辑,以在fstab中进行永久更改。
重启后,系统现在应该可以正常使用了/home/usr
,/usr
因此希望您有更多空间可以容纳其他软件包。请注意,/usr
只要安装了新目录,旧文件仍然存在,但无法访问。
万一出了问题,您可以通过重命名符号链接/etc/rcS.d
并重新启动来返回以前的状态:
# mv /etc/rcS.d/S36bind.sh /etc/rcS.d/K36bind.sh
此解决方案为我工作:
https://github.com/plasma-mobile/plasma-phone-dev-setup/blob/master/usr/bin/resize-root-partition
基本上,这是KDE Plasma Mobile的超简单安装脚本。只需运行它,小睡一下,您就应该有一个6 GB的根分区。
这是我想出的最快方法。
警告:如果输入不正确,这可能会损坏您的手机。开始之前,请确保您具有完整的备份,并愿意为避免丢失手机上的所有数据而犯错。此示例命令将根文件系统的大小调整为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
好的,这是我在魅族pro5上做到的方式。您的里程可能会变化。
哦,您可能会弄碎手机。
将此指南作为您遵循之路的提示。不要再哭了。
请使用ubuntu-device-flash制作的新手机。在电话中,您应该有足够大的SD卡来容纳userdata分区中的fs,再加上512M和700M的自定义和缓存分区。
您现在已经保存了数据,现在要重做分区,我们将使用ubuntu的fdisk,因为twrp的fdisk不够好。
您删除41,42,43,44分区并创建:
放回用户数据,自定义和缓存。
您应该现在在你的Ubuntu触控系统更大的根分区。
玩得开心。
经过一番游戏之后,您需要了解和做的事情。
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系统。