Allwinner Nezha/Эксперименты
На этой странице сохранена дополнительная информация о загрузке Альт и других ОС на Allwinner Nezha.
Tina Linux
Плата поставляется с установленной на SPI Tina Linux
Процесс загрузки платы
Кратко, процесс загрузки можно описать так: bootROM -> SPL -> OpenSBI -> U-Boot -> extlinux -> Linux kernel Сразу после включения питания платы процессор получает первые команды из ПЗУ(bootROM), эти команды передают управление вторичному загрузчику SPL, находящемуся на съемном носителе (microSD).
SPL
SPL (Secondary Program Loader) является промежуточным этапом загрузки платы и служит для инициализации контроллера памяти и загрузки следующего загрузчика. В качестве SPL в Allwinner Nezha используется Boot0. Собрать из исходников и записать его на флешку можно по следующей инструкции:
git clone https://github.com/smaeul/sun20i_d1_spl -b mainline cd sun20i_d1_spl make CROSS_COMPILE=riscv64-linux-gnu- p=sun20iw1p1 mmc sudo dd if=nboot/boot0_sdcard_sun20iw1p1.bin of=/dev/sdX bs=8192 seek=1
OpenSBI + U-Boot
Зпуск Simply с ядром 5.4.61 из федоры
Для эксперимента взял образ федоры https://openkoji.iscas.ac.cn/pub/dl/riscv/Allwinner/Nezha_D1/images-release/Fedora/fedora-riscv64-d1-developer-xfce-rawhide-Rawhide-20220104-012902.n.0-sda.raw.zst fedora-riscv64-d1-developer-xfce-rawhide-Rawhide-20220104-012902.n.0-sda.raw
Создал с помощью kpartx loop device из образа, примонтировал. Забыкапил модули ядра очистил корневой раздел, чтобы
slinux-10.0-riscv64.img.xz
Компиляция ядра из оригинального исходного кода
Получение исходного кода
- Перейдите на платформу обслуживания клиентов Allwinner и зарегистрируйтесь.
- Войдите в свою учетную запись и добавьте свой публичный ключ.
- Для этого перейдете в скачать -> управление ключами -> создать
- В открывшейся форме укажите свой username и добавьте открытый ключ
- Загрузите скрипт загрузки SDK:
- Замените "username" на свое и выполните следующую команду:
git clone ssh://username@sdk.allwinnertech.com/git_repo/repo
- Откройте файл ./repo/repo и замените username в следующей строке:
REPO_URL = 'ssh://voropaevdmtr@sdk.allwinnertech.com/git_repo/repo.git'
- Замените "username" на свое и выполните следующую команду:
- Загрузите исходный код
$ mkdir tina-d1-h $ cd tina-d1-h $ repo/repo init -u ssh://username@sdk.allwinnertech.com/git_repo/D1_Tina_Open/manifest.git -b master -m tina-d1-h.xml $ repo/repo sync $ repo/repo start product-smartx-d1-h-tina-stable-v2.0 --all # После завершения всех загрузок создайте ветку
Возможно, перед выполнением команд вам потребуется создать симлинк:
$ sudo ln -s /usr/bin/python2 /usr/bin/python
Компиляция
- Перейдите в каталог
./lichee/linux-5.4
- Выполните следующую последовательность команд:
cp arch/riscv/configs/sun20iw1p1_d1_defconfig .config make CROSS_COMPILE=riscv64-linux-gnu- ARCH=riscv olddefconfig make CROSS_COMPILE=riscv64-linux-gnu- ARCH=riscv make CROSS_COMPILE=riscv64-linux-gnu- ARCH=riscv INSTALL_PATH=${RISCV_ROOTFS_BOOT} install make CROSS_COMPILE=riscv64-linux-gnu- ARCH=riscv INSTALL_MOD_PATH=${RISCV_ROOTFS} modules_install