Так как у меня не удалось загрузиться с M.2 предположу что система грузится либо с SD карты либо с внутренней eMMC. А значит нужно размещать загрузчик в любом из этих местах.
На выходе получим Rock PI N10 который грузится с eMMC и использует M.2 в качестве корня. Будет два раздела - раздел boot на eMMC, раздел rootfs на M.2.
Сперва добиваемся рабочего и настроенного состояния на SD карте.
https://wiki.radxa.com/RockpiN10/install/microSD
sudo apt update && sudo apt full-upgrade
sudo apt-get install -y wget
export DISTRO=buster-stable
wget -O - apt.radxa.com/$DISTRO/public.key | sudo apt-key add -
sudo apt-get update
Чтобы была поддержка русского в xfce и в терминале.
sudo dpkg-reconfigure locales
- Выбираем пробелом два языка:
en_US.utf8
иru_RU.utf8
- Затем Tab, на OK жмем Enter.
- На следующем шаге выбираем
ru_RU.utf8
жмем Tab затем Enter на OK.
Опционально устанавливаем комбинацию клавиш для смены раскладки в xfce. Диспетчер настроек, клавиатура, раскладка.
Нужно удалить все разделы если такие есть. Иначе не получится скопировать с SD.
sudo gdisk /dev/nvme0n1
Выводим разделы "p". Выбрав номер жмем "d". Затем сохраняем изменения с помощью "w".
Установленную систему копируем на чистый M.2
sudo su
cat /dev/mmcblk1 > /dev/nvme0n1
Нам нужно изменить UUID нашей SD-карты, чтобы система не пыталась загрузиться с этого раздела.
sudo tune2fs -O metadata_csum_seed -U random /dev/mmcblk1p2
Это сделает так, что смонтированная папка /boot в операционной системе будет на самом деле монтировать SD-карту.
sudo apt install mtools -y
sudo mlabel -N aaaa1111 -i /dev/nvme0n1p1 ::
Перед перезагрузкой запустим fsck на диске следующим образом:
sudo fsck -yf /dev/nvme0n1p2
Это избавит вас от необходимости запускать fsck в CLI при первой попытке загрузки.
sudo reboot
Если нам повезло мы загрузимся с SSD! Проверим что это действительно так:
mount
# /dev/nvme0n1p2 on / type ext4 (rw,relatime,data=ordered)
# /dev/mmcblk1p1 on /boot
У нас есть готовая рабочая система которая грузится с SD и использует M.2.
Избавимся от SD карты
sudo su
cat /dev/mmcblk1 > /dev/mmcblk2
У нас получилось так что все разделы имеют фактический размер SD карты. Их надо починить и расширить.
sudo gdisk /dev/nvme0n1
# GPT PMBR size mismatch (15122431 != 61071359) will be corrected by write.
# p для вывода текущей таблицы разделов, w для записи изменений на диск
sudo gdisk /dev/mmcblk2
Жмем q для выхода из gdisk.
Перечитаем таблицу разделов.
sudo partprobe
Далее я использовал gparted внутри xfce в графическом виде. Удалил ненужные разделы. Расширил место до фактических размеров.
sudo su
apt install gparted
gparted
sudo blkid
/dev/nvme0n1: PTUUID="d9d16008-583b-42c5-b4a7-a04b80daa70d" PTTYPE="gpt"
/dev/nvme0n1p2: LABEL="rootfs" UUID="7e0b85d1-2ade-4f19-8157-f69c6ba3dc56" TYPE="ext4" PARTLABEL="rootfs" PARTUUID="4e5a6237-c78d-4019-82ae-b7832c71bef9"
/dev/mmcblk2: PTUUID="d9d16008-583b-42c5-b4a7-a04b80daa70d" PTTYPE="gpt"
/dev/mmcblk2p1: LABEL_FATBOOT="boot" LABEL="boot" UUID="7301-EB9F" TYPE="vfat" PARTLABEL="boot" PARTUUID="a1ba4af4-913f-46f2-96a4-e5fcc8839560"
/dev/mmcblk2p2: LABEL="eMMC" UUID="0aad6275-f6cb-4217-aec3-6d1fcfbecd13" TYPE="ext4" PARTLABEL="eMMC" PARTUUID="1002d5b0-d956-45fd-8453-5c1e26be17c4"
sudo fdisk -l
Disk /dev/nvme0n1: 238.5 GiB, 256060514304 bytes, 500118192 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: D9D16008-583B-42C5-B4A7-A04B80DAA70D
Device Start End Sectors Size Type
/dev/nvme0n1p2 1081344 500117503 499036160 238G Linux filesystem
Disk /dev/mmcblk2: 29.1 GiB, 31268536320 bytes, 61071360 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: D9D16008-583B-42C5-B4A7-A04B80DAA70D
Device Start End Sectors Size Type
/dev/mmcblk2p1 32768 1081343 1048576 512M EFI System
/dev/mmcblk2p2 1081344 61069311 59987968 28.6G Linux filesystem
Disk /dev/mmcblk2boot1: 4 MiB, 4194304 bytes, 8192 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
Disk /dev/mmcblk2boot0: 4 MiB, 4194304 bytes, 8192 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
Протестируем скорость M2
sync; dd if=/dev/zero of=tempfile bs=1M count=1024; sync
Скорость записи составила 380 MB/s что значительно лучше скорости карты памяти.
Это было больно, но интересно! Заранее извиняюсь если какие-то из шагов были сделаны не оптимально. Все писалось после первого опыта настройки.
Инструкция для Rock Pi 4C Plus
https://jamesachambers.com/radxa-rock-pi-4c-plus-ssd-boot-guide/