انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: Soroosh82 در 02 آبان 1393، 12:12 بظ
-
سلام من یه مدته شروع به خوندن LFS کردم گفتم اینجا هم یه تاپیک بزنم و برای دوستانی که به ساخت توزیع لینوکس مستقل علافه دارند و حوصله خوندن این کتاب رو ندارند و یا انگلیسی شون خوب نیست بدرد بخوره.
اول نرم افزار های مورد نیاز رو نصب میکنیم و بعضی از از جیز ها رو کانفیگ میکنیم
sudo dpkg-reconfigure dash
sudo apt-get install gawk
sudo apt-get install bison
بعد یک پارتشین روت جدید میسازیم و کار های اولیه رو انجام میدم
su
mkdir /mnt/lfs
export LS=/mnt/lfs
mkfs.ext4 /dev/yyy
mount -v -t ext4 /dev/yyy $LFS
mkdir $LFS/sources
mkdir $LFS/tools
mkdir $LFS/usr
ln -sv $LFS/tools /
بقیه اش رو تو پست بعدی میگم. اگه هم مشکلی داشتید تو همین پست بگید
-
من در این پست میخوام یاد بدم که چجوری سیستم رو واسه LFS آماده کنیم و آماده کردن توزیع لینوکس واسه کامپایل اول ترمینال رو باز میکنیم و به عنوان کاربر روت وارد میشیم و دستورات زیر رو واردم میکنیم
در اول کار فقط یه چیزی رو بگم اگه شما میخواید یه توزیع گنو/لینوکس ۳۲ بیت بسازید با از توزیع لینوکس ۳۲ بیت استفاده کنید برای ۶۴ بیت هم به همین شکل
cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF
و بعد
cat > ~/.bashrc << "EOF"
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
EOF
در آخر دستور زیر رو هم وارد میکنیم
source ~/.bash_profile
سیستم برای کامپایل LFS آماده شد خالا میخوایم اولین نرم افزار رو کامپایل و نصب کنیم
بسته ها رو از سایت LFS دانلود کنید و داخل پوشه sources کپی کنید
cd $LFS/sources
tar -xjvf binutils-2.24.tar.bz2
cd binutils-2.24
mkdir -v ../binutils-build
cd ../binutils-build
این دستورات رو کپی کنید
../binutils-2.24/configure \
--prefix=/tools \
--with-sysroot=$LFS \
--with-lib-path=/tools/lib \
--target=$LFS_TGT \
--disable-nls \
--disable-werror
اگه میخواید دقیق بدونید این دستورات چیکار میکنند باید کتاب رو بخونید.
بسته رو کامپایل میکنیم
make
اگر شما از توزیع گنو/لینوکس ۶۴ بیت استفاده میکنید دستور زیر رو هم وارد کنید تا نسخه ۶۴ بیت این بسته نصب بشه
case $(uname -m) in
x86_64) mkdir -v /tools/lib && ln -sv lib /tools/lib64 ;;
esac
و بعد بسته رو نصب میکنیم
make install
-
در این پست میخوایم Gcc رو کامپایل کنیم نیازمندی های Gcc MPFR و GMP و MPC ولی ما نمیخوایم بسته های مورد نیاز رو نصب کنیم پس بسته هار رو در پوشه ای که Gcc اکسترات شده اکسترات میکنیم.
tar -xvf gcc-4.9.1.tar.bz2
cd gcc-4.9.1
tar -xf ../mpfr-3.1.2.tar.xz
mv -v mpfr-3.1.2 mpfr
tar -xf ../gmp-6.0.0a.tar.xz
mv -v gmp-6.0.0 gmp
tar -xf ../mpc-1.0.2.tar.gz
mv -v mpc-1.0.2 mpc
و بعد دستور های زیر را وارد میکنیم
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
sed -i '/k prot/agcc_cv_libc_provides_ssp=yes' gcc/configure
sed -i 's/if \((code.*))\)/if (\1 \&\& \!DEBUG_INSN_P (insn))/' gcc/sched-deps.c
gcc باید در یک پوشه جدا از سورس کد کامپایل بشه به همین دلیل یک پوشه جدید میسازیم.
mkdir -v ../gcc-build
cd ../gcc-build
و در دستور زیر رو وارد میکنیم تا Makefile ساخته بشه
../gcc-4.9.1/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-libatomic \
--disable-libgomp \
--disable-libitm \
--disable-libquadmath \
--disable-libsanitizer \
--disable-libssp \
--disable-libvtv \
--disable-libcilkrts \
--disable-libstdc++-v3 \
--enable-languages=c,c++
و در آخر بسته رو کامپایل و نصب میکنیم
make
make install
-
در این پست می خوایم Linux API Headers نصب کنیم که در بسته linux-3.16.2.tar.xz این بسته همون هسته لینوکس است ولی ما هسته رو نصب نمیکنیم و API های مورد نیاز هسته رو نصب میکنیم.
با دستورات زیر این API ها رو کامپایل و نصب میکنیم
make mrproper
make INSTALL_HDR_PATH=dest headers_install
cp -rv dest/include/* /tools/include
-
سلام در این پست میخوایم Glibc رو کامپایل و نصب کنیم اول از همه اون اکسترات میکنیم و وارد پوشه اون میشه
اول دستور زیر رو بزنید
if [ ! -r /usr/include/rpc/types.h ]; then
su -c 'mkdir -pv /usr/include/rpc'
su -c 'cp -v sunrpc/rpc/*.h /usr/include/rpc'
fi
Glibc باید در یک پوشه جدا از کامپایل بشه پس یه پوشه جدید می سازیم و تغییر دایرکتوری مدیم
mkdir -v ../glibc-build
cd ../glibc-build
../glibc-2.20/configure \
--prefix=/tools \
--host=$LFS_TGT \
--build=$(../glibc-2.20/scripts/config.guess) \
--disable-profile \
--enable-kernel=2.6.32 \
--with-headers=/tools/include \
libc_cv_forced_unwind=yes \
libc_cv_ctors_header=yes \
libc_cv_c_cleanup=yes
حالا با make و make install بسته رو کامپایل و نصب میکنیم
-
عذر میخوام میپرم وسط آموزشت ولی واقعا میخوای برا هر بسته یه پست بذاری؟
-
عذر میخوام میپرم وسط آموزشت ولی واقعا میخوای برا هر بسته یه پست بذاری؟
خب میگی چیکار کنم پست بعدی سه تا بسته بزارم خوبه
-
عذر میخوام میپرم وسط آموزشت ولی واقعا میخوای برا هر بسته یه پست بذاری؟
خب میگی چیکار کنم پست بعدی سه تا بسته بزارم خوبه
تو ویکی بنویس یا ویکی اینجا یا خواستی تو ویکی لینوکس ریویو ینویس. اینطوری دستت بازتره، تا اینکه هی پشت سر هم اینجا پست بزرای. بعد آدرسش توی ویکی رو بزار این جا. بهتر نیست؟
-
عذر میخوام میپرم وسط آموزشت ولی واقعا میخوای برا هر بسته یه پست بذاری؟
خب میگی چیکار کنم پست بعدی سه تا بسته بزارم خوبه
ناراحت نشو باو اصن برا هر بسته دوتا پست بذار!من فقط گفتم بیشتر از حدود ۷۰ بسته اس بهتره مثلا تو ۱۰ پست تمومش کنی .
هرکاری دلت میخواد بکن فقط اموزش رو ادامه بده.کار شما خیلی ارزش داره که میای اطلاعاتت رو به اشتراک میذاری \\:D/
موفق باشین
-
ناراحت نشو باو اصن برا هر بسته دوتا پست بذار!من فقط گفتم بیشتر از حدود ۷۰ بسته اس بهتره مثلا تو ۱۰ پست تمومش کنی .
هرکاری دلت میخواد بکن فقط اموزش رو ادامه بده.کار شما خیلی ارزش داره که میای اطلاعاتت رو به اشتراک میذاری \\:D/
موفق باشین
اصلا ناراحت نشدم.
دارم تو libreOffice مینویسم که بعد بزارم نو ویکی. چون مطلب زیاده یکم وقت میگیره. خب تا جایی که نوشتم رو حالا میزارم.
-
در اینجا می خوایم Libstdc++-4.9.1 کامپایل و نصب کنیم که بخشی از gcc است. پس باید بسته gcc رو اکسترات کنید. و وارد پوشه مربوطه شوید.
mkdir -pv ../gcc-build
cd ../gcc-build
Libstdc++-4.9.1 رو برای کامپایل آماده می کنیم.
../gcc-4.9.1/libstdc++-v3/configure \
--host=$LFS_TGT \
--prefix=/tools \
--disable-multilib \
--disable-shared \
--disable-nls \
--disable-libstdcxx-threads \
--disable-libstdcxx-pch \
--with-gxx-include-dir=/tools/$LFS_TGT/include/c++/4.9.1
و اونو با دستور make و make install کامپایل و نصب می کنیم.
-
اول بسته binutils اکسترات میکنیم و با ترمینال وارد پوشه مربوطه میشویم.
mkdir -v ../binutils-build
cd ../binutils-build
binutils برای کامپایل آماده میکنیم
CC=$LFS_TGT-gcc \
AR=$LFS_TGT-ar \
RANLIB=$LFS_TGT-ranlib \
../binutils-2.24/configure \
--prefix=/tools \
--disable-nls \
--disable-werror \
--with-lib-path=/tools/lib \
--with-sysroot
اونو کامپایل و نصب میکنیم
make
make install
make -C ld clean
make -C ld LIB_PATH=/usr/lib:/lib
cp -v ld/ld-new /tools/bin
-
بسته GCC-4.9.1 اکسترات میکنیم و با ترمینال وارد پوشه مربوطه شوید و دستورات زیر را وارد کنید.
cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \
`dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/include-fixed/limits.h
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
tar -xf ../mpfr-3.1.2.tar.xz
mv -v mpfr-3.1.2 mpfr
tar -xf ../gmp-6.0.0a.tar.xz
mv -v gmp-6.0.0 gmp
tar -xf ../mpc-1.0.2.tar.gz
mv -v mpc-1.0.2 mpc
sed -i 's/if \((code.*))\)/if (\1 \&\& \!DEBUG_INSN_P (insn))/' gcc/sched-deps.c
mkdir -v ../gcc-build
cd ../gcc-build
CC=$LFS_TGT-gcc \
CXX=$LFS_TGT-g++ \
AR=$LFS_TGT-ar \
RANLIB=$LFS_TGT-ranlib \
../gcc-4.9.1/configure \
--prefix=/tools \
--with-local-prefix=/tools \
--with-native-system-header-dir=/tools/include \
--enable-languages=c,c++ \
--disable-libstdcxx-pch \
--disable-multilib \
--disable-bootstrap \
--disable-libgomp
make
make install
ln -sv gcc /tools/bin/cc
-
تو این پست مخوایم TCL و Expect-5.45 کامایل و نصب کنیم.
بسته رو اکسترات میکنیم و وارد پوشه مربوطه میشیم.
این دستورات رو وارد کنید تا این بسته کامپایل و نصب بشه.
cd unix
/configure --prefix=/tools
make
TZ=UTC make test
make install
chmod -v u+w /tools/lib/libtcl8.6.so
make install-private-headers
ln -sv tclsh8.6 /tools/bin/tclsh
خب این تموم شد حالا Expect-5.45 این رو اکسترات کنید و وارد پوشه مربوطه بشید
cp -v configure{,.orig}
sed 's:/usr/local/bin:/bin:' configure.orig > configure
./configure --prefix=/tools \
--with-tcl=/tools/lib \
--with-tclinclude=/tools/include
make
make test
make SCRIPTS="" install
تو انجمن برنامه نویس ساخت توزیع لینوکس برپایه اوبونتو هم گذاشتم اگه حوصله کامپایل کردن رو ندارید.
http://barnamenevis.org/showthread.php?468758-%D8%B3%D8%A7%D8%AE%D8%AA-%D8%AA%D9%88%D8%B2%DB%8C%D8%B9-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-%D8%A8%D8%B1%D9%BE%D8%A7%DB%8C%D9%87-%D8%A7%D9%88%D8%A8%D9%88%D9%86%D8%AA%D9%88&p=2128383
(http://barnamenevis.org/showthread.php?468758-%D8%B3%D8%A7%D8%AE%D8%AA-%D8%AA%D9%88%D8%B2%DB%8C%D8%B9-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-%D8%A8%D8%B1%D9%BE%D8%A7%DB%8C%D9%87-%D8%A7%D9%88%D8%A8%D9%88%D9%86%D8%AA%D9%88&p=2128383)
-
تو این پست مخوایم DejaGNU و Check کامپایل و نصب کنیم
اول DejaGNU رو اکسترات کنید و وارد پوشه مربوطه بشید
با این دستورات هم نصبش کنید
./configure --prefix=/tools
make install
make check
حالا Check اکسترات کنید و وارد پوشه مربوطه بشید.
با این دستورات هم نصبش کنید
PKG_CONFIG= ./configure --prefix=/tools
make
make check
make install
-
تو این پست میخوایم Ncurses , Bash , Bzip2 , Coreutils رو کامپایل و نصب کنیم.
خب شروع میکنیم اول بسته Ncurses اکسترات میکنیم. و وارد پوشه مربوطه میشیم.
بسته رو برای کامپایل آماده میکنیم.
./configure --prefix=/tools \
--with-shared \
--without-debug \
--without-ada \
--enable-widec \
--enable-overwrite
حالا با دستور make و make install بسته رو کامپایل و نصب میکنیم.
Bash
./configure --prefix=/tools --without-bash-malloc
make
make tests
make install
ln -sv bash /tools/bin/sh
Bzip2
make
make PREFIX=/tools install
Coreutils-8.23
./configure --prefix=/tools --enable-install-program=hostname
make
make RUN_EXPENSIVE_TESTS=yes check
make install
-
Diffutils File Findutils
این بسته ها فکر نکنم توضیع لازم داشته باشه و اکثر دوستان میدونن این دستورات چی کار میکنه
Diffutils
./configure --prefix=/tools
make
make check
make install
File
./configure --prefix=/tools
make
make check
make install
Findutils
./configure --prefix=/tools
make
make check
make install
ببخشید اگه کم توضیع میدم.چون تعداد بسته ها زیاده (حدود ۱۰۰تا)و اگه واسه هر بسته بخوام توضیخ بدم تا ۵۰ سال دیگه هم آموزش تموم نمیشه :)
-
تو این پست مخوایم Gawk Gettext Grep رو کامپایل و نصب کنیم
اول از Gawk شروع میکنیم
Gawk برای نصب اماده میکنیم:
./configure --prefix=/tools
و با دستورات زیر نصب میکنیم
make
make check
make install
Gettext
Gettext برای نصب آماده میکنیم
cd gettext-tools
EMACS="no" ./configure --prefix=/tools --disable-shared
کامپایلش میکنیم
make -C gnulib-lib
make -C src msgfmt
make -C src msgmerge
make -C src xgettext
و در آخر نصبش میکنیم:
cp -v src/{msgfmt,msgmerge,xgettext} /tools/bin
Grep
Grep برای نصب آماده میکنیم:
./configure --prefix=/tools
و با این دستورات کامپایل و نصب میکنیم:
make
make check
make install
-
تو این پست میخوایم Gzip , M4 ,Make Patch و Perl رو کامپایل کنیم
خب اول از Gzip شروع میکنیم. توضیع زیاد نمیدم چون فکر کنم اکثر دوستان میدونن این دستورات چی کار میکنند.
./configure --prefix=/tools
make
make check
make install
M4
./configure --prefix=/tools
make
make check
make install
Make
./configure --prefix=/tools --without-guile
make
make check
make install
Patch
./configure --prefix=/tools
make
make check
make install
Prel
Prel رو برای نصب آماده میکنیم:
sh Configure -des -Dprefix=/tools -Dlibs=-lm
make
با این دستورات فایل اجرایی و کتابخانه های Perl رو به پوشه tools کپی کنید.
cp -v perl cpan/podlators/pod2man /tools/bin
mkdir -pv /tools/lib/perl5/5.20.0
cp -Rv lib/* /tools/lib/perl5/5.20.0
-
سلام من یه مدته شروع به خوندن LFS کردم گفتم اینجا هم یه تاپیک بزنم و برای دوستانی که به ساخت توزیع لینوکس مستقل علافه دارند و حوصله خوندن این کتاب رو ندارند و یا انگلیسی شون خوب نیست بدرد بخوره.
دستت درد نکنه. ولی این کتاب قبلاً اینجا ترجمه شده: https://launchpad.net/persianlfs
-
سلام من یه مدته شروع به خوندن LFS کردم گفتم اینجا هم یه تاپیک بزنم و برای دوستانی که به ساخت توزیع لینوکس مستقل علافه دارند و حوصله خوندن این کتاب رو ندارند و یا انگلیسی شون خوب نیست بدرد بخوره.
دستت درد نکنه. ولی این کتاب قبلاً اینجا ترجمه شده: https://launchpad.net/persianlfs
نسخه قدیمی این کتاب ترجمه شده فکر کنم 7.1 باشه. من نسخه 7.6 رو خوندم و اینجا واسش تاپیک کردم.