diff --git a/build.sh b/build.sh index 7f17f93..1966314 100755 --- a/build.sh +++ b/build.sh @@ -13,10 +13,52 @@ sudo rm chibrax.tar.gz 2> /dev/null mkdir -p rootfs/ mkdir -p rootfs/boot mkdir -p rootfs/chibrax +mkdir -p rootfs/usr/local/bin +mkdir -p rootfs/usr/local/sbin +mkdir -p rootfs/usr/local/lib +mkdir -p rootfs/usr/local/lib64 +mkdir -p rootfs/usr/local/etc +mkdir -p rootfs/usr/bin +mkdir -p rootfs/usr/sbin +mkdir -p rootfs/usr/lib +mkdir -p rootfs/usr/lib32 +mkdir -p rootfs/dev +mkdir -p rootfs/sys +mkdir -p rootfs/tmp +mkdir -p rootfs/home +mkdir -p rootfs/root +#TODO: faire des lien vers usr/bin et usr/sbin +mkdir -p rootfs/proc +mkdir -p rootfs/run +cd rootfs +ln -s usr/bin bin || exit 1 +ln -s usr/sbin sbin || exit 1 +ln -s usr/lib lib || exit 1 +ln -s usr/lib lib64 || exit 1 +cd - +cd rootfs/usr +ln -s lib lib64 + +cd - #installation de grub # coreutils = cat -sudo pacstrap rootfs device-mapper || exit 1 +#sudo pacstrap rootfs || exit 1 + +echo "construction de la libc" +chmod +x ./libc/build.sh +cd libc && ./build.sh || exit 1 && cd - +echo "done" + +echo "construction de eudev" +chmod +x ./libudev/build.sh +cd libudev && ./build.sh || exit 1 && cd - +echo "done" + +echo "construction de lvm2(libdemapper)" +chmod +x ./lvm2/build.sh +cd lvm2 && ./build.sh || exit 1 && cd - +echo "done" echo "construction de liblzma" chmod +x ./liblzma/build.sh @@ -33,12 +75,16 @@ chmod +x ./nodejs/build.sh cd nodejs && ./build.sh || exit 1 && cd - echo "done" +echo "construction du loader" chmod +x ./chibraxLoader/build.sh cd chibraxLoader && ./build.sh && cd - -sudo cp chibraxLoader/init rootfs/bin/ || exit 1 +sudo cp chibraxLoader/init rootfs/usr/bin/ || exit 1 +echo "done" +echo "construction du kernel" cd kernel && ./from_current.sh && cd - sudo cp kernel/src/vmlinuz rootfs/boot || exit 1 +echo "done" echo "Cloning the firmware" # on masque les erreurs si le depot est deja clone @@ -53,5 +99,3 @@ echo "rebuilding C++ hooks" echo "done" sudo cp rootfs\ overrides/* rootfs/ -r || exit 1 - -sudo rm rootfs/var/cache -r \ No newline at end of file diff --git a/chibraxLoader/build.sh b/chibraxLoader/build.sh index 79cb50c..792f5cb 100755 --- a/chibraxLoader/build.sh +++ b/chibraxLoader/build.sh @@ -1,2 +1,7 @@ #!/bin/bash +if [ "$EUID" = 0 ] +then echo "Please don't run this as root" + exit +fi + gcc chibraxLoader.c -O3 -o init diff --git a/createLiveImage.sh b/createLiveImage.sh index 5efa4e1..2409e33 100755 --- a/createLiveImage.sh +++ b/createLiveImage.sh @@ -49,13 +49,10 @@ mount --rbind /sys $CHIBRAX_MOUNT_POINT/sys mount --make-rslave $CHIBRAX_MOUNT_POINT/sys mount --rbind /tmp $CHIBRAX_MOUNT_POINT/tmp -chroot $CHIBRAX_MOUNT_POINT grub-install --target=i386-pc ${LOOP_ROOT} --modules=part_msdos -chroot $CHIBRAX_MOUNT_POINT grub-mkconfig -o /boot/grub/grub.cfg +chroot $CHIBRAX_MOUNT_POINT /sbin/ldconfig -p +chroot $CHIBRAX_MOUNT_POINT /usr/sbin/grub-install --target=i386-pc ${LOOP_ROOT} --modules=part_msdos +chroot $CHIBRAX_MOUNT_POINT /usr/sbin/grub-mkconfig -o /boot/grub/grub.cfg -umount $CHIBRAX_MOUNT_POINT/dev -umount $CHIBRAX_MOUNT_POINT/proc -umount $CHIBRAX_MOUNT_POINT/sys -umount $CHIBRAX_MOUNT_POINT/tmp PARTUUID=$(lsblk $LOOP --fs | awk '{print $4}' | grep -v LABEL) @@ -64,6 +61,10 @@ echo " set root='hd0,msdos1'" >> $CHIBR echo " linux /boot/vmlinuz rootfstype=ext4 root=/dev/sda1 rw quiet" >> $CHIBRAX_MOUNT_POINT/boot/grub/grub.cfg echo "}" >> $CHIBRAX_MOUNT_POINT/boot/grub/grub.cfg +umount $CHIBRAX_MOUNT_POINT/dev -l +umount $CHIBRAX_MOUNT_POINT/proc -l +umount $CHIBRAX_MOUNT_POINT/sys -l +umount $CHIBRAX_MOUNT_POINT/tmp -l umount $CHIBRAX_MOUNT_POINT losetup -d $LOOP_ROOT losetup -d $LOOP diff --git a/deps.sh b/deps.sh index b7ad924..1f31c31 100755 --- a/deps.sh +++ b/deps.sh @@ -1,12 +1,6 @@ if [ -f /bin/pacman ] # btw then - sudo pacman -S python gcc make bc unzip wget sudo binutils nasm autoconf diffutils binutils bison gettext flex -else if [ -f /bin/apt ] #deb / ubuntu -then - sudo apt-get install python3 g++ make bc unzip wget sudo -else if [ -f /bin/dnf ] #fedora -then - sudo dnf install python3 gcc-c++ make bc unzip wget sudo -fi -fi + sudo pacman -S python gcc make bc unzip wget sudo binutils nasm autoconf diffutils binutils bison gettext flex gperf +else + echo "not suported yet, use arch" fi \ No newline at end of file diff --git a/grub/build.sh b/grub/build.sh index c37d098..9cb3b7c 100755 --- a/grub/build.sh +++ b/grub/build.sh @@ -22,7 +22,7 @@ cd src sed -i "s/git\:\/\/git\.sv\.gnu\.org\/gnulib/https\:\/\/git.savannah.gnu.org\/git\/gnulib.git/g" ./bootstrap ./bootstrap - ./configure --disable-werror + ./configure --disable-werror --prefix=/usr make -j$(nproc) DESTDIR=$(pwd)/../../rootfs diff --git a/kernel/from_current.sh b/kernel/from_current.sh index 7279262..f0f6adb 100755 --- a/kernel/from_current.sh +++ b/kernel/from_current.sh @@ -20,7 +20,7 @@ then fi cd src # make clean qui supprime le .config -make mrproper +#make mrproper cp ../.config .config make -j$(nproc) bzImage cp arch/x86_64/boot/bzImage vmlinuz diff --git a/libc/.gitignore b/libc/.gitignore new file mode 100644 index 0000000..e831038 --- /dev/null +++ b/libc/.gitignore @@ -0,0 +1 @@ +src \ No newline at end of file diff --git a/libc/build.sh b/libc/build.sh new file mode 100755 index 0000000..1dd6710 --- /dev/null +++ b/libc/build.sh @@ -0,0 +1,20 @@ + +if [ "$EUID" = 0 ] +then echo "Please don't run this as root" + exit +fi + +git clone https://sourceware.org/git/glibc.git src +cd src +git checkout release/2.34/master +git pull +cd - + +mkdir src/build -p +cd src/build +pwd +../configure --sysconfdir=/etc -prefix=/usr --with-headers=/usr/include --with-bugurl=https://bugs.archlinux.org/ --enable-add-ons --enable-bind-now --enable-cet --enable-kernel=4.4 --enable-lock-elision --enable-multi-arch --enable-stack-protector=strong --enable-stackguard-randomization --enable-static-pie --enable-systemtap --disable-profile --disable-werror || exit 1 +make -j$(nproc) || exit 1 +DESTDIR=$(pwd)/../../../rootfs +sudo make install DESTDIR=$(realpath $DESTDIR) +cd - \ No newline at end of file diff --git a/libgcc/.gitignore b/libgcc/.gitignore new file mode 100644 index 0000000..e831038 --- /dev/null +++ b/libgcc/.gitignore @@ -0,0 +1 @@ +src \ No newline at end of file diff --git a/libgcc/build.sh b/libgcc/build.sh new file mode 100755 index 0000000..b4ccc43 --- /dev/null +++ b/libgcc/build.sh @@ -0,0 +1,19 @@ +VER=11.2.0 + +if [ ! -d src ] +then +mkdir src +cd src +curl https://ftp.gnu.org/gnu/gcc/gcc-$VER/gcc-$VER.tar.xz --output gcc.tar.xz -L +tar xvf gcc.tar.xz +mv gcc-$VER/* . +rm gcc.tar.xz gcc-$VER -rf +cd - +fi + +cd src +./configure --prefix=/usr +make -j$(nproc) +DESTDIR=$(pwd)/../../rootfs +sudo make install DESTDIR=$(realpath $DESTDIR) +cd - diff --git a/liblzma/build.sh b/liblzma/build.sh index cedec3c..5c62962 100755 --- a/liblzma/build.sh +++ b/liblzma/build.sh @@ -1,9 +1,15 @@ +if [ "$EUID" = 0 ] +then echo "Please don't run this as root" + exit +fi + git clone https://github.com/kobolabs/liblzma src cd src git pull -./configure +./configure --prefix /usr make -j$(nproc) -cd - -sudo cp src/src/liblzma/.libs/liblzma.so ../rootfs/usr/lib -sudo cp src/src/liblzma/.libs/liblzma.so.5 ../rootfs/usr/lib +DESTDIR=$(pwd)/../../rootfs +sudo make install DESTDIR=$(realpath $DESTDIR) + +cd - \ No newline at end of file diff --git a/libudev/.gitignore b/libudev/.gitignore new file mode 100644 index 0000000..e831038 --- /dev/null +++ b/libudev/.gitignore @@ -0,0 +1 @@ +src \ No newline at end of file diff --git a/libudev/build.sh b/libudev/build.sh new file mode 100755 index 0000000..c18f71a --- /dev/null +++ b/libudev/build.sh @@ -0,0 +1,22 @@ + +VER=3.2.11-pre2 + +if [ ! -f src ] +then +mkdir src +cd src +curl https://github.com/eudev-project/eudev/releases/download/v$VER/eudev-$VER.tar.gz -L --output eudev.tar.gz +tar xvf eudev.tar.gz +mv eudev-$VER/* . +rm eudev.tar.gz +cd - +fi + +cd src +./configure --prefix=/usr --sysconfdir=/etc --enable-add-ons --enable-bind-now --enable-cet --enable-kernel=4.4 --enable-lock-elision --enable-stack-protector=strong --enable-stackguard-randomization --enable-static-pie --enable-systemtap --disable-profile --disable-werror +make -j$(nproc) + +DESTDIR=$(pwd)/../../rootfs + +sudo make install DESTDIR=$(realpath $DESTDIR) +cd - \ No newline at end of file diff --git a/lvm2/.gitignore b/lvm2/.gitignore new file mode 100644 index 0000000..e831038 --- /dev/null +++ b/lvm2/.gitignore @@ -0,0 +1 @@ +src \ No newline at end of file diff --git a/lvm2/build.sh b/lvm2/build.sh new file mode 100755 index 0000000..c13d49b --- /dev/null +++ b/lvm2/build.sh @@ -0,0 +1,12 @@ +VER=4.1 + +git clone https://sourceware.org/git/lvm2.git src + +cd src +git pull +./autogen.sh +./configure +make -j$(nproc) +DESTDIR=$(pwd)/../../rootfs +sudo make install DESTDIR=$(realpath $DESTDIR) +cd - \ No newline at end of file diff --git a/nodejs/build.sh b/nodejs/build.sh index aee8437..48c7a7b 100755 --- a/nodejs/build.sh +++ b/nodejs/build.sh @@ -18,7 +18,7 @@ cd - fi cd src/node-$VERSION -./configure || exit 1 +./configure --prefix=/usr || exit 1 make -j$(nproc) || exit 1 cd - diff --git a/rootfs overrides/boot/grub/grub.cfg b/rootfs overrides/boot/grub/grub.cfg new file mode 100644 index 0000000..02c77f0 --- /dev/null +++ b/rootfs overrides/boot/grub/grub.cfg @@ -0,0 +1,98 @@ +# +# DO NOT EDIT THIS FILE +# +# It is automatically generated by grub-mkconfig using templates +# from /etc/grub.d and settings from /etc/default/grub +# + +### BEGIN /etc/grub.d/00_header ### +insmod part_gpt +insmod part_msdos +if [ -s $prefix/grubenv ]; then + load_env +fi +if [ "${next_entry}" ] ; then + set default="${next_entry}" + set next_entry= + save_env next_entry + set boot_once=true +else + set default="${saved_entry}" +fi + +if [ x"${feature_menuentry_id}" = xy ]; then + menuentry_id_option="--id" +else + menuentry_id_option="" +fi + +export menuentry_id_option + +if [ "${prev_saved_entry}" ]; then + set saved_entry="${prev_saved_entry}" + save_env saved_entry + set prev_saved_entry= + save_env prev_saved_entry + set boot_once=true +fi + +function savedefault { + if [ -z "${boot_once}" ]; then + saved_entry="${chosen}" + save_env saved_entry + fi +} + +function load_video { + if [ x$feature_all_video_module = xy ]; then + insmod all_video + else + insmod efi_gop + insmod efi_uga + insmod ieee1275_fb + insmod vbe + insmod vga + insmod video_bochs + insmod video_cirrus + fi +} + +if [ x$feature_default_font_path = xy ] ; then + font=unicode +else +insmod part_gpt +insmod ext2 +search --no-floppy --fs-uuid --set=root c461e81d-f7a8-4d29-a874-f441afe07e45 + font="/usr/share/grub/unicode.pf2" +fi + +if loadfont $font ; then + set gfxmode=auto + load_video + insmod gfxterm + set locale_dir=$prefix/locale + set lang=fr_FR + insmod gettext +fi +terminal_input console +terminal_output gfxterm +insmod part_gpt +insmod ext2 +search --no-floppy --fs-uuid --set=root c461e81d-f7a8-4d29-a874-f441afe07e45 +insmod gfxmenu +loadfont ($root)/usr/share/grub/themes/sleek/DejaVuSans-48.pf2 +loadfont ($root)/usr/share/grub/themes/sleek/DejaVuSans-Regular-14.pf2 +loadfont ($root)/usr/share/grub/themes/sleek/DejaVuSans-Regular-16.pf2 +loadfont ($root)/usr/share/grub/themes/sleek/terminus-14.pf2 +loadfont ($root)/usr/share/grub/themes/sleek/terminus-16.pf2 +insmod png +set theme=($root)/usr/share/grub/themes/sleek/theme.txt +export theme +if [ x$feature_timeout_style = xy ] ; then + set timeout_style=menu + set timeout=1 +# Fallback normal timeout code in case the timeout_style feature is +# unavailable. +else + set timeout=1 +fi diff --git a/rootfs overrides/etc/ld.so.conf b/rootfs overrides/etc/ld.so.conf new file mode 100644 index 0000000..98bbf52 --- /dev/null +++ b/rootfs overrides/etc/ld.so.conf @@ -0,0 +1,7 @@ +# Dynamic linker/loader configuration. +# See ld.so(8) and ldconfig(8) for details. + +/lib +/usr/local/lib +/usr/local/lib64 +/usr/lib32 \ No newline at end of file diff --git a/rootfs overrides/usr/lib/sheebr/environment.js b/rootfs overrides/usr/lib/sheebr/environment.js index 2da24cc..35d7aaf 100644 --- a/rootfs overrides/usr/lib/sheebr/environment.js +++ b/rootfs overrides/usr/lib/sheebr/environment.js @@ -1,5 +1,5 @@ let environment = { - path: ["/usr/bin", "/usr/lib/sheebr", "/usr/local/bin"], + path: ["/usr/bin", "/usr/lib/sheebr", "/usr/local/bin", "/usr/local/sbin/"], ls_color: JSON.stringify({ di: [01, 34], ln: [01, 36],