[Samsung Galaxy S9  Questions & Answers] DuduFaruk:
Hi all!

I cant open thread in other channel so i post here. sorry about it.

I've compiled a custom kernel for Samsung S9, but the kernel is bigger than the BOOT partition size. I want to create a new partition (over USERDATA partition) and boot from the new one.

This is the initial GPT /dev/block/sda partition:

~ # sgdisk --print /dev/block/sda
Disk /dev/block/sda: 15616000 sectors, 59.6 GiB
Logical sector size: 4096 bytes
Disk identifier (GUID): 52444E41-494F-2044-4D4D-43204449534B
Partition table holds up to 128 entries
First usable sector is 6, last usable sector is 15615994
Partitions will be aligned on 2-sector boundaries
Total free space is 2677 sectors (10.5 MiB)

Number Start (sector) End (sector) Size Code Name
1 1024 2047 4.0 MiB 0700 BOTA0
2 2048 4095 8.0 MiB 0700 BOTA1
3 4096 9215 20.0 MiB 0700 EFS
4 9216 11263 8.0 MiB 0700 PARAM
5 11264 13311 8.0 MiB 0700 UP_PARAM
6 13312 13313 8.0 KiB 0700 KEYSTORAGE
7 13314 15361 8.0 MiB 0700 BOTA2
8 15362 17409 8.0 MiB 0700 DTB
9 17410 19457 8.0 MiB 0700 DTBO
10 19458 33537 55.0 MiB 0700 BOOT
11 33538 50175 65.0 MiB 0700 RECOVERY
12 50176 62975 50.0 MiB 0700 RADIO
13 62976 63231 1024.0 KiB 0700 NAD_REFER
14 63232 63359 512.0 KiB 0700 PERSISTENT
15 63360 63615 1024.0 KiB 0700 MISC
16 63616 64639 4.0 MiB 0700 STEADY
17 64640 68735 16.0 MiB 0700 DQMDBG
18 68736 1195135 4.3 GiB 0700 SYSTEM
19 1195136 1361535 650.0 MiB 0700 VENDOR
20 1361536 1526911 646.0 MiB 0700 ODM
21 1526912 1680511 600.0 MiB 0700 CACHE
22 1680512 1683071 10.0 MiB 0700 HIDDEN
23 1683072 1695871 50.0 MiB 0700 OMR
24 1695872 1697151 5.0 MiB 0700 CP_DEBUG
25 1697152 15614335 53.1 GiB 0700 USERDATA

I've tried to re-partition /dev/block/sda with sgdisk like this:

~ # sgdisk --delete 25 /dev/block/sda
~ # sgdisk --new 25:1697152:1716972 /dev/block/sda
~ # sgdisk --change-name 25:BOOT2 /dev/block/sda
~ # sgdisk --typecode 25:0700 /dev/block/sda
~ # sgdisk --new 26:1716973:15614335 /dev/block/sda
~ # sgdisk --change-name 26:USERDATA /dev/block/sda
~ # sgdisk --typecode 26:0700 /dev/block/sda
~ # sgdisk --print /dev/block/sda
Disk /dev/block/sda: 15616000 sectors, 59.6 GiB
Logical sector size: 4096 bytes
Disk identifier (GUID): 52444E41-494F-2044-4D4D-43204449534B
Partition table holds up to 128 entries
First usable sector is 6, last usable sector is 15615994
Partitions will be aligned on 2-sector boundaries
Total free space is 2678 sectors (10.5 MiB)

Number Start (sector) End (sector) Size Code Name
1 1024 2047 4.0 MiB 0700 BOTA0
2 2048 4095 8.0 MiB 0700 BOTA1
3 4096 9215 20.0 MiB 0700 EFS
4 9216 11263 8.0 MiB 0700 PARAM
5 11264 13311 8.0 MiB 0700 UP_PARAM
6 13312 13313 8.0 KiB 0700 KEYSTORAGE
7 13314 15361 8.0 MiB 0700 BOTA2
8 15362 17409 8.0 MiB 0700 DTB
9 17410 19457 8.0 MiB 0700 DTBO
10 19458 33537 55.0 MiB 0700 BOOT
11 33538 50175 65.0 MiB 0700 RECOVERY
12 50176 62975 50.0 MiB 0700 RADIO
13 62976 63231 1024.0 KiB 0700 NAD_REFER
14 63232 63359 512.0 KiB 0700 PERSISTENT
15 63360 63615 1024.0 KiB 0700 MISC
16 63616 64639 4.0 MiB 0700 STEADY
17 64640 68735 16.0 MiB 0700 DQMDBG
18 68736 1195135 4.3 GiB 0700 SYSTEM
19 1195136 1361535 650.0 MiB 0700 VENDOR
20 1361536 1526911 646.0 MiB 0700 ODM
21 1526912 1680511 600.0 MiB 0700 CACHE
22 1680512 1683071 10.0 MiB 0700 HIDDEN
23 1683072 1695871 50.0 MiB 0700 OMR
24 1695872 1697151 5.0 MiB 0700 CP_DEBUG
25 1697152 1716972 77.4 MiB 0700 BOOT2
26 1716974 15614335 53.0 GiB 0700 USERDATA

