Skip to content

Instantly share code, notes, and snippets.

@mikedigriz
Last active March 14, 2024 09:32
Show Gist options
  • Save mikedigriz/1bf94dd425bb20ca356945363a6c21d4 to your computer and use it in GitHub Desktop.
Save mikedigriz/1bf94dd425bb20ca356945363a6c21d4 to your computer and use it in GitHub Desktop.
Как установить Debian на Rock PI N10 B для загрузки с M.2

Как установить Debian на Rock PI N10 B для загрузки с M.2

Так как у меня не удалось загрузиться с M.2 предположу что система грузится либо с SD карты либо с внутренней eMMC. А значит нужно размещать загрузчик в любом из этих местах.

На выходе получим Rock PI N10 который грузится с eMMC и использует M.2 в качестве корня. Будет два раздела - раздел boot на eMMC, раздел rootfs на M.2.

Шьем заводской образ Debian на SD карту

Сперва добиваемся рабочего и настроенного состояния на SD карте.
https://wiki.radxa.com/RockpiN10/install/microSD

Обновляем систему

sudo apt update && sudo apt full-upgrade

Фиксим истекший apt-ключ

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. Диспетчер настроек, клавиатура, раскладка.

Подготавливаем M.2

Нужно удалить все разделы если такие есть. Иначе не получится скопировать с SD.

sudo gdisk /dev/nvme0n1

Выводим разделы "p". Выбрав номер жмем "d". Затем сохраняем изменения с помощью "w".

Копируем SD карту на M.2

Установленную систему копируем на чистый M.2

sudo su
cat /dev/mmcblk1 > /dev/nvme0n1

Меняем UUID rootfs SD

Нам нужно изменить UUID нашей SD-карты, чтобы система не пыталась загрузиться с этого раздела.

sudo tune2fs -O metadata_csum_seed -U random /dev/mmcblk1p2

Меняем UUID загрузчика M.2

Это сделает так, что смонтированная папка /boot в операционной системе будет на самом деле монтировать SD-карту.

sudo apt install mtools -y
sudo mlabel -N aaaa1111 -i /dev/nvme0n1p1 ::

Запуск fsck

Перед перезагрузкой запустим 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 на eMMC

Избавимся от 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

Протестируем скорость 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/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment