Touch에서 더 큰 루트 파티션을 얻는 방법


9

Touch (14.10)를 Ubuntu 서버로 작동 시키려고합니다. 그러나 루트 파티션은 2GB에 불과하며 설치해야하는 패키지에는 충분하지 않습니다. 루트 파티션에 더 많은 공간을 확보 할 수있는 방법이 있습니까?

지금까지 나는 시도했다 :

  • 커널이 온라인 크기 조정을 지원하지 않고 루트를 마운트 해제 할 수 없기 때문에 / dev / loop0의 resize2fs가 작동하지 않습니다.

  • /userdata/ubuntu.img 끝에 2GB를 추가해도 작동하지만 파일의 resize2fs는 도움이되지 않습니다.


이것은 새로운 사용자에게는 매우 흥미로운 질문입니다. 커뮤니티에 오신 것을 환영합니다.
Akiva

답변:


1

나는 결국 내가이 이동하기로 결정, 비슷한 문제를 가지고 /usr하는 /home/usr( /home추가 패키지 나에게 충분한 공간을 제공 14G 파일 시스템에서 장착).

이것은 약간의 해킹 방법이지만, 그것은 나를 위해 작동하는 것 같습니다. 다음 코드 예제는 $명령이 일반 사용자로 실행되어야하고 #루트 사용자 역할 (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되지만 fstabUbuntu를 재부팅 한 후 변경하려는 모든 변경 사항 이 사라졌습니다. 그래서 마운트를 수행하는 간단한 스크립트를 만들고 다음과 같이 저장했습니다 /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의 매우 간단한 설치 스크립트입니다. 그냥 실행하고 낮잠을 자면 6GB 루트 파티션이 있어야합니다.


여기에 원래의 자원에 대한 링크가 파손되기 때문에 고유 주소는 다음과 같습니다 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로 만든 새로운 전화를 받으세요. 전화에는 사용자 데이터 파티션의 fs와 사용자 정의 및 캐시 파티션의 512M + 700M을 저장할 수있을 정도로 큰 SD 카드가 있어야합니다.

  • 복구 이미지로 twrp3.0을 넣으십시오.
  • fdisk -l / dev / block / sda를 사용하여 파티션을보십시오.
  • 해당 보고서를 저장하십시오. 시스템, 사용자 정의, 캐시 및 사용자 데이터로 마지막 4 개의 파티션이 있어야합니다.
  • mkdir / tmp / userdata
  • / dev / block / sda44를 마운트하십시오 (나에게는 44였습니다) / tmp / userdata
  • cd / tmp
  • tar -czf /external_sd/userdata.tar.gz userdata
  • umount / tmp / userdata
  • dd if = / dev / block / sda43 of = / externa_sd / cache.img
  • dd if = / dev / block / sda42 of = / externa_sd / custom.img

이제 데이터를 저장했습니다. 이제 twrp의 fdisk가 충분하지 않기 때문에 ubuntu의 fdisk를 사용할 파티션을 다시 실행할 수 있습니다.

  • mkdir / tmp / ubuntu
  • mount -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.
  • 43 이후에 시작하여 이전 44와 같은 섹터에서 끝나는 새로운 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
  • umount / tmp / userdata
  • umount / tmp / ubuntu
  • umount / 시스템
  • 이제 시스템 파티션을 늘리십시오. resize2fs / dev / block / sda41

이제 우분투 터치 시스템에 더 큰 루트 파티션이 있어야 합니다.

즐기세요


0

여기서 더 많은 놀이를 한 후에 당신이 알아야하고해야 할 일이 있습니다.

우분투 터치는 안드로이드 장치에서 부팅되므로 부분은 아프로 피해야합니다.

안드로이드 시스템은 파티션 레이블로 파티션을 식별하고 있습니다.

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 / fdisk

이제 파티션으로 재생할 수 있습니다. 네 개의 대상 파티션 외에는 엉망이되지 않도록주의하십시오. 파티션 레이블에 이름을 입력하는 것을 잊지 마십시오.

4 개의 파티션은 모두 ext4이며 파일 시스템을 만들고 TWRP 메뉴에서 마운트 할 수 있어야합니다. 시스템 파티션을 늘리면 fs 크기를 조정하여 벗어날 수 있습니다.

파티션을 다시 실행 한 다음 ubuntu-device-flash를 사용하여 Ubuntu 시스템을 다시 플래시 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.