• Installing Debian On SiFiveHiFiveUnmatched


     

    ubuntu@ubuntu:~/linux-5.14$ ls ./arch/riscv/boot/dts/sifive/
    fu540-c000.dtsi  hifive-unleashed-a00.dtb  hifive-unmatched-a00.dtb  Makefile
    fu740-c000.dtsi  hifive-unleashed-a00.dts  hifive-unmatched-a00.dts
    ubuntu@ubuntu:~/linux-5.14$ 

     

    cat hifive-unleashed-a00.dts
    // SPDX-License-Identifier: (GPL-2.0 OR MIT)
    /* Copyright (c) 2018-2019 SiFive, Inc */
    
    #include "fu540-c000.dtsi"
    #include <dt-bindings/gpio/gpio.h>
    cat hifive-unmatched-a00.dts
    // SPDX-License-Identifier: (GPL-2.0 OR MIT)
    /* Copyright (c) 2020 SiFive, Inc */
    
    #include "fu740-c000.dtsi"

    Important Note

     

     

    Debian on the ?HiFive Unmatched is very new. There are no official images available yet.

    You could find some experimental images in (signed with ?Deiv's key):

    This images are built with the same instructions in the next section. You just need to decompress them and burn to sd-card.

     

    Installing Debian on HiFive

    The easiest way at present to run Debian binaries on a ?HiFive is to generate an sdcard image with all the Debian stock parts.

     

    Preparing disk image

     

    # create image file
    dd if=/dev/zero of=debian-sid-risc-v-sifive-unmatched.img bs=1M count=4096
    
    # Partition image with correct disk IDs
    sudo sgdisk -g --clear --set-alignment=1 \
           --new=1:34:+1M:    --change-name=1:'u-boot-spl'    --typecode=1:5b193300-fc78-40cd-8002-e86c45580b47 \
           --new=2:2082:+4M:  --change-name=2:'opensbi-uboot' --typecode=2:2e54b353-1271-4842-806f-e436d6af6985 \
           --new=3:16384:+130M:   --change-name=3:'boot'      --typecode=3:0x0700  --attributes=3:set:2  \
           --new=4:286720:-0   --change-name=4:'rootfs'       --typecode=4:0x8300 \
           debian-sid-risc-v-sifive-unmatched.img
           
    # Mount image in loop device
    sudo losetup --partscan --find --show debian-sid-risc-v-sifive-unmatched.img
    
    # format partitions
    sudo mkfs.vfat /dev/loop0p3
    sudo mkfs.ext4 /dev/loop0p4
    sudo e2label /dev/loop0p3 boot
    sudo e2label /dev/loop0p4 rootfs

     

    Installing debian sid+riscv-port on image

     

    # mount root partition
    sudo mount /dev/loop0p4 /mnt
    
    # install base files
    sudo apt-get install debootstrap qemu-user-static binfmt-support debian-ports-archive-keyring
    sudo debootstrap --arch=riscv64 --keyring /usr/share/keyrings/debian-ports-archive-keyring.gpg --include=debian-ports-archive-keyring unstable /mnt http://deb.debian.org/debian-ports
    
    # mount boot partition
    sudo mount /dev/loop0p3 /mnt/boot
    
    # chroot into base filesystem and made basic configuration
    sudo chroot /mnt

    Inside created chroot:

     

    # Update package information
    apt-get update
    
    # Set up basic networking
    cat >>/etc/network/interfaces <<EOF
    auto lo
    iface lo inet loopback
    
    auto eth0
    iface eth0 inet dhcp
    EOF
    
    # Set root password 'sifive'
    passwd
    
    # Change hostname
    echo unmatched > /etc/hostname
    
    # Set up fstab
    cat > /etc/fstab <<EOF
    # <file system> <mount point>   <type>  <options>       <dump>  <pass>
    
    /dev/mmcblk0p4 /               ext4    errors=remount-ro 0       1
    /dev/mmcblk0p3 /boot           vfat    nodev,noexec,ro   0       2
    EOF
    
    # Install kernel and bootloader infrastructure
    apt-get install linux-image-riscv64 u-boot-menu u-boot-sifive
    apt-get clean
    
    # add needed modules in initrd
    echo mmc_spi >>/etc/initramfs-tools/modules 
    #update-initramfs -u (TODO: add more space in boot)
    rm /boot/initrd*
    update-initramfs -c -k all
    
    # Set up u-boot (TODO: better integration for kernel updates)
    cp /usr/lib/linux-image-5.14.0-3-riscv64/sifive/hifive-unmatched-a00.dtb /boot/
    echo U_BOOT_FDT=\"hifive-unmatched-a00.dtb\" >> /etc/default/u-boot
    echo U_BOOT_PARAMETERS=\"rw rootwait console=ttySIF0,115200 earlycon\" >> /etc/default/u-boot
    u-boot-update
    
    # Install ssh server and ntp
    apt-get install openssh-server openntpd ntpdate
    apt-get clean
    
    # set the time immediately at startup
    sed -i 's/^DAEMON_OPTS="/DAEMON_OPTS="-s /' /etc/default/openntpd
    
    # exit chroot
    exit

    Once out of chroot:

     

    sudo rm /mnt/root/.bash_history

     

    Setup bootloaders

     

    sudo dd if=/mnt/usr/lib/u-boot/sifive_unmatched/u-boot-spl.bin of=/dev/loop0p1 bs=4k iflag=fullblock oflag=direct conv=fsync status=progress
    sudo dd if=/mnt/usr/lib/u-boot/sifive_unmatched/u-boot.itb of=/dev/loop0p2 bs=4k iflag=fullblock oflag=direct conv=fsync status=progress

     

    Finish and write image to sdcard

     

    sudo umount /mnt/boot
    sudo umount /mnt
    
    sudo losetup -d /dev/loop0
    
    # take care of writing to the correct sdcard-device
    sudo dd if=debian-sid-risc-v-sifive-unmatched.img of=/dev/sdcard-device bs=64k iflag=fullblock oflag=direct conv=fsync status=progress


    How to install Ubuntu on RISC-V HiFive boards

     
  • 相关阅读:
    qt解决中文乱码
    二维数组及指针分析
    pyhon Django框架
    java回调(钩子函数)
    java.util.concurrent java并发工具包
    CountDownLatch 计数器
    报表 图形接口查询 (年月周日)
    pg 日期函数
    linux 执行脚本报错 No such file or directory
    python 处理数据常用操作
  • 原文地址:https://www.cnblogs.com/dream397/p/16036362.html
Copyright © 2020-2023  润新知