~ # exit
~ adb reboot recovery
~ adb wait-for-any && adb shell
~ # ~ # ls /dev/block/platform/11120000.ufs/by-name/ -la
drwxr-xr-x 2 root root 580 Nov 19 15:32 .
drwxr-xr-x 4 root root 720 Nov 19 15:32 ..
lrwxrwxrwx 1 root root 16 Nov 19 15:32 BOOT -> /dev/block/sda10
lrwxrwxrwx 1 root root 16 Nov 19 15:32 BOOT2 -> /dev/block/sda25
lrwxrwxrwx 1 root root 15 Nov 19 15:32 BOTA0 -> /dev/block/sda1
lrwxrwxrwx 1 root root 15 Nov 19 15:32 BOTA1 -> /dev/block/sda2
lrwxrwxrwx 1 root root 15 Nov 19 15:32 BOTA2 -> /dev/block/sda7
lrwxrwxrwx 1 root root 16 Nov 19 15:32 CACHE -> /dev/block/sda21
lrwxrwxrwx 1 root root 15 Nov 19 15:32 CPEFS -> /dev/block/sdd1
lrwxrwxrwx 1 root root 16 Nov 19 15:32 CP_DEBUG -> /dev/block/sda24
lrwxrwxrwx 1 root root 16 Nov 19 15:32 DQMDBG -> /dev/block/sda17
lrwxrwxrwx 1 root root 15 Nov 19 15:32 DTB -> /dev/block/sda8
lrwxrwxrwx 1 root root 15 Nov 19 15:32 DTBO -> /dev/block/sda9
lrwxrwxrwx 1 root root 15 Nov 19 15:32 EFS -> /dev/block/sda3
lrwxrwxrwx 1 root root 16 Nov 19 15:32 HIDDEN -> /dev/block/sda22
lrwxrwxrwx 1 root root 15 Nov 19 15:32 KEYSTORAGE -> /dev/block/sda6
lrwxrwxrwx 1 root root 16 Nov 19 15:32 MISC -> /dev/block/sda15
lrwxrwxrwx 1 root root 16 Nov 19 15:32 NAD_REFER -> /dev/block/sda13
lrwxrwxrwx 1 root root 16 Nov 19 15:32 ODM -> /dev/block/sda20
lrwxrwxrwx 1 root root 16 Nov 19 15:32 OMR -> /dev/block/sda23
lrwxrwxrwx 1 root root 15 Nov 19 15:32 PARAM -> /dev/block/sda4
lrwxrwxrwx 1 root root 16 Nov 19 15:32 PERSISTENT -> /dev/block/sda14
lrwxrwxrwx 1 root root 16 Nov 19 15:32 RADIO -> /dev/block/sda12
lrwxrwxrwx 1 root root 16 Nov 19 15:32 RECOVERY -> /dev/block/sda11
lrwxrwxrwx 1 root root 16 Nov 19 15:32 STEADY -> /dev/block/sda16
lrwxrwxrwx 1 root root 16 Nov 19 15:32 SYSTEM -> /dev/block/sda18
lrwxrwxrwx 1 root root 15 Nov 19 15:32 UP_PARAM -> /dev/block/sda5
lrwxrwxrwx 1 root root 16 Nov 19 15:32 USERDATA -> /dev/block/sda26
lrwxrwxrwx 1 root root 16 Nov 19 15:32 VENDOR -> /dev/block/sda19

~ # dd if=newboot.img of=/dev/block/sda25

