Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
building-snacklinux [2022/12/19 02:00] snacsnocbuilding-snacklinux [2022/12/19 05:05] (current) snacsnoc
Line 1: Line 1:
-(adapted from Github readme) +See [[https://github.com/snacsnoc/snacklinux/blob/master/README.md|README on Github]]
- +
-# 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://github.com/containers/krunvm) +
- +
-#### gcc +
- +
-  arch -arm64 brew install gcc@12 +
- +
- +
-If you have an alternate version of gcc installed, create symlinks: +
- +
-cd /opt/homebrew/bin +
-ln -s gcc-12 gcc  +
-ln -s g++-12 g++ +
- +
- +
-# Toolchain +
- +
- +
-## Build your own  +
-Compile your own toolchain with [musl-cross-make](https://github.com/richfelker/musl-cross-make.git) +
- +
-git clone https://github.com/richfelker/musl-cross-make.git +
- +
-### 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:x86_64 +
- +
- +
-Installs to output/  +
-Add the toolchain to your shell's PATH: +
-  export PATH=$PATH:/path/to/out/bin +
- +
-# 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 ./download_prereq.sh  +
- +
-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 /opt/snacklinux_rootfs directory +
- +
- +
-  make install +
- +
- +
-Next step: [booting](#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://github.com/snacsnoc/snacklinux-base.git +
-  cp -R snacklinux-base/rootfs//opt/snacklinux_rootfs/ +
- +
-#Create ./dev files +
-  ./createdev.sh +
- +
-#fbpkg (package manager) +
-  git clone https://github.com/snacsnoc/fbpkg.git +
-  cp fbpkg/src/fbpkg /opt/snacklinux_rootfs/usr/bin +
- +
-## 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 /opt/snacklinux_rootfs/; find . -print cpio -o -H newc --quiet | gzip -6 > ~/rootfs.gz  +
- +
- +
-Packages +
-------- +
-Read the [Packages page](http://snacklinux.org/packages) for building packages. +
-For SnackLinux's package manager fbpkg, see [here](https://github.com/snacsnoc/fbpkg). +
- +
-Hacking +
-------- +
-Edit anything in /opt/snacklinux_rootfs, it is the root filesystem. +
-The kernel can also be recompiled to fit your needs.  +
- +
-The boot/isolinux directory is where ISOLINUX resides, edit the menu to adjust to your needs. +