UBports Robot Logo UBports Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Register
    • Login

    Porting to Motorola Moto G (2013) LTE

    Scheduled Pinned Locked Moved Porting
    12 Posts 5 Posters 3.0k Views 2 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
      Reply
      • Reply as topic
      Log in to reply
      This topic has been deleted. Only users with topic management privileges can see it.
      • L Offline
        lagertonne
        last edited by

        Hi,

        I try to port ubport to my Motorola Moto G LTE (peregrine). I managed to get everything working with the cm12.1 sources. But after executing the make command, I get the following error:

        make_ext4fs -T -1 -S out/target/product/peregrine/root/file_contexts -l 79560704 -a system -L SYSTEM out/target/product/peregrine/obj/PACKAGING/systemimage_intermediates/system.img out/target/product/peregrine/system
        Creating filesystem with parameters:
            Size: 79560704
            Block size: 4096
            Blocks per group: 32768
            Inodes per group: 4864
            Inode size: 256
            Journal blocks: 1024
            Label: SYSTEM
            Transparent compression: none
            Blocks: 19424
            Block groups: 1
            Reserved block group size: 7
        error: ext4_allocate_best_fit_partial: failed to allocate 2511 blocks, out of space?
        error: failed to build out/target/product/peregrine/obj/PACKAGING/systemimage_intermediates/system.img from out/target/product/peregrine/system
        Out of space? the tree size of out/target/product/peregrine/system is (MB): 
        66      out/target/product/peregrine/system
        The max is 1104 MB.
        build/core/Makefile:1188: recipe for target 'out/target/product/peregrine/obj/PACKAGING/systemimage_intermediates/system.img' failed
        

        I read somewhere that it could be the size of the system.img partition, but I think it wouldn't be a good idea to change this. The remaining hard-drive space also couldn't be an issue. Does anyone experienced the same or knows a solution?

        Regards,
        lagertonne

        E D 3 Replies Last reply Reply Quote 0
        • E Offline
          ernest @lagertonne
          last edited by

          @lagertonne
          Hello you can look at the Halium wiki and the telegram group to get further help.

          1 Reply Last reply Reply Quote 0
          • D Offline
            doniks @lagertonne
            last edited by

            @lagertonne Are you sure you are not simply running out of disk space in the machine you are building on!? Check df -h.

            1 Reply Last reply Reply Quote 0
            • D Offline
              demokrit
              last edited by

              @lagertonne, on the web i found this issue which seems to be exactly what you are facing but on a different device.

              There they say that your system.img size is in conflict with the property "based on BOARD_SYSTEMIMAGE_PARTITION_SIZE in device/manufacturer/product/BoardConfig.mk"(Don't know if this helps, and unfortunately the given solution [which would be using smaller gapps] in the link will not help here but perhaps finding out what's the problem is a first step?!).

              A quick comparison of the values for peregrine (lineageos sources) with different ubports devices shows that there are devices with smaller values stored inside BoardConfig.mk and i don't know how good it will work if you just change this property (the bootloader of the phone probably will make problems) but just for building you might try to double the stored BOARD_SYSTEMIMAGE_PARTITION_SIZE and see if it builds?

              1 Reply Last reply Reply Quote 0
              • L Offline
                lagertonne
                last edited by

                @doniks df says that it has enough space (2TB). But I'm building inside a lxc-container so I'll establish another build environment later without a container and check if this can be the issue.

                @demokrit I tried increasing the SYSTEMIMAGE_PARTITION_SIZE, but it didn't made any difference. My Partition (1157627904) is even bigger than the one from the Nexus 5 (1073741824).

                D 1 Reply Last reply Reply Quote 0
                • D Offline
                  doniks @lagertonne
                  last edited by doniks

                  @lagertonne said in Porting to Motorola Moto G (2013) LTE:

                  @doniks df says that it has enough space (2TB). But I'm building inside a lxc-container so I'll establish another build environment later without a container and check if this can be the issue.

                  Well, after reading @demokrit 's answer, I find that theory a lot more convincing than the df one 🙂 But yeah, the df should be done INSIDE the lxc container

                  @demokrit I tried increasing the SYSTEMIMAGE_PARTITION_SIZE, but it didn't made any difference. My Partition (1157627904) is even bigger than the one from the Nexus 5 (1073741824).

                  I have deleted my obj/PACKAGING/systemimage_intermediates/system.img and have it recreated with make systemimage. For me it ends with

                  [ 99% 242/243] Target system fs image: /media/peter/share2/data/halium/out/target/product/deb/obj/PACKAGING/systemimage_intermediates/system.img
                  BuildImage: in_dir = /media/peter/share2/data/halium/out/target/product/deb/system, out_file = /media/peter/share2/data/halium/out/target/product/deb/obj/PACKAGING/systemimage_intermediates/system.img
                  fs type is not ext4
                  Running:  mkuserimg.sh -s /media/peter/share2/data/halium/out/target/product/deb/system /media/peter/share2/data/halium/out/target/product/deb/obj/PACKAGING/systemimage_intermediates/system.img ext4 system 880803840 -j 0 -D /media/peter/share2/data/halium/out/target/product/deb/system -L system /media/peter/share2/data/halium/out/target/product/deb/root/file_contexts.bin
                  make_ext4fs -s -T -1 -S /media/peter/share2/data/halium/out/target/product/deb/root/file_contexts.bin -L system -l 880803840 -J -a system /media/peter/share2/data/halium/out/target/product/deb/obj/PACKAGING/systemimage_intermediates/system.img /media/peter/share2/data/halium/out/target/product/deb/system /media/peter/share2/data/halium/out/target/product/deb/system
                  Creating filesystem with parameters:
                      Size: 880803840
                      Block size: 4096
                      Blocks per group: 32768
                      Inodes per group: 7680
                      Inode size: 256
                      Journal blocks: 0
                      Label: system
                      Blocks: 215040
                      Block groups: 7
                      Reserved block group size: 55
                  Created filesystem with 1098/53760 inodes and 37403/215040 blocks
                  Running ['mkuserimg.sh', '-s', '/media/peter/share2/data/halium/out/target/product/deb/system', '/media/peter/share2/data/halium/out/target/product/deb/obj/PACKAGING/systemimage_intermediates/system.img', 'ext4', 'system', '880803840', '-j', '0', '-D', '/media/peter/share2/data/halium/out/target/product/deb/system', '-L', 'system', '/media/peter/share2/data/halium/out/target/product/deb/root/file_contexts.bin'] command, exit code = 0
                  [100% 243/243] Install system fs image: /media/peter/share2/data/halium/out/target/product/deb/system.img
                  /media/peter/share2/data/halium/out/target/product/deb/system.img+/media/peter/share2/data/halium/out/target/product/deb/obj/PACKAGING/recovery_patch_intermediates/recovery_from_boot.p maxsize=899137536 blocksize=135168 total=143520351 reserve=9191424
                  
                  #### make completed successfully (56 seconds) ####
                  

                  and that number 880803840 is what I find in my board config

                  grep -r 880803840 
                  [...]
                  device/asus/flo/BoardConfigCommon.mk:BOARD_SYSTEMIMAGE_PARTITION_SIZE := 880803840 # 840M
                  [...]
                  out/target/product/deb/obj/PACKAGING/systemimage_intermediates/system_image_info.txt:system_size=880803840 
                  

                  For you, it seems that the number passed to make_ext4fs is 880803840, which is NOT the number you say you have in your board config. Maybe that helps? Otherwise I'd suggest you post exactly the commands and file changes you perform from repo init to make.

                  1 Reply Last reply Reply Quote 0
                  • L Offline
                    lagertonne
                    last edited by

                    I tried to build the same thing from a chroot environment, but still the same error. I even copied a few hundred gigabytes to the folder, so disk space can't be the issue.

                    Setting the BOARD_SYSTEMIMAGE_PARTITION_SIZE higher and higher did not worked, I even tried setting it to 8808038400, which means 8400MB as System-image-partition-size, but same error.

                    Here the steps I took until I could build:

                    • Initializing repo with repo init -u https://github.com/ubports/android -b ubp-5.1
                    • repo sync
                    • . build/envsetup.sh
                    • Adding a motorola_peregrine.xml file in local_manifests with the following content
                    <?xml version="1.0" encoding="UTF-8"?>
                    <manifest>
                            <project name="android_device_motorola_peregrine" path="device/motorola/peregrine" remote="cm" revision="cm-12.1" />
                            <project name="android_device_motorola_msm8226-common" path="device/motorola/msm8226-common" remote="cm" revision="cm-12.1" />
                            <project name="android_kernel_motorola_msm8226" path="kernel/motorola/msm8226" remote="cm" revision="cm-12.1"/>
                            <project name="android_device_qcom_common" path="device/qcom/common" remote="cm" revision="cm-12.1"/>
                    
                            <project name="proprietary_vendor_motorola" path="vendor/motorola" remote="them" revision="cm-12.1" />
                    </manifest>
                    
                    • repo sync
                    • Adding a missing vendorsetup.sh with the following content to use lunch:
                    add_lunch_combo cm_peregrine-userdebug
                    
                    • lunch cm_peregrine-userdebug
                    • make -j9
                      At that point I'm getting the same error as above. If I change the BOARD_SYSTEMIMAGE_PARTITION_SIZE the only line that changes is the The max is xxxx MB. line.

                    So basically, everything as it is written in the Porting Guide.
                    Many thanks for your help 🙂

                    H 1 Reply Last reply Reply Quote 0
                    • H Offline
                      hans1977se @lagertonne
                      last edited by

                      @lagertonne Have you tried to set GAPPS_VARIANT to mini?

                      1 Reply Last reply Reply Quote 0
                      • D Offline
                        doniks @lagertonne
                        last edited by

                        @lagertonne said in Porting to Motorola Moto G (2013) LTE:
                        Weird. Maybe you can trick it by running the make_ext4fs manually with the right number 1157627904

                        make_ext4fs -T -1 -S out/target/product/peregrine/root/file_contexts -l 1157627904 -a system -L SYSTEM out/target/product/peregrine/obj/PACKAGING/systemimage_intermediates/system.img out/target/product/peregrine/system
                        

                        and then make systemimage ?! I kinda doubt it, but worth a try. Or hack/disect the makefile that is issuing that make_ext4fs command.

                        1 Reply Last reply Reply Quote 1
                        • L Offline
                          lagertonne
                          last edited by

                          Ok, some progress:
                          @doniks is right, the wrong command is executed, I somehow missed this. Issuing the command manually works. make systemimage executes also the wrong command.

                          I'll try to find the point where make_ext4fs is executed, and from where the "-l" value is taken, and maybe I can fix this for my environment. Any clue where to look in all the Makefiles would be highly appreciated 🙂

                          Many thanks for your help so far!

                          D 1 Reply Last reply Reply Quote 0
                          • D Offline
                            doniks @lagertonne
                            last edited by

                            @lagertonne said in Porting to Motorola Moto G (2013) LTE:

                            I'll try to find the point where make_ext4fs is executed, and from where the "-l" value is taken, and maybe I can fix this for my environment. Any clue where to look in all the Makefiles would be highly appreciated 🙂

                            not sure. Maybe those guys are a good starting point:

                            grep -r --exclude-dir=out MAKE_EXT4FS *
                            build/core/generate_extra_images.mk:$(INSTALLED_PERSISTIMAGE_TARGET): $(MKEXTUSERIMG) $(MAKE_EXT4FS) $(INTERNAL_PERSISTIMAGE_FILES)
                            build/core/config.mk:MAKE_EXT4FS := $(HOST_OUT_EXECUTABLES)/make_ext4fs$(HOST_EXECUTABLE_SUFFIX)
                            build/core/Makefile:INTERNAL_USERIMAGES_DEPS += $(MKEXTUSERIMG) $(MAKE_EXT4FS) $(E2FSCK)
                            [...]
                            /mkuserimg.sh:MAKE_EXT4FS_CMD="make_ext4fs $ENABLE_SPARSE_IMAGE -T $TIMESTAMP $OPT -l $SIZE $JOURNAL_FLAGS -a $MOUNT_POINT $OUTPUT_FILE $SRC_DIR $PRODUCT_OUT"
                            system/extras/ext4_utils/mkuserimg.sh:echo $MAKE_EXT4FS_CMD
                            system/extras/ext4_utils/mkuserimg.sh:$MAKE_EXT4FS_CMD
                            

                            Hth

                            1 Reply Last reply Reply Quote 0
                            • L Offline
                              lagertonne
                              last edited by

                              I didn't had that much time the last week, but I think I solved this issue. It has to be something with ZFS as underlying file system. After putting the source on an ext4 the make_ext4fs command succeeded, so I think this issue is solved for now. Thank you all 🙂

                              1 Reply Last reply Reply Quote 1
                              • First post
                                Last post