This shows you the differences between two versions of the page.
|
ass:labs-2025:02:tasks:01 [2025/08/05 11:18] florin.stancu created |
ass:labs-2025:02:tasks:01 [2026/07/14 15:48] (current) florin.stancu |
||
|---|---|---|---|
| Line 13: | Line 13: | ||
| === Task 1.1. Compile the Linux kernel === | === Task 1.1. Compile the Linux kernel === | ||
| - | Clone the kernel from the [[https://github.com/torvalds/linux/|official GitHub repo]], using the ''v6.12'' tag. | + | Clone the kernel from the [[https://github.com/torvalds/linux/|official GitHub repo]], using the ''v7.1'' tag. |
| We recommend you to use [[https://stackoverflow.com/questions/1778088/how-do-i-clone-a-single-branch-in-git|this git cloning technique]] to avoid fetching the entire git history (requiring several GBs of disk space!). | We recommend you to use [[https://stackoverflow.com/questions/1778088/how-do-i-clone-a-single-branch-in-git|this git cloning technique]] to avoid fetching the entire git history (requiring several GBs of disk space!). | ||
| Line 67: | Line 67: | ||
| == Download Buildroot == | == Download Buildroot == | ||
| - | Clone the official [[https://github.com/buildroot/buildroot.git|Buildroot repo]]. We used the latest release, ''2025.05.x'', so make sure to fetch that branch (master should also work, but it is in continuous development and may break at any time! use the versioned branch if you want a hassle-free experience). | + | Clone the official [[https://github.com/buildroot/buildroot.git|Buildroot repo]]. We used the latest release, ''2026.05.x'', so make sure to fetch that branch (master should also work, but it is in continuous development and may break at any time! use the versioned branch if you want a hassle-free experience). |
| == Create the configuration == | == Create the configuration == | ||
| Line 77: | Line 77: | ||
| What we want from Buildroot is a minimal root filesystem and nothing more. So we'll start from a basic ''defconfig'' (that's it!), then proceed with ''menuconfig'' and make the following changes: | What we want from Buildroot is a minimal root filesystem and nothing more. So we'll start from a basic ''defconfig'' (that's it!), then proceed with ''menuconfig'' and make the following changes: | ||
| + | * Target Options -> //Aarch64 Little Endian//; | ||
| + | * To optimize: Model -> Corted-A55; | ||
| * Enter System Configuration menu. | * Enter System Configuration menu. | ||
| * You can change the //System Banner// to your own liking; | * You can change the //System Banner// to your own liking; | ||
| Line 186: | Line 188: | ||
| * Notice how it has pre-defined attributes for ''kernel'', ''fdt'', ''ramdisk''. These are not simple binary blobs; instead, they each have a role to play in the boot sequence. E.g., U-Boot will know to take the ''load'' address of the ''fdt'' image and pass it via a certain register (decided by convention) to the ''kernel'', informing it where in memory to look for the FDT. | * Notice how it has pre-defined attributes for ''kernel'', ''fdt'', ''ramdisk''. These are not simple binary blobs; instead, they each have a role to play in the boot sequence. E.g., U-Boot will know to take the ''load'' address of the ''fdt'' image and pass it via a certain register (decided by convention) to the ''kernel'', informing it where in memory to look for the FDT. | ||
| - | Note how we replaced the ''load'' and ''entry'' addresses with placeholders such as //XXX//. Replace these with whatever addresses you want such as the binaries do not overlap once U-Boot starts loading them. | + | Note how we replaced the ''load'' and ''entry'' addresses with placeholders such as //XXX//. Replace these with whatever addresses you want such as the binaries do not overlap once U-Boot starts loading them (e.g.: you can start from ''0x81000000'' -- 64MB offset in DRAM, then add the size of the artifact rounded to 1-64MB for the next address and so on). |
| <note tip> | <note tip> | ||