我正在尝试让 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 获得)。
设置 root 用户的密码,你需要能够以 root 身份登录,以防万一你的系统出现问题
/usr/bin/sudo
。操作如下:$ sudo su # passwd
/usr
复制保留所有权和权限的内容:$ cd /usr $ sudo find . -depth -print0 | sudo cpio --null --sparse -pvd /home/usr/
下一个合乎逻辑的步骤是使用在启动时
fstab
挂载,但是我尝试进行的所有更改在重新启动 Ubuntu 后都消失了。因此,我创建了简单的脚本来进行挂载,并将其保存为:/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 中保留持久更改。重启后系统应该可以使用
/home/usr
as/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 系统。