انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => برنامه‌سازی => نویسنده: Soroosh82 در 02 آبان 1393، 12:12 ب‌ظ

عنوان: شروع LFS
ارسال شده توسط: 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
ارسال شده توسط: Soroosh82 در 02 آبان 1393، 03:59 ب‌ظ
من در این پست میخوام یاد بدم که چجوری سیستم رو واسه 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
عنوان: پاسخ : شروع LFS
ارسال شده توسط: Soroosh82 در 03 آبان 1393، 08:22 ب‌ظ
در این پست میخوایم 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
عنوان: پاسخ : شروع LFS
ارسال شده توسط: Soroosh82 در 12 آبان 1393، 10:43 ق‌ظ
در این پست می خوایم 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
عنوان: پاسخ : شروع LFS
ارسال شده توسط: Soroosh82 در 13 آبان 1393، 11:45 ق‌ظ
سلام در این پست میخوایم 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 بسته رو کامپایل و نصب میکنیم
عنوان: پاسخ : شروع LFS
ارسال شده توسط: alireza.crs در 13 آبان 1393، 05:51 ب‌ظ
عذر میخوام میپرم وسط آموزشت ولی واقعا میخوای برا هر بسته یه پست بذاری؟
عنوان: پاسخ : شروع LFS
ارسال شده توسط: Soroosh82 در 13 آبان 1393، 08:38 ب‌ظ
عذر میخوام میپرم وسط آموزشت ولی واقعا میخوای برا هر بسته یه پست بذاری؟

خب میگی چیکار کنم پست بعدی سه تا بسته بزارم خوبه
عنوان: پاسخ : شروع LFS
ارسال شده توسط: ٍاحسان ترکم در 13 آبان 1393، 11:39 ب‌ظ
عذر میخوام میپرم وسط آموزشت ولی واقعا میخوای برا هر بسته یه پست بذاری؟

خب میگی چیکار کنم پست بعدی سه تا بسته بزارم خوبه

تو ویکی بنویس یا ویکی اینجا یا خواستی تو ویکی لینوکس ریویو ینویس. اینطوری دستت بازتره، تا اینکه هی پشت سر هم اینجا پست بزرای. بعد آدرسش توی ویکی رو بزار این جا. بهتر نیست؟
عنوان: پاسخ : شروع LFS
ارسال شده توسط: alireza.crs در 14 آبان 1393، 05:24 ب‌ظ
عذر میخوام میپرم وسط آموزشت ولی واقعا میخوای برا هر بسته یه پست بذاری؟

خب میگی چیکار کنم پست بعدی سه تا بسته بزارم خوبه
ناراحت نشو باو اصن برا هر بسته دوتا پست بذار!من فقط گفتم بیشتر از حدود ۷۰ بسته اس بهتره مثلا تو ۱۰ پست تمومش کنی .
هرکاری دلت میخواد بکن فقط اموزش رو ادامه بده.کار شما خیلی ارزش داره که میای اطلاعاتت رو به اشتراک میذاری  \\:D/
موفق باشین
عنوان: پاسخ : شروع LFS
ارسال شده توسط: Soroosh82 در 15 آبان 1393، 11:20 ق‌ظ
نقل‌قول
ناراحت نشو باو اصن برا هر بسته دوتا پست بذار!من فقط گفتم بیشتر از حدود ۷۰ بسته اس بهتره مثلا تو ۱۰ پست تمومش کنی .
هرکاری دلت میخواد بکن فقط اموزش رو ادامه بده.کار شما خیلی ارزش داره که میای اطلاعاتت رو به اشتراک میذاری  \\:D/
موفق باشین
اصلا ناراحت نشدم.
دارم تو libreOffice مینویسم که بعد بزارم نو ویکی. چون مطلب زیاده یکم وقت میگیره. خب تا جایی که نوشتم رو حالا میزارم.
عنوان: پاسخ : شروع LFS
ارسال شده توسط: Soroosh82 در 15 آبان 1393، 11:23 ق‌ظ
در اینجا می خوایم 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 کامپایل و نصب می کنیم.
عنوان: پاسخ : شروع LFS
ارسال شده توسط: Soroosh82 در 15 آبان 1393، 11:25 ق‌ظ
اول بسته  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
عنوان: پاسخ : شروع LFS
ارسال شده توسط: Soroosh82 در 15 آبان 1393، 11:28 ق‌ظ
بسته 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
عنوان: پاسخ : شروع LFS
ارسال شده توسط: Soroosh82 در 15 آبان 1393، 11:37 ق‌ظ
تو این پست مخوایم 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)
عنوان: پاسخ : شروع LFS
ارسال شده توسط: Soroosh82 در 15 آبان 1393، 12:32 ب‌ظ
تو این پست مخوایم  DejaGNU و Check کامپایل و نصب کنیم

اول DejaGNU رو اکسترات کنید و وارد پوشه مربوطه بشید

با این دستورات هم نصبش کنید

./configure --prefix=/tools
make install
make check

حالا Check اکسترات کنید و وارد پوشه مربوطه بشید.

با این دستورات هم نصبش کنید

PKG_CONFIG= ./configure --prefix=/tools
make
make check
make install
عنوان: پاسخ : شروع LFS
ارسال شده توسط: Soroosh82 در 15 آبان 1393، 03:41 ب‌ظ
تو این پست میخوایم  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
عنوان: پاسخ : شروع LFS
ارسال شده توسط: Soroosh82 در 15 آبان 1393، 03:55 ب‌ظ
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




ببخشید اگه کم توضیع میدم.چون تعداد بسته ها زیاده (حدود ۱۰۰تا)و اگه واسه هر بسته بخوام توضیخ بدم تا ۵۰ سال دیگه هم آموزش تموم نمیشه :)
عنوان: پاسخ : شروع LFS
ارسال شده توسط: Soroosh82 در 15 آبان 1393، 11:09 ب‌ظ
تو این پست مخوایم 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
عنوان: پاسخ : شروع LFS
ارسال شده توسط: Soroosh82 در 16 آبان 1393، 05:25 ب‌ظ
تو این پست میخوایم 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
ارسال شده توسط: دانیال بهزادی در 16 آبان 1393، 05:33 ب‌ظ
سلام من یه مدته شروع به خوندن LFS کردم گفتم اینجا هم یه تاپیک بزنم و برای دوستانی که به ساخت توزیع لینوکس مستقل علافه دارند و حوصله خوندن این کتاب رو ندارند و یا انگلیسی شون خوب نیست بدرد بخوره.
دستت درد نکنه. ولی این کتاب قبلاً این‌جا ترجمه شده: https://launchpad.net/persianlfs
عنوان: پاسخ : شروع LFS
ارسال شده توسط: Soroosh82 در 16 آبان 1393، 05:39 ب‌ظ
سلام من یه مدته شروع به خوندن LFS کردم گفتم اینجا هم یه تاپیک بزنم و برای دوستانی که به ساخت توزیع لینوکس مستقل علافه دارند و حوصله خوندن این کتاب رو ندارند و یا انگلیسی شون خوب نیست بدرد بخوره.
دستت درد نکنه. ولی این کتاب قبلاً این‌جا ترجمه شده: https://launchpad.net/persianlfs

نسخه قدیمی این کتاب ترجمه شده فکر کنم 7.1 باشه. من نسخه 7.6 رو خوندم و اینجا واسش تاپیک کردم.