forked from sig_altarch/wiki
1 line
22 KiB
JSON
1 line
22 KiB
JSON
{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"SIG/AltArch Wiki","text":""},{"location":"#links","title":"Links","text":""},{"location":"#responsibilities","title":"Responsibilities","text":""},{"location":"#meetings-communications","title":"Meetings / Communications","text":""},{"location":"#members","title":"Members","text":""},{"location":"#project-layout","title":"Project layout","text":"<pre><code>mkdocs.yml # The configuration file.\ndocs/\n index.md # The documentation homepage.\n ... # Other markdown pages, images and other files.\n</code></pre>"},{"location":"RISCV64/visionfive_2/","title":"The VisionFive 2 SBC's Wiki","text":"<p>The VisionFive 2 SBC is the second generation of SBC in the VisionFive SBC lineup. This lineup of SBCs contains SoCs with the CPUs that use the RISC-V open computing ISA.</p> <p>This Wiki contains the necessary information a user needs to know before using Rocky Linux on the VisionFive 2 SBC.</p>","tags":["riscv","starfive","visionfive"]},{"location":"RISCV64/visionfive_2/#technical-guide","title":"Technical guide","text":"","tags":["riscv","starfive","visionfive"]},{"location":"RISCV64/visionfive_2/#hardware-specifications","title":"Hardware specifications","text":"Item Description Processor/SoC StarFive JH7110 (<code>rv64imafdcbx</code> with up-to 1.5GHz max freq) Memory LPDDR4: 2GB/4GB/8GB Storage SD card slot SPI flash for u-boot Video Output HDMI 2.0 MIPI-DSI Multimedia Camera with MIPI CSI (up-to 2160p@30fps) Decoding: H.264 & H.265 at 2160p@60fps Encoding: H.264 & H.265 at 1080p@30fps JPEG Encoder and Decoder 1/4-pole stereo audio Connectivity 2x RJ45 Gigabit Ethernet (some models have 1x 100Mbit instead) 4x USB 3.0 (some models have 2x USB 2.0) M.2 M-Key NVMe drive slot Power in USB-C port: Qualcomm Quick Charge 3.0 compatible GPIO power in: 5V/3A PoE (\"pin compatible with RPi PoE HAT\") GPIO 40-pin GPIO header Dimensions 100mm x 72mm Button(s) Hardware reset button Other Debug pin headers","tags":["riscv","starfive","visionfive"]},{"location":"RISCV64/visionfive_2/#software-statusinformation","title":"Software status/information","text":"<p>At the time of writing this Wiki, the software support is still being upstreamed by the hardware vendor. More details about their upstreaming efforts and the merge status of each component can be viewed at rvspace.org.</p>","tags":["riscv","starfive","visionfive"]},{"location":"RISCV64/visionfive_2/#relevant-software-repositories","title":"Relevant software repositories:","text":"<p>Following are the necessary arch/board specific software repositories. These are here for curious tinkerers and Rocky Linux maintainers. Suffice to say, as a normal user, you are not expected to touch/compile any of these items </p>","tags":["riscv","starfive","visionfive"]},{"location":"RISCV64/visionfive_2/#fully-upstreamed","title":"Fully upstreamed","text":"<ul> <li>opensbi (package name: <code>TBD</code>)</li> </ul>","tags":["riscv","starfive","visionfive"]},{"location":"RISCV64/visionfive_2/#downstream-forks-upstream-wip","title":"Downstream forks (upstream WIP)","text":"<ul> <li> <p>u-boot (package name: <code>TBD</code>)</p> </li> <li> <p>linux (package name: <code>TBD</code>)</p> </li> <li> <p>third party software tools/drivers (package name: <code>TBD</code>)</p> </li> </ul>","tags":["riscv","starfive","visionfive"]},{"location":"RISCV64/visionfive_2/#installation","title":"Installation","text":"<p>To install Rocky Linux on the VisionFive 2 SBC, there is one pre-requisite that needs to be satisfied. That is to update the board firmware to v2.11.5.</p> <p>Editor's note: StarFive (the hardware vendor) is almost done sending in mainlining patches for u-boot and we should be able to switch to upstream u-boot soon. Our u-boot package for the VisionFive 2 should automatically update the board firmware to whatever version we support. But the following section is present nonetheless, for the users who have an outdated firmware than what we (Rocky Linux) have a minimum spec bar for.</p>","tags":["riscv","starfive","visionfive"]},{"location":"RISCV64/visionfive_2/#pre-requisite-update-board-firmware","title":"Pre-requisite: Update board firmware","text":"<p>NOTE: PLEASE READ THESE STEPS AND CAREFULLY FOLLOW THEM. IF DONE INCORRECTLY, YOUR BOARD MAY GET BRICKED!</p> <ol> <li>Download the following files:</li> <li>sdcard.img (this image is from release v2.8.0)</li> <li>u-boot-spl.bin.normal.out</li> <li> <p>visionfive2_fw_payload.img</p> </li> <li> <p><code>sudo dd if=sdcard.img conv=sync status=progress bs=1M of=/dev/sdX</code></p> </li> <li> <p><code>mkdir temp-dir</code></p> </li> <li> <p><code>sudo mount /dev/sdX4 temp-dir</code></p> </li> <li> <p><code>sudo cp u-boot-spl.bin.normal.out visionfive2_fw_payload.img temp-dir/root/</code></p> </li> <li> <p><code>sudo sync; sudo sync; sudo sync; sudo sync;</code></p> </li> <li> <p><code>sudo umount temp-dir</code></p> </li> <li> <p>Eject the SD card from your computer, insert it in your VisionFive 2 and power it up. The green LED should start blinking to indicate successful board power-up.</p> </li> <li> <p>Plug the network cable in the Ethernet port that is next to the HDMI port. (The other port has DHCP-related issues with early firmware.)</p> </li> <li> <p><code>ssh root@<IP_ADDRESS></code> (passwd: <code>starfive</code>)</p> </li> <li> <p>Run the command <code>cat /proc/mtd</code> and you should have the following output: <pre><code>dev: size erasesize name\nmtd0: 00020000 00001000 \"spl\"\nmtd1: 00300000 00001000 \"uboot\"\nmtd2: 00100000 00001000 \"data\"\n</code></pre></p> </li> <li> <p>If and only if the partition information given above matches with yours, update the <code>spl</code> and <code>uboot</code> partitions using the following commands: <pre><code>flashcp -v u-boot-spl.bin.normal.out /dev/mtd0\nflashcp -v visionfive2_fw_payload.img /dev/mtd1\n</code></pre></p> </li> </ol> <p>The board firmware has now been updated!</p>","tags":["riscv","starfive","visionfive"]},{"location":"RISCV64/visionfive_2/#current-things-that-are-wip","title":"Current things that are WIP","text":"<p>A Rocky Linux image </p>","tags":["riscv","starfive","visionfive"]},{"location":"RISCV64/visionfive_2/#maintainers","title":"Maintainers","text":"<p>There are several developers who are working on the RISC-V port of Rocky Linux in general, but following are all the maintainers who are supporting the VisionFive 2 SBC. These usernames are what they use on the Rocky Linux Mattermost chat.</p> <ul> <li>@codedude</li> <li>@skip77</li> <li>@neil</li> <li>@pgreco</li> <li>@tgo</li> <li>@mustafa</li> <li>@alangm</li> <li>@sherif</li> <li>@thefossguy</li> </ul>","tags":["riscv","starfive","visionfive"]},{"location":"RPi/solutions/solutions/","title":"Solutions and Troubleshooting","text":""},{"location":"RPi/solutions/solutions/#dnf-always-claims-to-require-a-restart","title":"<code>dnf</code> always claims to require a restart","text":""},{"location":"RPi/solutions/solutions/#symptom","title":"Symptom","text":"<p>Even though the system has been restarted recently, e.g., after a Kernel update, <code>dnf needs-restarting -r</code> always returns with exit code <code>1</code>.</p> <pre><code># dnf needs-restarting -r\nCore libraries or services have been updated since boot-up:\n * dbus\n * dbus-daemon\n * glibc\n * linux-firmware\n * systemd\n\nReboot is required to fully utilize these updates.\nMore information: https://access.redhat.com/solutions/27943\n</code></pre> <p>This affects both Rocky Linux 8 and 9. However, a patch for 9.3 is to be released soon.</p>"},{"location":"RPi/solutions/solutions/#cause","title":"Cause","text":"<p>The <code>dnf</code> plugin uses the <code>mtime</code> of <code>/proc/1</code> which is set to start of epoch due to lack of RTC on Raspberry Pi. The correct system time is set later at boot once network connectivity is established and an NTP server is reachable. Compared to 1970, every package update is after the last reboot which causes the wrong result.</p>"},{"location":"RPi/solutions/solutions/#solution","title":"Solution","text":"<p>Until 9.3 is released, or if the system is still on 8.x, the patch can be manually applied to all versions.</p> <pre><code># patch /usr/lib/python3.6/site-packages/dnf-plugins/needs_restarting.py <<EOF\n--- a/plugins/needs_restarting.py\n+++ b/plugins/needs_restarting.py\n@@ -34,6 +34,7 @@ import functools\n import os\n import re\n import stat\n+import time\n\n\n # For which package updates we should recommend a reboot\n@@ -199,7 +200,28 @@ class ProcessStart(object):\n\n @staticmethod\n def get_boot_time():\n- return int(os.stat('/proc/1').st_mtime)\n+ \"\"\"\n+ We have two sources from which to derive the boot time. These values vary\n+ depending on containerization, existence of a Real Time Clock, etc.\n+ For our purposes we want the latest derived value.\n+ - st_mtime of /proc/1\n+ Reflects the time the first process was run after booting\n+ This works for all known cases except machines without\n+ a RTC - they awake at the start of the epoch.\n+ - /proc/uptime\n+ Seconds field of /proc/uptime subtracted from the current time\n+ Works for machines without RTC iff the current time is reasonably correct.\n+ Does not work on containers which share their kernel with the\n+ host - there the host kernel uptime is returned\n+ \"\"\"\n+\n+ proc_1_boot_time = int(os.stat('/proc/1').st_mtime)\n+ if os.path.isfile('/proc/uptime'):\n+ with open('/proc/uptime', 'rb') as f:\n+ uptime = f.readline().strip().split()[0].strip()\n+ proc_uptime_boot_time = int(time.time() - float(uptime))\n+ return max(proc_1_boot_time, proc_uptime_boot_time)\n+ return proc_1_boot_time\n\n @staticmethod\n def get_sc_clk_tck():\n-- \n2.41.0\nEOF\n</code></pre> <p>It is advisable to <code>version-lock</code> the plugin version until it's fixed upstream. On 8.x, that might be the only solutions if the patch is not backported to 8.x upstream. Use at your own risk!</p> <pre><code># dnf versionlock add python3-dnf-plugins-core\n</code></pre>"},{"location":"events/meeting-notes/2023-10-20/","title":"SIG/AltArch meeting 2023-10-20","text":""},{"location":"events/meeting-notes/2023-10-20/#attendees","title":"Attendees:","text":"<pre><code>* Sherif\n* Bryan\n* Pratham Patel\n* Pablo Greco\n* Alan Marshall\n* Brian Clemens\n* Neil Hanlon\n</code></pre>"},{"location":"events/meeting-notes/2023-10-20/#discussions","title":"Discussions:","text":""},{"location":"events/meeting-notes/2023-10-20/#current-status","title":"Current Status","text":"<p>Originally, Skip and Pablo built rpi image and kernel. Afterwards, Sherif began working with Pablo to build a generic arm kernel for more than just RPis. GenericArm image is being built with Empanadas, but not widely used. It should support Rpi as well as others.</p> <p>As a rule, we cannot rely on EPEL dependencies, and will need to pull them into our build roots. We should work on/request tooling to aid in these operations--i.e., something to identify dependencies, and perform imports of them for us.</p>"},{"location":"events/meeting-notes/2023-10-20/#kernels","title":"Kernels","text":"<p>Building 5.15 and 6.1 kernels in SIG/AltArch, but will be moving them to SIG/Kernel</p> <p>Will also include kernel-mainline (6.5/6.6).</p>"},{"location":"events/meeting-notes/2023-10-20/#sbcs","title":"SBCs","text":"<p>Recently, Bryan and Pratham began working with other SBCs like 3 Libre Computing boards, Orange Pi 5, Rock5b, Odroid purchased by RESF provided to several testers.</p>"},{"location":"events/meeting-notes/2023-10-20/#libre-boards","title":"Libre boards","text":"<ul> <li>are largely generic</li> <li>Rocky uboot is problematic (USB issues), but upstream uboot works w/ our kernel<ul> <li>(Neil has tested this and it works great -- it's running a bunch of IOT stuff for him)</li> </ul> </li> <li>Pratham - have we tested building from their source? or just using their uboot?<ul> <li>Bryan - it's been 6-8 months since we've tried it, but it should be re-investigated</li> <li>We all recall it being a USB-related issue, but this should be confirmed.</li> </ul> </li> </ul>"},{"location":"events/meeting-notes/2023-10-20/#orange-pi-5","title":"Orange Pi 5","text":"<ul> <li>requires 6.5-ish kernel</li> <li>nothing upstreamed in uboot yet</li> </ul>"},{"location":"events/meeting-notes/2023-10-20/#rock5b","title":"Rock5b","text":"<ul> <li>requries a 6.6-rc kernel</li> <li>uboot 3.10 + some pci patches</li> </ul>"},{"location":"events/meeting-notes/2023-10-20/#odroid","title":"Odroid","text":"<ul> <li>hasn't been looked into yet</li> </ul>"},{"location":"events/meeting-notes/2023-10-20/#discussions_1","title":"Discussions","text":"<p>Pablo: * Need to separate kernel vs uboot. We are near to the end of the year, so we are very close to a new kernel LTS being cut which will probably be based on * re: uboot -- would like to stay as close to vanilla (Fedora) uboot as possible, but that is obviously difficult for every single board, practically. Ideally, we can build these as RPMs, just like \"normal\" uboot (this would also make composing images a lot easier, logistically speaking). Another option, if we have to, is to build specific binaries and provide them in a \"one-off\" repo to users as needed.</p> <p>Sherif: * tool like <code>arm-image-installer</code> script to download the right uboot, image, etc, and put it into the disk at the right place. basically: make it pretty fool proof * like spi-tool (?) from Pine64 * Fedora and Debian are doing something like this * In general, we want to have the least amount of uboots required, whatever the case * try to port changes into a single generic uboot where possible * tl;dr - there are a lot of boards. can't please everyone</p> <p>Pratham - questions on Kernels * was using elrepo kernels to test (mainline, mostly) * realized RHEL kernels are missing configs for booting these boards * built kernel.org kernel, and it boots all three libre boards and the rock5b * How to proceed from here? There are a lot of configs which need setting, e.g.. * Storytime! * we all use the same kernel.org tarballs -- without changes * Sherif and Pablo worked on changes to contribute to elrepo, they are very welcoming, in general. * The configs and specs are going to be--mostly, where the Kernel contributions can be * we should always be contributing back to elrepo, so that the entire community can benefit from the changes/features we add * We also begin to limit the amount of backports/changes we need to do over time * the current rocky LTS kernel is the same now as elrepo, due to the PR we've introduced * another example - HPC sig kernel * stripped down kernel for compute nodes, based on the Rocky base kernel with patches * openpatch :D * https://elrepo.org/bugs/view.php?id=1345 * We should document this and our policy on upstreaming work to ELRepo for Kernel changes. * tl;dr - base work on elrepo and make PRs there, then bring them into SIG/Kernel</p>"},{"location":"events/meeting-notes/2023-10-20/#generic-image","title":"Generic Image","text":"<pre><code>* Pablo - some boards look for grub binaries in a _highly_ specific location, and we need to make sure that we make a copy of those (links) into those locations\n * i.e., their uboots aren't looking for grubx64.efi in the right place\n* Neil - We can announce the availability of this more generally in our 9.3 / 8.9 releases coming in November.\n</code></pre>"},{"location":"events/meeting-notes/2023-10-20/#alternative-alternative-architctures","title":"alternative alternative architctures","text":""},{"location":"events/meeting-notes/2023-10-20/#32-bit-arm-armhfparm7vl","title":"32 bit arm (armhfp/arm7vl)","text":"<pre><code>* We are looking for hardware which we can use to do these builds. We have some VMs currently, but they are not quite powerful enough.\n* OSU OSL should have some Lenovo eMags for us, at some point.\n * Neil to reach out to Ramareth\n * Neil to reach out to Aaron from Ampere\n* If we can't get anything from OSU, let's ping SolidRun or Ampere to see if they can do anything for us and figure it ourselves.\n</code></pre>"},{"location":"events/meeting-notes/2023-10-20/#riscv","title":"riscv","text":"<pre><code>* right now, it takes 2+ days to build gcc in qemu\n* there have been a lot of good changes in qemu to add more support but we should try and do native builds if possible.\n* Neil - Investigate what and how much riscv hardware we need.. and where we'll host it\n* https://www.crowdsupply.com/milk-v/milk-v-pioneer\n</code></pre>"},{"location":"events/meeting-notes/2023-10-20/#decisions","title":"Decisions","text":"<pre><code>* Images should be generic so as to be able to be installed on any board, where possible.\n * uboot can live on SPI or external flash\n * We need to help document this for our users and have guides on how to get the SBCs working. This is a big pain point for many SBC users as there is so much variation.\n * To this end, we should investigate some tooling to aid in writing images for boards which will boot on the first try.\n* Uboot should similarly be generic and work for all boards, insofar as it is practical to do so.\n * Some boards this doesn't make sense for, e.g., ones that have uboot from 2014 + hundreds of patches, however, these are few and far between. For these, we can package them as RPMs and provide them (see note below re: licensing)\n* We will wait for the next Kernel.org LTS to be cut, as that should have all the changes for the boards we're talking about.\n* We will engage with our upstreams (Fedora, ELRepo, etc) for changes we make with the Kernel SIG for AltArch/SBC support.\n * This necessitates participating in SIG/Kernel to represent our needs in these kernels.\n* We should strive to perform native builds when possible, but recognize that emulation is a necessary evil.\n</code></pre> <p>uboot and other licensing</p> <p>We need to ensure that we are careful about the licensing of softwares we wish to include in the SIG distribution.</p>"},{"location":"events/meeting-notes/2023-10-20/#action-items","title":"Action items:","text":"<ul> <li>Libre Compute - Try/Investigate using vendor tree to build uboot - Pratham</li> <li>Investigate <code>arm-image-installer</code> script/tool for helping write disk images for specific boards - Sherif (?)</li> <li>Odroid N2 - Track installability<ul> <li>Investigate backport of uboot configuration to work with our uboot and/or track upstreaming process</li> </ul> </li> <li>Orange Pi 5 - Track installability<ul> <li>Investigate backport of uboot configuration to work with our uboot and/or track upstreaming process</li> </ul> </li> <li>Rock5b - Track installability<ul> <li>Investigate backport of uboot configuration to work with our uboot and/or track upstreaming process</li> </ul> </li> <li>Libre Computing Boards (3)<ul> <li>Investigate backport of uboot configuration to work with our uboot and/or track upstreaming process</li> </ul> </li> <li>Maintenance - Importing dependencies from Fedora/EPEL<ul> <li>Investigate tooling for this</li> </ul> </li> <li>Document process on backporting uboot and kernels - Pablo<ul> <li>To include information on how we work and interact with upstreams, with examples! - Sherif</li> </ul> </li> <li>Check and investigate which boards have hardcoded grubx64 paths in their uboot; address them</li> <li>Acquire armhfp (arm7vl) hardware - Neil to reach out to OSU OSL</li> <li>Neil - Investigate what and how much riscv hardware we need.. and where we'll host it</li> </ul>"},{"location":"events/meeting-notes/2023-10-20/#next-meeting","title":"Next Meeting","text":"<ul> <li>Discuss meeting time - biweekly?</li> </ul>"},{"location":"events/meeting-notes/2023-10-20/#old-business","title":"Old business:","text":"<ul> <li>N/A</li> </ul>"},{"location":"support/hardware/supported/","title":"Rocky Linux Supported SBC Hardware Models","text":""},{"location":"support/hardware/supported/#raspberry-pi-sbcs","title":"Raspberry Pi SBCs","text":"Model Image Status Pi 4B RockyLinux_Rpi_9-latest.img.xz Complete Pi 3B/B+ RockyLinux_Rpi_9-latest.img.xz Complete"},{"location":"support/hardware/supported/#banana-pi","title":"Banana Pi","text":"Model Status Unknown Stage 1(hardware being procured)"},{"location":"support/hardware/supported/#orange-pi","title":"Orange Pi","text":"Model Status Unknown Stage 1(hardware being procured)"},{"location":"support/hardware/supported/#pine","title":"Pine","text":"Model Image Status Pine64 Stage 1(hardware being obtained) RockPro64 Rocky-9.1-aarch64-generic-Minimal-rk3399-sda.raw.tar.gz Complete A64_LTS Stage 1(hardware being obtained)"},{"location":"support/hardware/supported/#libre-computer","title":"Libre Computer","text":"Model Status Renegade Stage 2(hw obtained, initial testing to discover whats needed) La Frite Stage 2(hw obtained, initial testing to discover whats needed) Tritium Stage 2(hw obtained, initial testing to discover whats needed) Le Potato Stage 2(hw obtained, initial testing to discover whats needed)"},{"location":"support/hardware/supported/#ordoid","title":"Ordoid","text":"Model Status N2+ Stage 2(hw obtained, initial testing to discover what's needed)"},{"location":"support/hardware/supported/#khadas","title":"Khadas","text":"<p>| Model | Image | Status | |---------------|---------------------------------------------------| | In early phases of discovery. | | |</p>"}]} |