~ # sgdisk --info=10 /dev/block/sda
Partition GUID code: EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (Microsoft basic data)
Partition unique GUID: 52444E41-494F-2044-424F-4F5400000000
First sector: 19458 (at 76.0 MiB)
Last sector: 33537 (at 131.0 MiB)
Partition size: 14080 sectors (55.0 MiB)
Attribute flags: 0000000000000000
Partition name: 'BOOT'
~ # sgdisk --info=25 /dev/block/sda
Partition GUID code: EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (Microsoft basic data)
Partition unique GUID: 7CE83C10-10C6-4E3D-A6B4-92B66586A716
First sector: 1697152 (at 6.5 GiB)
Last sector: 1716972 (at 6.5 GiB)
Partition size: 19821 sectors (77.4 MiB)
Attribute flags: 0000000000000000
Partition name: 'BOOT2'
~ # sgdisk --partition-guid=10:R /dev/block/sda
~ # sgdisk --partition-guid=25:52444E41-494F-2044-424F-4F5400000000 /dev/block/sda
~ # sgdisk --info=10 /dev/block/sda
Partition GUID code: EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (Microsoft basic data)
Partition unique GUID: 6F5BCACB-2AF9-4F16-B2A3-B4B12085EB8F
First sector: 19458 (at 76.0 MiB)
Last sector: 33537 (at 131.0 MiB)
Partition size: 14080 sectors (55.0 MiB)
Attribute flags: 0000000000000000
Partition name: 'BOOT'
~ # sgdisk --info=25 /dev/block/sda
Partition GUID code: EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (Microsoft basic data)
Partition unique GUID: 52444E41-494F-2044-424F-4F5400000000
First sector: 1697152 (at 6.5 GiB)
Last sector: 1716972 (at 6.5 GiB)
Partition size: 19821 sectors (77.4 MiB)
Attribute flags: 0000000000000000
Partition name: 'BOOT2'
~ # sgdisk --change-name 10:BOOT1 /dev/block/sda
~ # sgdisk --change-name 25:BOOT /dev/block/sda
~ # sgdisk --print /dev/block/sda
Disk /dev/block/sda: 15616000 sectors, 59.6 GiB
Logical sector size: 4096 bytes
Disk identifier (GUID): 52444E41-494F-2044-4D4D-43204449534B
Partition table holds up to 128 entries
First usable sector is 6, last usable sector is 15615994
Partitions will be aligned on 2-sector boundaries
Total free space is 13900040 sectors (53.0 GiB)

Number Start (sector) End (sector) Size Code Name
1 1024 2047 4.0 MiB 0700 BOTA0
2 2048 4095 8.0 MiB 0700 BOTA1
3 4096 9215 20.0 MiB 0700 EFS
4 9216 11263 8.0 MiB 0700 PARAM
5 11264 13311 8.0 MiB 0700 UP_PARAM
6 13312 13313 8.0 KiB 0700 KEYSTORAGE
7 13314 15361 8.0 MiB 0700 BOTA2
8 15362 17409 8.0 MiB 0700 DTB
9 17410 19457 8.0 MiB 0700 DTBO
10 19458 33537 55.0 MiB 0700 BOOT1
11 33538 50175 65.0 MiB 0700 RECOVERY
12 50176 62975 50.0 MiB 0700 RADIO
13 62976 63231 1024.0 KiB 0700 NAD_REFER
14 63232 63359 512.0 KiB 0700 PERSISTENT
15 63360 63615 1024.0 KiB 0700 MISC
16 63616 64639 4.0 MiB 0700 STEADY
17 64640 68735 16.0 MiB 0700 DQMDBG
18 68736 1195135 4.3 GiB 0700 SYSTEM
19 1195136 1361535 650.0 MiB 0700 VENDOR
20 1361536 1526911 646.0 MiB 0700 ODM
21 1526912 1680511 600.0 MiB 0700 CACHE
22 1680512 1683071 10.0 MiB 0700 HIDDEN
23 1683072 1695871 50.0 MiB 0700 OMR
24 1695872 1697151 5.0 MiB 0700 CP_DEBUG
25 1697152 1716972 77.4 MiB 0700 BOOT

~ # exit
~ adb reboot

By this process I've written my custom boot image on the new BOOT partition, and replaced both the partition name and GUID with the original BOOT partition's.

After this, the phone still boots the real image (verified with /proc/version). What am I missing here?

I've also tried writing the original boot image to the new boot partition and zero out the original boot partition (sda10) to see what happens and the device didn't boot.