Jump to content

LFS: Setup Host System: Difference between revisions

From Haidhi Wiki
Created page with "Untuk membuat Linux sendiri menggunakan LFS, kita tetap memerlukan Host OS. Di sini saya menggunakan Ubuntu Server. Selain itu ada juga beberapa dependencies yang dibutuhkan. = Check Dependencies = <syntaxhighlight lang=bash> cat > version-check.sh << "EOF" #!/bin/bash # A script to list version numbers of critical development tools # If you have tools installed in other directories, adjust PATH here AND # in ~lfs/.bashrc (section 4.4) as well. LC_ALL=C PATH=/usr/bin..."
 
No edit summary
 
(One intermediate revision by the same user not shown)
Line 100: Line 100:


Contoh Output:  
Contoh Output:  
<syntaxhighlight>
<syntaxhighlight lang=bash>
OK:    Coreutils 9.4    >= 8.1
OK:    Coreutils 9.4    >= 8.1
OK:    Bash      5.2.21 >= 3.2
OK:    Bash      5.2.21 >= 3.2
Line 145: Line 145:
bash
bash
</syntaxhighlight>
</syntaxhighlight>
= References =
https://www.linuxfromscratch.org/lfs/view/stable/chapter02/hostreqs.html

Latest revision as of 04:27, 13 April 2025

Untuk membuat Linux sendiri menggunakan LFS, kita tetap memerlukan Host OS. Di sini saya menggunakan Ubuntu Server. Selain itu ada juga beberapa dependencies yang dibutuhkan.

Check Dependencies

cat > version-check.sh << "EOF"
#!/bin/bash
# A script to list version numbers of critical development tools

# If you have tools installed in other directories, adjust PATH here AND
# in ~lfs/.bashrc (section 4.4) as well.

LC_ALL=C 
PATH=/usr/bin:/bin

bail() { echo "FATAL: $1"; exit 1; }
grep --version > /dev/null 2> /dev/null || bail "grep does not work"
sed '' /dev/null || bail "sed does not work"
sort   /dev/null || bail "sort does not work"

ver_check()
{
   if ! type -p $2 &>/dev/null
   then 
     echo "ERROR: Cannot find $2 ($1)"; return 1; 
   fi
   v=$($2 --version 2>&1 | grep -E -o '[0-9]+\.[0-9\.]+[a-z]*' | head -n1)
   if printf '%s\n' $3 $v | sort --version-sort --check &>/dev/null
   then 
     printf "OK:    %-9s %-6s >= $3\n" "$1" "$v"; return 0;
   else 
     printf "ERROR: %-9s is TOO OLD ($3 or later required)\n" "$1"; 
     return 1; 
   fi
}

ver_kernel()
{
   kver=$(uname -r | grep -E -o '^[0-9\.]+')
   if printf '%s\n' $1 $kver | sort --version-sort --check &>/dev/null
   then 
     printf "OK:    Linux Kernel $kver >= $1\n"; return 0;
   else 
     printf "ERROR: Linux Kernel ($kver) is TOO OLD ($1 or later required)\n" "$kver"; 
     return 1; 
   fi
}

# Coreutils first because --version-sort needs Coreutils >= 7.0
ver_check Coreutils      sort     8.1 || bail "Coreutils too old, stop"
ver_check Bash           bash     3.2
ver_check Binutils       ld       2.13.1
ver_check Bison          bison    2.7
ver_check Diffutils      diff     2.8.1
ver_check Findutils      find     4.2.31
ver_check Gawk           gawk     4.0.1
ver_check GCC            gcc      5.2
ver_check "GCC (C++)"    g++      5.2
ver_check Grep           grep     2.5.1a
ver_check Gzip           gzip     1.3.12
ver_check M4             m4       1.4.10
ver_check Make           make     4.0
ver_check Patch          patch    2.5.4
ver_check Perl           perl     5.8.8
ver_check Python         python3  3.4
ver_check Sed            sed      4.1.5
ver_check Tar            tar      1.22
ver_check Texinfo        texi2any 5.0
ver_check Xz             xz       5.0.0
ver_kernel 5.4 

if mount | grep -q 'devpts on /dev/pts' && [ -e /dev/ptmx ]
then echo "OK:    Linux Kernel supports UNIX 98 PTY";
else echo "ERROR: Linux Kernel does NOT support UNIX 98 PTY"; fi

alias_check() {
   if $1 --version 2>&1 | grep -qi $2
   then printf "OK:    %-4s is $2\n" "$1";
   else printf "ERROR: %-4s is NOT $2\n" "$1"; fi
}
echo "Aliases:"
alias_check awk GNU
alias_check yacc Bison
alias_check sh Bash

echo "Compiler check:"
if printf "int main(){}" | g++ -x c++ -
then echo "OK:    g++ works";
else echo "ERROR: g++ does NOT work"; fi
rm -f a.out

if [ "$(nproc)" = "" ]; then
   echo "ERROR: nproc is not available or it produces empty output"
else
   echo "OK: nproc reports $(nproc) logical cores are available"
fi
EOF

$ bash version-check.sh

Contoh Output:

OK:    Coreutils 9.4    >= 8.1
OK:    Bash      5.2.21 >= 3.2
OK:    Binutils  2.42   >= 2.13.1
OK:    Bison     3.8.2  >= 2.7
OK:    Diffutils 3.10   >= 2.8.1
OK:    Findutils 4.9.0  >= 4.2.31
OK:    Gawk      5.2.1  >= 4.0.1
OK:    GCC       13.3.0 >= 5.2
OK:    GCC (C++) 13.3.0 >= 5.2
OK:    Grep      3.11   >= 2.5.1a
OK:    Gzip      1.12   >= 1.3.12
OK:    M4        1.4.19 >= 1.4.10
OK:    Make      4.3    >= 4.0
OK:    Patch     2.7.6  >= 2.5.4
OK:    Perl      5.38.2 >= 5.8.8
OK:    Python    3.12.3 >= 3.4
OK:    Sed       4.9    >= 4.1.5
OK:    Tar       1.35   >= 1.22
OK:    Texinfo   7.1    >= 5.0
OK:    Xz        5.4.5  >= 5.0.0
OK:    Linux Kernel 6.8.0 >= 5.4
OK:    Linux Kernel supports UNIX 98 PTY
Aliases:
OK:    awk  is GNU
OK:    yacc is Bison
ERROR: sh   is NOT Bash
Compiler check:
OK:    g++ works
OK: nproc reports 1 logical cores are available

Kalau ada yang error silahkan diinstall. Contoh dalam kasus saya:

sudo apt update && sudo apt install -y \
binutils \
bison \
gcc \
g++ \
m4 \
make \
texinfo \
bison \
bash

References

https://www.linuxfromscratch.org/lfs/view/stable/chapter02/hostreqs.html