Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revision | |||
| building-snacklinux [2022/12/19 02:00] – snacsnoc | building-snacklinux [2022/12/19 05:05] (current) – snacsnoc | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | (adapted from Github readme) | + | See [[https:// |
| - | + | ||
| - | # Build system | + | |
| - | + | ||
| - | * Linux is preferable to build with | + | |
| - | + | ||
| - | **Debian** | + | |
| - | + | ||
| - | apt-get install build-essential git libgmp-dev libmpc-dev flex bison bc | + | |
| - | + | ||
| - | Optional: | + | |
| - | + | ||
| - | apt-get install genisoimage #used for generating x86 ISO images | + | |
| - | + | ||
| - | + | ||
| - | **Mac OS*** | + | |
| - | * Mac OS is **incredibly** difficult to get working alone to build the kernel, otherwise cross-compiling packages works | + | |
| - | * An alternative to a tradtional VM is to use something like [krunvm](https:// | + | |
| - | + | ||
| - | #### gcc | + | |
| - | + | ||
| - | arch -arm64 brew install gcc@12 | + | |
| - | + | ||
| - | + | ||
| - | If you have an alternate version of gcc installed, create symlinks: | + | |
| - | + | ||
| - | cd / | + | |
| - | ln -s gcc-12 gcc | + | |
| - | ln -s g++-12 g++ | + | |
| - | + | ||
| - | + | ||
| - | # Toolchain | + | |
| - | + | ||
| - | + | ||
| - | ## Build your own | + | |
| - | Compile your own toolchain with [musl-cross-make](https:// | + | |
| - | + | ||
| - | git clone https:// | + | |
| - | + | ||
| - | ### arm64 | + | |
| - | + | ||
| - | + | ||
| - | TARGET=aarch64-linux-musl make | + | |
| - | TARGET=aarch64-linux-musl make install | + | |
| - | + | ||
| - | + | ||
| - | ### x86 | + | |
| - | + | ||
| - | + | ||
| - | TARGET=i486-linux-musl make | + | |
| - | TARGET=i486-linux-musl make install | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | ### TODO: | + | |
| - | + | ||
| - | + | ||
| - | Installs to output/ | + | |
| - | Add the toolchain to your shell' | + | |
| - | export PATH=$PATH:/ | + | |
| - | + | ||
| - | # Building SnackLinux | + | |
| - | + | ||
| - | ## Environment vars | + | |
| - | + | ||
| - | JOBS Set number of parallel jobs to create, defaults to -j8 | + | |
| - | Example | + | |
| - | make busybox JOBS=-j12 | + | |
| - | + | ||
| - | ### Architechtures | + | |
| - | Change target arch by using switches with make: | + | |
| - | + | ||
| - | arch=aarch64 | + | |
| - | arch=x86 | + | |
| - | arch=x86_64 | + | |
| - | + | ||
| - | + | ||
| - | Building for arm64: | + | |
| - | + | ||
| - | Example | + | |
| - | make busybox arch=aarch64 JOBS=-j4 | + | |
| - | + | ||
| - | Defaults to x86 | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | ## Versions | + | |
| - | See defs.sh for kernel and package versions | + | |
| - | + | ||
| - | + | ||
| - | ## Getting started | + | |
| - | + | ||
| - | + | ||
| - | Download source tars and link | + | |
| - | + | ||
| - | bash ./ | + | |
| - | + | ||
| - | Set the amount of parallel jobs to run when using make | + | |
| - | + | ||
| - | export JOBS=j16 | + | |
| - | + | ||
| - | + | ||
| - | Compile the kernel | + | |
| - | + | ||
| - | + | ||
| - | make kernel | + | |
| - | + | ||
| - | + | ||
| - | Build musl, Bash and BusyBox | + | |
| - | + | ||
| - | make system | + | |
| - | + | ||
| - | + | ||
| - | Install to / | + | |
| - | + | ||
| - | + | ||
| - | make install | + | |
| - | + | ||
| - | + | ||
| - | Next step: [booting](# | + | |
| - | + | ||
| - | + | ||
| - | #### Compile individual packages | + | |
| - | + | ||
| - | + | ||
| - | #### Linux - | + | |
| - | + | ||
| - | + | ||
| - | make kernel | + | |
| - | + | ||
| - | + | ||
| - | #### musl - | + | |
| - | + | ||
| - | make musl | + | |
| - | + | ||
| - | #### BusyBox - | + | |
| - | + | ||
| - | + | ||
| - | make busybox | + | |
| - | + | ||
| - | + | ||
| - | #### Bash - | + | |
| - | + | ||
| - | + | ||
| - | make bash | + | |
| - | + | ||
| - | #### Binutils (optional) | + | |
| - | + | ||
| - | + | ||
| - | make binutils | + | |
| - | + | ||
| - | + | ||
| - | #### Syslinux | + | |
| - | + | ||
| - | + | ||
| - | make syslinux | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | If you would also like to install binutils, use: | + | |
| - | + | ||
| - | + | ||
| - | make binutils-install | + | |
| - | + | ||
| - | + | ||
| - | #### stripping symbols | + | |
| - | + | ||
| - | This target strips all debug symbols files matching LSB executable, shared object or ar archive | + | |
| - | + | ||
| - | make arch=arm64 strip-fs | + | |
| - | + | ||
| - | # Booting | + | |
| - | Prerequisites: | + | |
| - | + | ||
| - | #Base files (/etc) | + | |
| - | git clone https:// | + | |
| - | cp -R snacklinux-base/rootfs/* /opt/ | + | |
| - | + | ||
| - | # | + | |
| - | ./ | + | |
| - | + | ||
| - | #fbpkg (package manager) | + | |
| - | git clone https:// | + | |
| - | cp fbpkg/ | + | |
| - | + | ||
| - | ## ISO | + | |
| - | + | ||
| - | Run make iso. The output ISO will be in iso/ | + | |
| - | + | ||
| - | Note: you do not have to have the toolchain to create the ISO | + | |
| - | + | ||
| - | ## qemu | + | |
| - | Create a gzipped rootfs by running: | + | |
| - | + | ||
| - | cd / | + | |
| - | + | ||
| - | + | ||
| - | Packages | + | |
| - | ------- | + | |
| - | Read the [Packages page](http:// | + | |
| - | For SnackLinux' | + | |
| - | + | ||
| - | Hacking | + | |
| - | ------- | + | |
| - | Edit anything in / | + | |
| - | The kernel can also be recompiled to fit your needs. | + | |
| - | + | ||
| - | The boot/ | + | |