Skip to content

Instantly share code, notes, and snippets.

@jeek
Created March 3, 2013 06:11
Show Gist options
  • Save jeek/5074860 to your computer and use it in GitHub Desktop.
Save jeek/5074860 to your computer and use it in GitHub Desktop.
The goal here is to build an LFS system by booting a blank VirtualBox guest off an Ubuntu live CD and executing: wget -O - http://wherethisscriptis/smith.sh|sudo bash - work in progress
echo "o
n
p
1
n
w"|sudo fdisk /dev/sda
mke2fs -jv /dev/sda1
export LFS=/mnt/lfs
mkdir -pv /mnt/lfs
mount -v -t ext3 /dev/sda1 /mnt/lfs
mkdir -v /mnt/lfs/sources
chmod -v a+wt /mnt/lfs/sources
echo "http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.xz
http://ftp.gnu.org/gnu/automake/automake-1.13.1.tar.xz
http://ftp.gnu.org/gnu/bash/bash-4.2.tar.gz
http://ftp.gnu.org/gnu/binutils/binutils-2.23.1.tar.bz2
http://ftp.gnu.org/gnu/bison/bison-2.7.tar.xz
http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz
http://sourceforge.net/projects/check/files/check/0.9.9/check-0.9.9.tar.gz
http://ftp.gnu.org/gnu/coreutils/coreutils-8.21.tar.xz
http://ftp.gnu.org/gnu/dejagnu/dejagnu-1.5.tar.gz
http://ftp.gnu.org/gnu/diffutils/diffutils-3.2.tar.gz
http://prdownloads.sourceforge.net/e2fsprogs/e2fsprogs-1.42.7.tar.gz
http://prdownloads.sourceforge.net/expect/expect5.45.tar.gz
ftp://ftp.astron.com/pub/file/file-5.13.tar.gz
http://ftp.gnu.org/gnu/findutils/findutils-4.4.2.tar.gz
http://prdownloads.sourceforge.net/flex/flex-2.5.37.tar.bz2
http://ftp.gnu.org/gnu/gawk/gawk-4.0.2.tar.xz
http://ftp.gnu.org/gnu/gcc/gcc-4.7.2/gcc-4.7.2.tar.bz2
http://ftp.gnu.org/gnu/gdbm/gdbm-1.10.tar.gz
http://ftp.gnu.org/gnu/gettext/gettext-0.18.2.tar.gz
http://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.xz
http://ftp.gnu.org/gnu/grep/grep-2.14.tar.xz
http://ftp.gnu.org/gnu/groff/groff-1.22.2.tar.gz
http://ftp.gnu.org/gnu/grub/grub-2.00.tar.xz
http://ftp.gnu.org/gnu/gzip/gzip-1.5.tar.xz
http://anduin.linuxfromscratch.org/sources/LFS/lfs-packages/conglomeration//iana-etc/iana-etc-2.30.tar.bz2
http://ftp.gnu.org/gnu/inetutils/inetutils-1.9.1.tar.gz
http://www.kernel.org/pub/linux/utils/net/iproute2/iproute2-3.8.0.tar.xz
http://ftp.altlinux.org/pub/people/legion/kbd/kbd-1.15.5.tar.gz
http://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-12.tar.xz
http://www.greenwoodsoftware.com/less/less-451.tar.gz
http://www.linuxfromscratch.org/lfs/downloads/7.3/lfs-bootscripts-20130123.tar.bz2
http://download.savannah.gnu.org/releases/libpipeline/libpipeline-1.2.2.tar.gz
http://ftp.gnu.org/gnu/libtool/libtool-2.4.2.tar.gz
http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.8.1.tar.xz
http://ftp.gnu.org/gnu/m4/m4-1.4.16.tar.bz2
http://ftp.gnu.org/gnu/make/make-3.82.tar.bz2
http://download.savannah.gnu.org/releases/man-db/man-db-2.6.3.tar.xz
http://www.kernel.org/pub/linux/docs/man-pages/man-pages-3.47.tar.xz
ftp://ftp.gnu.org/gnu/ncurses/ncurses-5.9.tar.gz
http://ftp.gnu.org/gnu/patch/patch-2.7.1.tar.xz
http://www.cpan.org/src/5.0/perl-5.16.2.tar.bz2
http://pkgconfig.freedesktop.org/releases/pkg-config-0.28.tar.gz
http://sourceforge.net/projects/procps-ng/files/Production/procps-ng-3.3.6.tar.xz
http://prdownloads.sourceforge.net/psmisc/psmisc-22.20.tar.gz
http://ftp.gnu.org/gnu/readline/readline-6.2.tar.gz
http://ftp.gnu.org/gnu/sed/sed-4.2.2.tar.bz2
http://pkg-shadow.alioth.debian.org/releases/shadow-4.1.5.1.tar.bz2
http://www.infodrom.org/projects/sysklogd/download/sysklogd-1.5.tar.gz
http://download.savannah.gnu.org/releases/sysvinit/sysvinit-2.88dsf.tar.bz2
http://ftp.gnu.org/gnu/tar/tar-1.26.tar.bz2
http://prdownloads.sourceforge.net/tcl/tcl8.6.0-src.tar.gz
http://www.iana.org//time-zones/repository/releases/tzdata2012j.tar.gz
http://ftp.gnu.org/gnu/texinfo/texinfo-5.0.tar.xz
http://www.freedesktop.org/software/systemd/systemd-197.tar.xz
http://anduin.linuxfromscratch.org/sources/other/udev-lfs-197-2.tar.bz2
http://www.kernel.org/pub/linux/utils/util-linux/v2.22/util-linux-2.22.2.tar.xz
ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2
http://tukaani.org/xz/xz-5.0.4.tar.xz
http://www.zlib.net/zlib-1.2.7.tar.bz2
http://www.linuxfromscratch.org/patches/lfs/7.3/bash-4.2-fixes-11.patch
http://www.linuxfromscratch.org/patches/lfs/7.3/binutils-2.23.1-testsuite_fix-1.patch
http://www.linuxfromscratch.org/patches/lfs/7.3/bzip2-1.0.6-install_docs-1.patch
http://www.linuxfromscratch.org/patches/lfs/7.3/coreutils-8.21-i18n-1.patch
http://www.linuxfromscratch.org/patches/lfs/7.3/flex-2.5.37-bison-2.6.1-1.patch
http://www.linuxfromscratch.org/patches/lfs/7.3/kbd-1.15.5-backspace-1.patch
http://www.linuxfromscratch.org/patches/lfs/7.3/make-3.82-upstream_fixes-3.patch
http://www.linuxfromscratch.org/patches/lfs/7.3/perl-5.16.2-libc-1.patch
http://www.linuxfromscratch.org/patches/lfs/7.3/readline-6.2-fixes-1.patch
"|wget -i - -P /mnt/lfs/sources
apt-get -y install bison gawk m4 texinfo
mkdir -v /mnt/lfs/tools
ln -sv /mnt/lfs/tools /
groupadd lfs
useradd -s /bin/bash -g lfs -m -k /dev/null lfs
#passwd lfs
#su - lfs
echo "exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
" > ~lfs/.bash_profile
echo "set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
LFS_TGT=$(uname -m)-lfs-linux-gnu
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL LFS_TGT PATH
" > ~lfs/.bashrc
source ~lfs/.bash_profile
source ~lfs/.bashrc
chown -v -R lfs.lfs /mnt/lfs/tools
chown -v -R lfs.lfs /mnt/lfs/sources
chown lfs.lfs ~lfs/.bash_profile
chown lfs.lfs ~lfs/.bashrc
su lfs -c "mkdir -v /mnt/lfs/sources/binutils-build"
cd /mnt/lfs/sources
su lfs -c "bunzip2 binutils-2.23.1.tar.bz2"
su lfs -c "tar -xvf binutils-2.23.1.tar"
cd binutils-build
su lfs -c "../binutils-2.23.1/configure --prefix=/tools --with-sysroot=/mnt/lfs --with-lib-path=/tools/lib --target=$LFS_TGT --disable-nls --disable-werror"
su lfs -c "make"
case $(uname -m) in
x86_64) mkdir -v /tools/lib && ln -sv lib /tools/lib64 ;;
esac
chown lfs.lfs /tools/lib64
chown lfs.lfs /tools/lib
su lfs -c "make install"
cd ..
su lfs -c "bunzip2 gcc-4.7.2.tar.bz2"
su lfs -c "tar -xvf gcc-4.7.2.tar"
cd gcc-4.7.2
su lfs -c "./contrib/download_prerequisites"
echo "for file in \
\$(find gcc/config -name linux64.h -o -name linux.h -o -name sysv4.h)
do
cp -uv \$file{,.orig}
sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \
-e 's@/usr@/tools@g' \$file.orig > \$file
echo '
#undef STANDARD_STARTFILE_PREFIX_1
#undef STANDARD_STARTFILE_PREFIX_2
#define STANDARD_STARTFILE_PREFIX_1 \"/tools/lib/\"
#define STANDARD_STARTFILE_PREFIX_2 \"\"' >> \$file
touch \$file.orig
done
" > smith2.sh
su lfs -c "bash smith2.sh"
sed -i '/k prot/agcc_cv_libc_provides_ssp=yes' gcc/configure
sed -i 's/BUILD_INFO=info/BUILD_INFO=/' gcc/configure
su lfs -c "mkdir -v ../gcc-build"
cd ../gcc-build
su lfs -c "../gcc-4.7.2/configure --target=$LFS_TGT --prefix=/tools --with-sysroot=$LFS --with-newlib --without-headers --with-local-prefix=/tools --with-native-system-header-dir=/tools/include --disable-nls --disable-shared --disable-multilib --disable-decimal-float --disable-threads --disable-libmudflap --disable-libssp --disable-libgomp --disable-libquadmath --enable-languages=c --with-mpfr-include=$(pwd)/../gcc-4.7.2mpfr/src --with-mpfr-lib=$(pwd)/mpfr/src/.libs"
su lfs -c "make"
su lfs -c "make install"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment