Finally managed to boot from PCIE M2 SATA(not NVME) without SDcard on orangepi images:
1. Boot from sdcard
2. sudo dd if=/usr/share/orangepi5/rkspi_loader_sata.img of=/dev/mtdblock0 && sudo sync
3. Add
overlays=ssd-sata
to file /boot/orangepiEnv.txt
4. Reboot
5. Now your disk should be detected as sda(not nvme0n1) in fdisk -l, lsblk, etc
6. Copy orangepi image that you used on sdcard to sbc via rsync/scp
7. sudo dd bs=1M if=/path/your/orangepi_linux5.10.110.img of=/dev/sda status=progress && sudo sync
8. Mount /boot/ from new disk:
sudo mount /dev/sda1 /mnt/
9. Add
overlays=ssd-sata
to file /mnt/orangepiEnv.txt
10. sudo umount /mnt/ && sudo sync
11. poweroff
12. remove SDcard and start SBC
Now you should boot from your PCIE M2 SATA disk:
orangepi@orangepi5:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 476.9G 0 disk
├─sda1 8:1 0 256M 0 part /boot
└─sda2 8:2 0 471.9G 0 part /var/log.hdd
/
mtdblock0 31:0 0 16M 0 disk
zram0 254:0 0 3.8G 0 disk [SWAP]
zram1 254:1 0 200M 0 disk /var/log
orangepi@orangepi5:~$ fdisk -l
Disk /dev/ram0: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/zram0: 3.75 GiB, 4031504384 bytes, 984254 sectors
Units: sectors of 1 * 4096 = 4096 bytes
Sector size (logical/physical): 4096 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/mtdblock0: 16 MiB, 16777216 bytes, 32768 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: C07C704A-CF6D-4888-9D60-DC9506262463
Device Start End Sectors Size Type
/dev/mtdblock0p1 64 7167 7104 3.5M Linux filesystem
/dev/mtdblock0p2 7168 7679 512 256K Linux filesystem
/dev/mtdblock0p3 7680 8063 384 192K Linux filesystem
/dev/mtdblock0p4 8064 8127 64 32K Linux filesystem
/dev/mtdblock0p5 8128 8191 64 32K Linux filesystem
/dev/mtdblock0p6 8192 16383 8192 4M Linux filesystem
/dev/mtdblock0p7 16384 32734 16351 8M Linux filesystem
Disk /dev/sda: 476.94 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: TS512GMTS430S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 58FCCC02-859A-5041-ADA7-14802AADF341
Device Start End Sectors Size Type
/dev/sda1 61440 585727 524288 256M Linux extended boot
/dev/sda2 585728 990183423 989597696 471.9G Linux filesystem
Disk /dev/zram1: 200 MiB, 209715200 bytes, 51200 sectors
Units: sectors of 1 * 4096 = 4096 bytes
Sector size (logical/physical): 4096 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
orangepi@orangepi5:~$ sudo smartctl -a /dev/sda
smartctl 7.2 2020-12-30 r5155 [aarch64-linux-5.10.110-rockchip-rk3588] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Family: Silicon Motion based SSDs
Device Model: TS512GMTS430S
Serial Number: G769530482
LU WWN Device Id: 5 7c3548 1cf19a072
Firmware Version: R0427GN1
User Capacity: 512,110,190,592 bytes [512 GB]
Sector Size: 512 bytes logical/physical
Rotation Rate: Solid State Device
Form Factor: M.2
TRIM Command: Available, deterministic, zeroed
Device is: In smartctl database [for details use: -P show]
ATA Version is: ACS-3 T13/2161-D revision 5
SATA Version is: SATA 3.3, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is: Sun Jan 8 15:38:24 2023 CST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
General SMART Values:
Offline data collection status: (0x80) Offline data collection activity
was never started.
Auto Offline Data Collection: Enabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection: ( 0) seconds.
Offline data collection
capabilities: (0x7b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0002) Does not save SMART data before
entering power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
General Purpose Logging supported.
Short self-test routine
recommended polling time: ( 2) minutes.
Extended self-test routine
recommended polling time: ( 30) minutes.
Conveyance self-test routine
recommended polling time: ( 2) minutes.
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x0000 100 100 000 Old_age Offline - 0
5 Reallocated_Sector_Ct 0x0000 100 100 000 Old_age Offline - 0
9 Power_On_Hours 0x0000 100 100 000 Old_age Offline - 5
12 Power_Cycle_Count 0x0000 100 100 000 Old_age Offline - 26
148 Total_SLC_Erase_Ct 0x0000 100 100 000 Old_age Offline - 7
149 Max_SLC_Erase_Ct 0x0000 100 100 000 Old_age Offline - 1
150 Min_SLC_Erase_Ct 0x0000 100 100 000 Old_age Offline - 0
151 Average_SLC_Erase_Ct 0x0000 100 100 000 Old_age Offline - 0
159 DRAM_1_Bit_Error_Count 0x0000 100 100 000 Old_age Offline - 0
160 Uncorrectable_Error_Cnt 0x0000 100 100 000 Old_age Offline - 0
161 Valid_Spare_Block_Cnt 0x0000 100 100 000 Old_age Offline - 29
163 Initial_Bad_Block_Count 0x0000 100 100 000 Old_age Offline - 29
164 Total_Erase_Count 0x0000 100 100 000 Old_age Offline - 141
165 Max_Erase_Count 0x0000 100 100 000 Old_age Offline - 2
166 Min_Erase_Count 0x0000 100 100 000 Old_age Offline - 0
167 Average_Erase_Count 0x0000 100 100 000 Old_age Offline - 0
168 Max_Erase_Count_of_Spec 0x0000 100 100 000 Old_age Offline - 1000
169 Remaining_Lifetime_Perc 0x0000 100 100 000 Old_age Offline - 100
177 Wear_Leveling_Count 0x0000 100 100 050 Old_age Offline - 0
181 Program_Fail_Cnt_Total 0x0000 100 100 000 Old_age Offline - 0
182 Erase_Fail_Count_Total 0x0000 100 100 000 Old_age Offline - 0
192 Power-Off_Retract_Count 0x0000 100 100 000 Old_age Offline - 5
194 Temperature_Celsius 0x0000 100 100 000 Old_age Offline - 37
195 Hardware_ECC_Recovered 0x0000 100 100 000 Old_age Offline - 0
196 Reallocated_Event_Count 0x0000 100 100 016 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x0000 100 100 050 Old_age Offline - 0
232 Available_Reservd_Space 0x0000 100 100 000 Old_age Offline - 100
241 Host_Writes_32MiB 0x0000 100 100 000 Old_age Offline - 1378
242 Host_Reads_32MiB 0x0000 100 100 000 Old_age Offline - 197
245 TLC_Writes_32MiB 0x0000 100 100 000 Old_age Offline - 5076
SMART Error Log Version: 1
No Errors Logged
SMART Self-test log structure revision number 1
No self-tests have been logged. [To run self-tests, use: smartctl -t]
SMART Selective self-test log data structure revision number 1
SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
1 0 0 Not_testing
2 0 0 Not_testing
3 0 0 Not_testing
4 0 0 Not_testing
5 0 0 Completed [00% left] (0-65535)
Selective self-test flags (0x0):
After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
On armbian PCIE M2 SATA SSD doesn't work. @Efe Çetin can you please add this patch https://github.com/armbian/build/issues/4655 ?