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

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: شروع LFS  (دفعات بازدید: 5387 بار)

0 کاربر و 2 مهمان درحال مشاهده موضوع.

آفلاین Soroosh82

  • Full Member
  • *
  • ارسال: 103
  • جنسیت : پسر
    • تکپارس
شروع LFS
« : 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 /
بقیه اش رو تو پست بعدی میگم. اگه هم مشکلی داشتید تو همین پست بگید

آفلاین Soroosh82

  • Full Member
  • *
  • ارسال: 103
  • جنسیت : پسر
    • تکپارس
پاسخ : شروع LFS
« پاسخ #1 : 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
« آخرین ویرایش: 02 آبان 1393، 04:03 ب‌ظ توسط Tanzadeh82 »

آفلاین Soroosh82

  • Full Member
  • *
  • ارسال: 103
  • جنسیت : پسر
    • تکپارس
پاسخ : شروع LFS
« پاسخ #2 : 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

آفلاین Soroosh82

  • Full Member
  • *
  • ارسال: 103
  • جنسیت : پسر
    • تکپارس
پاسخ : شروع LFS
« پاسخ #3 : 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

آفلاین Soroosh82

  • Full Member
  • *
  • ارسال: 103
  • جنسیت : پسر
    • تکپارس
پاسخ : شروع LFS
« پاسخ #4 : 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 بسته رو کامپایل و نصب میکنیم

آفلاین alireza.crs

  • Sr. Member
  • *
  • ارسال: 491
  • جنسیت : پسر
پاسخ : شروع LFS
« پاسخ #5 : 13 آبان 1393، 05:51 ب‌ظ »
عذر میخوام میپرم وسط آموزشت ولی واقعا میخوای برا هر بسته یه پست بذاری؟

آفلاین Soroosh82

  • Full Member
  • *
  • ارسال: 103
  • جنسیت : پسر
    • تکپارس
پاسخ : شروع LFS
« پاسخ #6 : 13 آبان 1393، 08:38 ب‌ظ »
عذر میخوام میپرم وسط آموزشت ولی واقعا میخوای برا هر بسته یه پست بذاری؟

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

آفلاین ٍاحسان ترکم

  • High Hero Member
  • *
  • ارسال: 1039
  • جنسیت : پسر
  • Open your source, Open your mind
پاسخ : شروع LFS
« پاسخ #7 : 13 آبان 1393، 11:39 ب‌ظ »
عذر میخوام میپرم وسط آموزشت ولی واقعا میخوای برا هر بسته یه پست بذاری؟

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

تو ویکی بنویس یا ویکی اینجا یا خواستی تو ویکی لینوکس ریویو ینویس. اینطوری دستت بازتره، تا اینکه هی پشت سر هم اینجا پست بزرای. بعد آدرسش توی ویکی رو بزار این جا. بهتر نیست؟
بین نرم‌افزار open source و نرم‌افزارهای Free Software تفاوت در روش تبلیغ و گرایش‌های عرضه‌كنندگان آن‌ها نهفته است.
در واقع كاركرد شما به عنوان عرضه كننده نرم‌افزار تفاوتی نمی‌كند،



آفلاین alireza.crs

  • Sr. Member
  • *
  • ارسال: 491
  • جنسیت : پسر
پاسخ : شروع LFS
« پاسخ #8 : 14 آبان 1393، 05:24 ب‌ظ »
عذر میخوام میپرم وسط آموزشت ولی واقعا میخوای برا هر بسته یه پست بذاری؟

خب میگی چیکار کنم پست بعدی سه تا بسته بزارم خوبه
ناراحت نشو باو اصن برا هر بسته دوتا پست بذار!من فقط گفتم بیشتر از حدود ۷۰ بسته اس بهتره مثلا تو ۱۰ پست تمومش کنی .
هرکاری دلت میخواد بکن فقط اموزش رو ادامه بده.کار شما خیلی ارزش داره که میای اطلاعاتت رو به اشتراک میذاری  \\:D/
موفق باشین

آفلاین Soroosh82

  • Full Member
  • *
  • ارسال: 103
  • جنسیت : پسر
    • تکپارس
پاسخ : شروع LFS
« پاسخ #9 : 15 آبان 1393، 11:20 ق‌ظ »
نقل‌قول
ناراحت نشو باو اصن برا هر بسته دوتا پست بذار!من فقط گفتم بیشتر از حدود ۷۰ بسته اس بهتره مثلا تو ۱۰ پست تمومش کنی .
هرکاری دلت میخواد بکن فقط اموزش رو ادامه بده.کار شما خیلی ارزش داره که میای اطلاعاتت رو به اشتراک میذاری  \\:D/
موفق باشین
اصلا ناراحت نشدم.
دارم تو libreOffice مینویسم که بعد بزارم نو ویکی. چون مطلب زیاده یکم وقت میگیره. خب تا جایی که نوشتم رو حالا میزارم.

آفلاین Soroosh82

  • Full Member
  • *
  • ارسال: 103
  • جنسیت : پسر
    • تکپارس
پاسخ : شروع LFS
« پاسخ #10 : 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 کامپایل و نصب می کنیم.

آفلاین Soroosh82

  • Full Member
  • *
  • ارسال: 103
  • جنسیت : پسر
    • تکپارس
پاسخ : شروع LFS
« پاسخ #11 : 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
« آخرین ویرایش: 15 آبان 1393، 11:29 ق‌ظ توسط Tanzadeh82 »

آفلاین Soroosh82

  • Full Member
  • *
  • ارسال: 103
  • جنسیت : پسر
    • تکپارس
پاسخ : شروع LFS
« پاسخ #12 : 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

آفلاین Soroosh82

  • Full Member
  • *
  • ارسال: 103
  • جنسیت : پسر
    • تکپارس
پاسخ : شروع LFS
« پاسخ #13 : 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
« آخرین ویرایش: 15 آبان 1393، 11:41 ق‌ظ توسط Tanzadeh82 »

آفلاین Soroosh82

  • Full Member
  • *
  • ارسال: 103
  • جنسیت : پسر
    • تکپارس
پاسخ : شروع LFS
« پاسخ #14 : 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