-
با سلام و عرض ادب و احترام.
در اینترنت صفحه وبی که آموزش نصب دبیان از طریق Debootstrap را می داد را دیدم:
https://ianlecorbeau.com/blog/debian-debootstrap-install.html (https://ianlecorbeau.com/blog/debian-debootstrap-install.html)
عکس های مربوط به این نصب ایشان را در این ارسالی و ارسال بعدی گذاشته ام.
علاقهمند شدم که من هم تلاشم را برای نصب Debian GNU/Linux 13.1.0 _Trixie را از طریق روشی که ایشان گفته، بکار ببرم.
چون دوست دارم، این ها را در سیستم اصلی ام اجرا می نمایم و نه در ماشین مجازی.
در ارسال های بعدی کارهایی که در اینباره انجام داده ام و اشکالات و سؤالاتی که با آنها مواجه شده ام را خدمتتان ارسال می نمایم.
-
ادامه عکس ها:
-
سال ۲۰۱۵ یک مقاله با همین موضوع در سایت اوبونتو نیوز نوشته بودم. یادش بخیر.
فایل PDFش رو اگه خواستی برات میفرستم. هرچند از اون سال تا الان یک سری از موارد قطعاً تغییر کرده ولی سر راست و خلاصه هست.
پ.ن: با این روش شما اوبونتو رو هم میتونی نصب کنی. بستگی داره چه مخزنی از توزیعهای برپایهٔ دبیان بهش بدی.
-
ممنون آقای سعیدنژاد از محبتتان، ممنون می شوم که فایل مربوطه را برایم بفرستید.
-
ممنون آقای سعیدنژاد از محبتتان، ممنون می شوم که فایل مربوطه را برایم بفرستید.
خدمت شما
-
خیلی محبت فرمودید.
-
با رخصت و اجازه از استاد عزیزم آقای سعیدنژاد، فعلاً روش Ian LeCorbeau را ادامه می دهم.
مرحله 1)
ابتدا یکی از دبیان های لایو را از لینک زیر دانلود کردم.:
https://cdimage.debian.org/images/release/current-live/amd64/iso-hybrid/ (https://cdimage.debian.org/images/release/current-live/amd64/iso-hybrid/)
من debian-live-13.1.0-amd64-cinnamon.iso را انتخاب کردم.
مرحله 2)
نرمافزار tmux را نصب می کنیم:
sudo apt install tmux
مرحله 3) عکس 1
از این به بعد من از نرمافزار tmux استفاده می نمایم. کافیست در ترمینال tmux را بنویسید و اینتر را بزنید تا این برنامه اجرا شود.
بسته های debootstrap و arch-install-scripts را نصب می نمایم:
# apt update && apt install debootstrap arch-install-scripts -y
مرحله 4) عکس های 2 ، 3 ، 4 و 5
چون من می خواهم به روش EFI ، دبیان را نصب کنم، پس بهتر است که پارتیشن های EFI و
swap و root و home را بسازم.
برای من پارتیشن بندی ها به این نحو خواهد شد:
dev/sda1 برای پارتیشن EFI
dev/sda2 برای پارتیشن swap
dev/sda3 برای پارتیشن root
dev/sda4 برای پارتیشن home
یادتان باشد برای اینکه خطا ندهد، پارتیشن ها را unmount کنید.
من در اینجا از این دستورات استفاده کردم:
# mkfs.fat -F 32 /dev/sda1
# mkswap /dev/sda2
# swapon /dev/sda2
# mkfs.ext4 /dev/sda3
# mkfs.ext4 /dev/sda4
سوال:
با توجه به
Do yourself a favor before starting, and either use tmux or drop to a tty. Reason: some terminals might misbehave when chrooted in the bootstrapped environment due to some missing packages. Using tmux or a TTY is quicker and simpler than hunting down those missing packages which will inevitably get installed later when you’re finished with this process.
آیا پیشنهاد می کنید که بهطور کل همیشه بجای ترمینال از tmux استفاده کنیم؟
سوال:
ایشان در اینجا
On EFI systems:
# mkfs.fat -F 32 /dev/sdX1
# mkswap /dev/sdX2
# swapon /dev/sdX2
# mkfs.ext4 /dev/sdX3
# mkfs.ext4 /dev/sdX4
# mount /dev/sdX3 /mnt
# mkdir -p /mnt/{boot,home}
# mount /dev/sdX1 /boot/efi
# mount /dev/sdX4 /mnt/home
On legacy/bios systems:
# mkswap /dev/sdX1
# swapon /dev/sdX1
# mkfs.ext4 /dev/sdX2
# mkfs.ext4 /dev/sdX3
# mount /dev/sdX2 /mnt
# mkdir -p /mnt/home
# mount /dev/sdX3 /mnt/home
برای پارتیشن بندی هم روش EFI systems و هم روش legacy/bios systems را گفته است. هر چند که من می خواهم از روش EFI استفاده نمایم، آیا می شود دبیان 13 را به حالت legacy/bios نصب کرد؟ چرا ایشان روش legacy/bios را هم گفته است؟
-
مرحله 5)
بعد از فرمت کردن پارتیشن ها، این سه دستور با موفقیت انجام شد: عکس 1
# mount /dev/sda3 /mnt
# mkdir -p /mnt/{boot,home}
# mount /dev/sda4 /mnt/home
اشکال:
ولی در این دستور خطا داد: عکس 2
# mount /dev/sda1 /boot/efi
-
این خروجی دقیقاً نشان میدهد چرا mount خطا داده :
mount: /boot/efi: mount point does not exist.
یعنی پوشهای به نام /boot/efi در حال حاضر در سیستم زنده (Live Debian) وجود ندارد.
اما نکته مهمتر این است که شما باید در مسیر هدف نصب (یعنی داخل /mnt) مونت کنید، نه در مسیر سیستم زنده.
اگر root را روی /dev/sda3 مونت کردهاید (همانطور که گفتید)، مراحل درست به ترتیب این است:
# mount /dev/sda3 /mnt
# mkdir -p /mnt/{boot,home}
# mount /dev/sda4 /mnt/home
# mkdir -p /mnt/boot/efi
# mount /dev/sda1 /mnt/boot/efi
/boot/efi باید داخل /mnt ساخته شود، چون هنوز دارید محیط جدید دبیان را آماده میکنید، نه سیستم فعلی لایو را.
اگر بعد از این دستورات خروجی mount را اجرا کنید:
mount | grep sda
باید چیزی شبیه به این ببینید:
/dev/sda3 on /mnt type ext4 (...)
/dev/sda4 on /mnt/home type ext4 (...)
/dev/sda1 on /mnt/boot/efi type vfat (...)
که نشان میدهد همه چیز درست مونت شده و آماده اجرای debootstrap است.
-
آفرین برآقای Chappie .
با توضیحات شما الان متوجه شدم!!!
همچنانکه در عکس 1 ،گذاشته ام نویسنده مطلب بجای /mnt/boot/efi از /boot/efi استفاده کرده بود، و
همچنین پوشه /mnt/boot/efi را نساخته بود و من از ایشان کپی کرده بودم و خطا داده بود.
ممنون.
-
✋🙏
-
در مورد اون دو سوالی که بالاتر بولد کردید :
جواب سوال اول :
وقتی داخل محیط زنده (Live) یا SSH هستی:
اگر ارتباط قطع شود یا ترمینال بسته شود، دستوراتی که در حال اجرا هستند متوقف میشوند.
در محیط chroot برخی ابزارها (مثل terminfo, ncurses, locale) هنوز نصب نشدهاند، و ترمینال گاهی رفتار عجیبی دارد.
اما وقتی از tmux استفاده کنی:
جلسهی کاری تو در حافظه میماند، حتی اگر ترمینال بسته شود.
میتوانی دوباره با tmux attach به همان نقطه برگردی.
در صورت خطا در ترمینال، tmux از قطع شدن ارتباط جلوگیری میکند.
- - -
جواب سوال دوم :
دبیان ۱۳ (Trixie) هم مثل نسخههای قبل از هر دو روش UEFI و Legacy BIOS (CSM) پشتیبانی میکند.
چون روش debootstrap «نصب دستی» است، نه محدود به نوع خاصی از سیستم.
او خواسته که مقالهاش برای هر دو نوع سختافزار (قدیمی و جدید) قابل استفاده باشد.
مثلاً:
اگر کسی لپتاپ جدید دارد → از روش EFI استفاده کند.
اگر کسی سیستم قدیمیتر دارد (یا با VirtualBox کار میکند که BIOS emulation دارد) → روش legacy را بزند.
به عبارت بهتر دلیلش اینه که هر دو مدل را در مقاله اش گفته باشد . دلیل خاصی ندارد .
- - -
-
اصلاح مرحله 5)
همانطور که آقای Chappie گفتند، ترتیب درست این مرحله بدین صورت است:
عکس 1
# mount /dev/sda3 /mnt
# mkdir -p /mnt/{boot,home}
# mount /dev/sda4 /mnt/home
# mkdir -p /mnt/boot/efi
# mount /dev/sda1 /mnt/boot/efi
و برای اینکه ببینیم همه چیز درست مونت شده و آماده اجرای debootstrap است، از این دستور استفاده می کنیم:
عکس 2
mount | grep sda
-
با تشکر از آقای Chappie ، بخاطر پاسخگویی به دو سؤال قبلی.
مرحله 6)
ابتدا بایستی مشخص کنیم که آیا debootstrap ، نسخه ی دبیانی که ما می خواهیم نصب کنیم، را پشتیبانی می کند یا نه؟
debootstrap شامل اسکریپتهایی است که به جز Debian، توانایی راهاندازی سایر توزیعها از جمله Ubuntu و Devuan را دارد. برای بررسی نسخههای مختلف پشتیبانی شده از توزیعهای مذکور میتوان از دستور زیر استفاده کرد.
$ ls /usr/share/debootstrap/scripts/
https://wiki.ubuntu-ir.org/wiki/Debootstrap (https://wiki.ubuntu-ir.org/wiki/Debootstrap)
با این دستور اجرا کنید:
# ls /usr/share/debootstrap/scripts/
همانطورکه در عکس 1 می بینید از Debian Trixie ، پشیبانی می کند.
-
مرحله 7)
در ادامه می رسیم به:
Deboostrap
With the disk partitioned and partitions mounted, we now run the debootstrap command.
We will need a cli text editor in the chroot to modify some files,
so we include one already. I use vim, but choose whatever floats your boat.
# /usr/sbin/debootstrap --variant=minbase --include=vim bookworm \
# /mnt http://deb.debian.org/debian/
ولی دو دستوری که در اینجا قرار داده شده برای من بهدرستی کار نکرد. هرچند که بجای bookworm از کلمه trixie استفاده کردم، ولی بهرحال درست کار نکرد.
بنابراین من از دستور دیگری استفاده می نمایم:
# /usr/sbin/debootstrap --variant=minbase --include=vim trixie /mnt http://deb.debian.org/debian/
عکس 1 و 2 و 3
اینبار بنظرم با این دستور نتیجه دلخواه را گرفتیم.
بنظر من برای اینکه ببینیم که آیا این دستور بهدرستی کار کرده است یا نه، باید توجه کنیم که در آخر خروجی دستور بالا این جمله Base system installed successfully نوشته شده باشد.
و دیگر اینکه برویم در دایرکتوری mnt و نگاه کنیم که دایرکتوری های مربوطه واقعا نصب شده است یا نه. عکس 3 نشان می دهد که با این دستور دایرکتوری های مربوطه نصب شده اند.
با مقایسه بین عکس 3 که ماحصل دستور Deboostrap با عکس 4 که مربوط به دایرکتوری های ریشه توزیع زنده دبیان است، در همان نگاه اول می توان دید که دو فایل
initrd.img و vmlinuz
هنوز در سیستمی که می خواهیم طراحی کنیم، ایجاد نگردیده اند.
توضیح اضافی:
variant=minbase-- یعنی فقط بسته های ضروری و apt را نصب کن.
include=vim-- یعنی اینکه نرمافزار vim ( که در chroot لازممان می شود) را هم برایم نصب کن.
trixie نام دبیانی که می خواهیم نصب شود است.
mnt/ مسیری که بایستی فایل های دانلود شده در آن ریخته شود.
/http://deb.debian.org/debian برو به این آدرس و فایل ها و پوشه های مربوطه را برایم دانلود کن.
سوال:
اگر بخواهیم برای ساختارهای دیگر، دبیان را پیکربندی کنیم، آیا می توانیم از آپشن های زیر استفاده کنیم:
arch amd64--
arch arm--
سوال:
سازندگان توزیع های نشأت گرفته از دبیان مانند ubuntu و mint و antix و … آیا برای ساخت توزیع اشان از
Deboostrap استفاده می کنند؟
-
علامت \ در انتهای خط در شل (bash) یعنی:
«این دستور هنوز تمام نشده، ادامهاش در خط بعد است.»
در مثال اصلی:/usr/sbin/debootstrap --variant=minbase --include=vim trixie \
/mnt http://deb.debian.org/debian/
این دو خط در واقع یک دستور واحد هستند.
اگر بخواهی در یک خط بنویسی (بدون \)، باید دقیقاً همینطور باشد:
/usr/sbin/debootstrap --variant=minbase --include=vim trixie /mnt http://deb.debian.org/debian/
هم این فرم یکخطی درست است
هم فرم دوخطی با \ (که فقط برای خوانایی بیشتر استفاده میشود)
-
درباره نبود فایلهای vmlinuz و initrd.img
در خروجی فعلی /mnt این دو فایل هنوز وجود ندارند، چون debootstrap فقط سیستم پایه را نصب کرده (بدون کرنل).
اینا بعد از ورود به chroot و اجرای دستور شبیه به این ساخته میشن - دقیقش رو سرچ کنید:
apt install linux-image-amd64
در مورد وارد شدن به محیط chroot هم فایل نمونه ای که آقای سعیدنژاد همینجا قرار داد میتونه مثال خوبی باشه ولی برای ستاپ شما دقیق نمیدونم .
- - -
دربارهی گزینهی --arch
بله دقیقاً همینطور است.
با --arch میتونی مشخص کنی برای چه معماری (CPU Architecture) سیستم ساخته شود.
# برای سیستمهای ۶۴ بیتی (معمولی)
--arch=amd64
# برای سیستمهای ۳۲ بیتی قدیمی
--arch=i386
# برای سیستمهای مبتنی بر ARM (مثل رزبریپای)
--arch=armhf # 32-bit ARM
--arch=arm64 # 64-bit ARM
- - -
آیا سازندگان توزیعهای مشتقشده از Debian (مثل Ubuntu، Mint، و...) از debootstrap استفاده میکنند؟
بله، تقریباً همهی آنها در مراحل اولیهٔ build از debootstrap یا ابزار مشابهش استفاده میکنند.
اما بعد از آن مرحله، معمولاً یک سیستم ساخت بزرگتر دارند که تنظیمات، بستهها و ظاهر را اضافه میکند.
- - -
-
با تشکر مجدد از آقای Chappie بخاطر تمام محبت هایشان.
علامت \ در انتهای خط در شل (bash) یعنی:
«این دستور هنوز تمام نشده، ادامهاش در خط بعد است.»
در مثال اصلی:/usr/sbin/debootstrap --variant=minbase --include=vim trixie \
/mnt http://deb.debian.org/debian/
سر در نمی آورم،
اگر بخواهم در ترمینال از این روش استفاده کنم، بعد از نوشتن اولین دستور در ترمینال چکار کنم؟ اینتر بزنم؟ اگر اینتر را بزنم که این دستور اجرا می شود و اگر بخواهم دستور دوم را بعدا بنویسم خطا می دهد!!
-
اجراء چند دستور پشت سرهم
touch; ls
ادامه دادن یک دستور در چند خط
touch file1 \
file2
-
با تشکر از آقایان نوروزی و بریتانیای کبیر عزیز.
این اسکریپت رو دانلود کنید و اجرا کنید .
اسکریپت رو هم بخونید واضح میشه براتون
زمانی که یک خط در ترمینال خیلی طولانی و ناخوانا میشه از این راه استفاده میکنند .
در فایلهای کانفیگ هم دیدم که استفاده میشه .
-
اگر در ترمینال بنویسی:
/usr/sbin/debootstrap --variant=minbase --include=vim trixie \
و بعد Enter بزنی، Bash به تو < نشان میدهد و منتظر ادامه میماند.
حالا خط بعدی را بنویس:
/mnt https://deb.debian.org/debian/
و بعد Enter بزن.
Bash این دو خط را بهصورت زیر درک میکند:
/usr/sbin/debootstrap --variant=minbase --include=vim trixie /mnt https://deb.debian.org/debian/
و آنوقت همان موقع اجرا میشود.
-
درست در نمی آید چون عکس 1
-
نکتهٔ خیلی مهم
احتمالا بعد از \ شما یا tab زدید یا کلید space رو زدید
یعنی این اشتباهه :
echo hello \ # <== اشتباه! چون بعد از \ فاصله هست
world
باید دقیقاً \ آخرین کاراکتر خط باشه.
در غیر این صورت Bash فکر میکنه دستور تموم شده و بعدی جداست.
-
درست شد.خیلی ممنون.
-
این موضوع هدفش چیه؟
معرفی یا آموزش؟ بهتره اگه مورد دوم باشه در ویکی بذاریدش و البته خیلی نظم بیشتری داشته باشه
-
این موضوع هدفش چیه؟
معرفی یا آموزش؟ بهتره اگه مورد دوم باشه در ویکی بذاریدش و البته خیلی نظم بیشتری داشته باشه
ممنون آقای بریتانیای کبیر بخاطر وقتی که برای انجمن و دوستان می گذارید.
نصب دبیان بهصورت Debootstrap را بلد نیستم، می خواهم با کمک دوستان یاد بگیرم.به تنهایی از عهده اش برنمی آیم.
این نوع نصب از لحاظ اینکه تا حد امکان در دست خودم باشد که در سیستم دبیانم چه بسته ای نصب باشد و چه بسته ای نصب نباشد برایم ارزشمند است.
تا حالا در این انجمن به کمک دوستان یاد گرفته ام که کدام display manager ، کدام میزکار یا windows manager را که دوست دارم به سلیقه خودم در سیستمم نصب کنم ولی تاکنون به طریق صحیح در دبیان یاد نگرفته ام که چگونه init مورد علاقه ام در دبیان را تغییر بدهم.
می دانم که init پیشفرض در دبیان systemd است که این را نمی پسندم و نمی خواهم در موردش بحث کنم و این تنها یک نظر شخصی است و بس.
دوست دارم init های مختلف را یکی بعد از دیگری بغییر از systemd در سیستمم امتحان کنم.
یکی از آرزوهای قلبی و همیشگی ام این بوده که دبیانی داشته باشم بدون systemd ، که خودم توانسته باشم از خود دبیان بسازم.
همچنین اگر امکان داشته باشد در مورد اینکه چه کسی می تواند در ویکی مطلب بگذارد یا مطالب قبلی را ویرایش کند، بیشتر توضیح دهید. هیچگونه اطلاعی در این مورد ندارم.
چگونه می توان در ویکی مطلب گذاشت و شرایط اینکار چیست؟ ممنون می شوم اگر اطلاعی در این مورد دارید برای من بیشتر توضیح بدهید.
-
Debian Debootstrap Install (AKA Installing Debian "the Arch way")
منظور از (AKA Installing Debian "the Arch way") چیست؟
آیا نصب دبیان بهصورت Debootstrap روش های متعددی دارد؟ می توانید تعدادی از این روشها را نام ببرید؟
-
مرحله 8 )
ببینید فایل mnt/etc/fstab/ در مرحله 7 با دستور debootstrap ایجاد شده است ولی محتوایی ندارد و داخلش خالیست. عکس 1
و این نیست که بخواهیم این فایل را با دستوری که در پایین می زنیم ایجاد کنیم،یعنی از قبل این فایل هست.
در حقیقت با دستور پایینی محتوای این فایل نوشته می شود. عکس های 2 و 3
من هیچ چیزی در درون این فایل ننوشته ام و با فرمان زیر بهصورت اتوماتیک وار پر می شود:
# genfstab -U /mnt >> /mnt/etc/fstab
-
مرحله 9 )
عکس 1 : mnt/etc/apt/sources.list/
عکس 2 : etc/apt/sources.list/
یعنی عکس 1 فایل mnt/etc/apt/sources.list/ را نشان می دهد که توسط فرمان Deboostrap در مرحله 7 ایجاد گردیده است.
عکس 2 فایل etc/apt/sources.list/ را نشان می دهد که مال خود دبیان لایو است.
می خواهم بگویم که محتوای فایل mnt/etc/apt/sources.list/ برای دبیانی که می خواهیم بسازیم کامل و مطلوب نیست.
محتوای فایل etc/apt/sources.list/ هم کامل نیست که بخواهیم از آن کپی بگیریم و کپی آن را بزنیم به فایل mnt/etc/apt/sources.list/
سری می زنیم به سایت خود دبیان:
https://debiansupport.com/mirrors/ (https://debiansupport.com/mirrors/)
محتوای اصلی:
deb https://deb.debian.org/debian trixie main
deb https://deb.debian.org/debian-security trixie-security main
deb https://deb.debian.org/debian/ trixie-updates main
محتوای ترجیحی من:
deb https://deb.debian.org/debian trixie main contrib non-free-firmware non-free
deb https://deb.debian.org/debian-security trixie-security main contrib non-free-firmware non-free
deb https://deb.debian.org/debian/ trixie-updates main contrib non-free-firmware non-free
محتوای فایل mnt/etc/apt/sources.list/ را به یکی از محتواهای بالایی تغییر دهید.
-
Debian Debootstrap Install (AKA Installing Debian "the Arch way")
منظور از (AKA Installing Debian "the Arch way") چیست؟
آیا نصب دبیان بهصورت Debootstrap روش های متعددی دارد؟ می توانید تعدادی از این روشها را نام ببرید؟
توزیع آرچ لینوکس به همین روش نصب میشه. AKA میشه مخفف also known as. در فارسی میتونیم بگیم «به عبارت دیگر».
یعنی داره میگه با این روش داری دبیان رو شبیه آرچ نصب میکنی.
-
نصب دبیان بهصورت Debootstrap را بلد نیستم، می خواهم با کمک دوستان یاد بگیرم.به تنهایی از عهده اش برنمی آیم.
پس بهتره از حالت نصب Expert برید که انعطاف پذیری زیادی داره یا از دویان استفاده کنید
-
با تشکر از آقای آرمان اسماعیلی بخاطر جواب عالی اتان.
-
تکمیل مرحله 9 )
در رابطه با اینکه به چه نحوی منابع جدید را به mnt/etc/apt/sources.list/ اضافه نماییم، می خواستم کمی بیشتر صحبت کنم.
بهترین روش از نظر سایت دبیان:
Using a text editor
The main APT sources configuration file is /etc/apt/sources.list.d/debian.sources, but if you add a new source, it's best to add a new file. Put it in the same directory, preferably with a name that describes the source and ends with .sources (e.g. /etc/apt/sources.list.d/neurodebian.sources for NeuroDebian).
https://wiki.debian.org/SourcesList (https://wiki.debian.org/SourcesList)
ولی راستش دقیقا نمی دانم منظور از محتوای بالا تنها اشاره به third-party repository ها دارد یا اینکه می گوید برای هر تغییری که انجام گیرد حتی مثلا برای افزودن contrib هم از این روش استفاده کنید.
روش فرعی:
می توانیم از ویرایشگرهای CLI مانند nano یا vim استفاده کنیم و مستقیماً فایل mnt/etc/apt/sources.list/ را ویرایش کنیم.
روشی فرعی دیگر:
ولی من روشی که آقای رسول سعیدنژاد در PDF آموزشی اشان گفته بودند، جالبتر و بامزه تر یافتم و می خواهم از همین روش در اینجا استفاده کنم.
ایشان در اینجا بهجای بهکارگیری ویرایشگرهای CLI ، از دستور echo استفاده کرده است.
اگر به عکس 1 در قسمت مورد نظرمان از فایل PDF آقای سعیدنژاد نگاه کنیم، از علامت < و << هم استفاده کرده اند. هر چند که من برنامه نویس نیستم، ولی با آزمایش خطا پی بردم که اگر از علامت < استفاده کنیم، کلیه محتوای قبلی فایل را پاک و محتوای جدید را جایگزین آن میکند.
ولی همانطور که می بینید ایشان این علامت را منحصرا در فرمان اولی بکار برده است ولی در دو فرمان بعدی بهجای < از علامت << استفاده کرده است. در این حالت << محتوای قبلی فایل پاک نمی گردد و محتوای جدید در سطر جدید درج می گردد یعنی محتوای قبلی حفظ و محتوای جدید در سطر جدید به فایل اضافه می گردد.
پس با استفاده از روش ایشان اینطوری محتوای مورد نظرم را به فایل mnt/etc/apt/sources.list/ اضافه می کنم: عکس 2 و 3
# echo deb https://deb.debian.org/debian trixie main contrib non-free-firmware non-free > /mnt/etc/apt/sources.list
# echo deb https://deb.debian.org/debian-security trixie-security main contrib non-free-firmware non-free >> /mnt/etc/apt/sources.list
# echo deb https://deb.debian.org/debian/ trixie-updates main contrib non-free-firmware non-free >> /mnt/etc/apt/sources.list
نوشتجات خط فرمان طولانی شد و مجبور شدم برای عکس گرفتن سایز فونت ها را کوچکتر کنم، درست الان به یاد گفته آقای Chappie در رابطه با \ یا همان بک اسلش می افتم و منظورشان را دقیق تر می فهم .
بنابراین در اینجا می خواهم از \ یا همان بک اسلش استفاده کنم، بههرحال نتیجه این دستورات با دستورات بالایی یکی است: عکس 4
# echo deb https://deb.debian.org/debian trixie main contrib \
# non-free-firmware non-free > /mnt/etc/apt/sources.list
# echo deb https://deb.debian.org/debian-security trixie-security main contrib \
# non-free-firmware non-free >> /mnt/etc/apt/sources.list
# echo deb https://deb.debian.org/debian/ trixie-updates main contrib \
# non-free-firmware non-free >> /mnt/etc/apt/sources.list
-
If you’re planning on using ifupdown as your networking tool, and you’re doing this from a system which uses it, copy the interfaces file to the chroot.
# cp /etc/network/interfaces /mnt/etc/network/interfaces
Do the same for the /etc/network/interfaces.d/ directory if it contains any files.
در اجرای این فرمان :
# cp /etc/network/interfaces /mnt/etc/network/interfaces
دچار مشکل شدم. عکس 1
همانطور که در عکس 2 می بینید، پوشه etc/network/ دارم.
ولی در عکس 3 همانطور که می بینید،پوشه mnt/etc/network/ ندارم.
فعلاً نمی دانم چکار کنم.
-
بهترین روش از نظر سایت دبیان:
نقلقول
Using a text editor
The main APT sources configuration file is /etc/apt/sources.list.d/debian.sources, but if you add a new source, it's best to add a new file. Put it in the same directory, preferably with a name that describes the source and ends with .sources (e.g. /etc/apt/sources.list.d/neurodebian.sources for NeuroDebian).
https://wiki.debian.org/SourcesList
ولی راستش دقیقا نمی دانم منظور از محتوای بالا تنها اشاره به third-party repository ها دارد یا اینکه می گوید برای هر تغییری که انجام گیرد حتی مثلا برای افزودن contrib هم از این روش استفاده کنید.
از دبیان ۱۳ به بعد یک تغیراتی در مخازن اعمال شده که میتونید در زیر نمونه اش رو ببینید
ولی sources.list هنوز برای سازگاری کار میکنه و به این روشی که انجام دادید برای سازگاری با اسکریپت های قدیمی هنوز کار میکنه
nano /etc/apt/sources.list.d/debian.sources
Types: deb deb-src
URIs: mirror+file:///etc/apt/mirrors/debian.list
Suites: trixie trixie-updates trixie-backports
Components: main contrib non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
Types: deb deb-src
URIs: mirror+file:///etc/apt/mirrors/debian-security.list
Suites: trixie-security
Components: main contrib non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
nano /etc/apt/mirrors/debian.list
https://deb.debian.org/debian
-
برای امتحان Debootstrap آموزش خوبی رو پیدا نکردید , از خیلی از مراحل میپره و توضیح چندانی نمیده , بگردید و یک آموزش جامع پیدا کنید , متاسفانه اینجا کسی نیست که در حال نصب دبیان به این شکل باشه و دوستان نمیتونند کمک چندانی کنند .
برای نمونه در بخش NetworkManager که به مشکل خوردید , میتونید این چند لینک رو نگاهی کنید و ببینید بدردتون میخوره یا نه , در ضمن این لینکها هم قدیمی هستند لطفا کپی پیست نکنید هر چیزی رو .
https://www.linuxquestions.org/questions/debian-26/how-to-install-debian-using-debootstrap-4175465295/page5.html
https://gist.github.com/linzheming/205752af251ef2160fcfa2ee51a83287
https://gist.github.com/varqox/42e213b6b2dde2b636ef
https://gist.github.com/varqox/42e213b6b2dde2b636ef#configure-networking
-
از دبیان ۱۳ به بعد یک تغیراتی در مخازن اعمال شده که میتونید در زیر نمونه اش رو ببینید
برای نمایش مخازن از سبک deb822 استفاده میشه.
میتونید با دستور زیر مخازنتونو به سبک جدید نشون بدبد. میتونید با کلید جهش (tab) مسیر پروندهی مخازنن رو پر کنید
apt modernize-sources source_list_path
https://wiki.ubuntu-ir.org/wiki/%D8%A7%D8%B1%D8%AA%D9%82%D8%A7%DB%8C_%D8%AF%D8%A8%DB%8C%D8%A7%D9%86
-
با تشکر مجدد از آقایان Chappie و بریتانیای کبیر.
مرحله 10 )
اکنون زمان آن رسیده است که به سیستم deboostrap شده chroot کنیم: عکس 1
# arch-chroot /mnt
سپس، برای اطمینان بیشتر، دستور apt update را اجرا کنید: عکس 2
# apt update
مرحله 11 )
الان init را نصب می کنیم. فعلاً بهعلت سازگاری بیشتر دبیان از systemd استفاده می کنم: عکس 3
# apt install systemd systemd-sysv libpam-systemd libsystemd0
الان همkernel را نصب می کنیم: عکس 4 و 5
# apt install linux-image-amd64
-
مرحله 12 )
تنظیم منطقه زمانی: عکس 1
# dpkg-reconfigure tzdata
مرحله 13 )
الان رسیدیم بهNetworking ،
در آموزش نامه ای که من پی میگیرم از این روش استفاده شده است:
# apt install ifupdown wpasupplicant
ولی من ترجیح می دهم ازاین روش استفاده کنم: عکس های 2 و 3
# apt install network-manager
If you’re planning on using ifupdown as your networking tool, and you’re doing this from a system which uses it, copy the interfaces file to the chroot.
# cp /etc/network/interfaces /mnt/etc/network/interfaces
Do the same for the /etc/network/interfaces.d/ directory if it contains any files.
در اجرای این فرمان :
# cp /etc/network/interfaces /mnt/etc/network/interfaces
دچار مشکل شدم. عکس 1
همانطور که در عکس 2 می بینید، پوشه etc/network/ دارم.
ولی در عکس 3 همانطور که می بینید،پوشه mnt/etc/network/ ندارم.
فعلاً نمی دانم چکار کنم.
بنظرم علت اینکه من پوشه mnt/etc/network/ را در آن مرحله نداشتم ، این بوده است که در آن آموزش نامه نویسنده مطلب بایستی توجه می کرد وقتی که با استفاده از آپشن variant=minbase سیستم را بصورت مینیمال نصب کرده است، بنابراین نصاب دبیان Debootstrap ،بسته network-manager را نصب نمی کند . بنابراین طبیعتا پوشه ای بنام network و همچنین در درون این پوشه فایلی بنام interfaces راهم نخواهیم داشت.
بنابراین برای اینکه من پوشه mnt/etc/network داشته باشم ابتدا بایستی به سیستم دبیان Debootstrap ای که می خواهیم بسازیم chroot کنیم و سپس بسته network-manger را نصب کنیم و سپس اگر خواستیم این دستور را اجرا کنیم، بایستی حتما ابتدا از محیط chroot، خارج بشویم با فرمان exit و سپس فرمان زیر را اگر خواستیم اجرا کنیم:
# cp /etc/network/interfaces /mnt/etc/network/interfaces
عکس های 4 و 5
-
مرحله 14 )
در این مرحله یک نام میزبان برای سیستم خود انتخاب کنید و آن را به etc/hostname/ اضافه کنید: عکس 1
echo "yourhostname" > /etc/hostname
مرحله 15 )
ویرایش فایل etc/hosts/ :
در اینجا می خواهیم محتوای فایل etc/hosts/ را با کمی تغییر کپی کنیم به mnt/etc/hosts/ ، فقط یادتان باشد نام "yourhostname"
که تنظیم کرده اید در محل معین در آن قرار دهید.
روش اول:
در همان محیط chroot از دستور echo استفاده کنید: عکس 2 و 3
# echo "127.0.0.1 localhost yourhostname" > /etc/hosts
# echo "::1 localhost ip6-localhost ip6-loopback" >> /etc/hosts
# echo "fe00::0 ip6-localnet" >> /etc/hosts
# echo "ff00::0 ip6-mcastprefix" >> /etc/hosts
# echo "ff02::1 ip6-allnodes" >> /etc/hosts
# echo "ff02::2 ip6-allrouters" >> /etc/hosts
روش دوم:
و یا اینکه از chroot خارج شوید و ابتدا فایل mnt/etc/hosts/ را حذف کنید و سپس فایل etc/hosts/ را به mnt/etc/ کپی کرده و سپس مثلا با نرم افزار vim ، نام "yourhostname"
که تنظیم کرده اید در محل معین در آن تغییر دهید. و در نهایت برای ادامه کار دوباره به محیط chroot برگردید.
-
بنظرم بعد از تمام شدن کار ویکیش کنید.
-
مرحله 16 )
Install the locales package, then configure
# apt install locales
# dpkg-reconfigure locales
در اینجا می خواهیم بسته locales را نصب کنیم، سپس پیکربندی کنیم. عکس 1 و 2
برای نصب:
# apt install locales
دستوری که نشان می دهد که زبان سیستم دبیان شما بر روی چه زبانی تنظیم شده است:عکس 5
# env | grep LANG
باپیکربندی این گزینه زبان سیستم دبیان خود را تغییر می دهید: عکس 3 و 4
# dpkg-reconfigure locales
یادتان بماند در هنگام اجرای دستور dpkg-reconfigure locales ، با دیدن کلمه [More ] ، کلید اینتر را بزنید تا ادامه بیشتری برای شما نشان داده شود.
در قسمتLocales to be generated مثلاً عدد 126 را وارد کنید و سپس اینتر را بزنید تا fa_IR UTF-8 اعمال شود. در هنگام پرسیدن :Dault locale for the system environment ، عدد 3 را تایپ کرده و سپس اینتر بزنید. در اینجا گزینه 3 همان fa_IR است.
اگر دوباره دستور env | grep LANG را اجرا کنید، خواهید دید که بر روی همان انگلیسی پیشفرض تنظیم شده است و به فارسی تغییر نیافته است، علت این است که برای اینکه این تغییر اعمال شود لازم است که سیستم ریستارت شود، ولی ما فعلاً با سیستممان کار داریم و نمی خواهیم اینکار را انجام دهیم.
اگر زبان سیستم را فارسی انتخاب کنید، مثلاً تقویم به فارسی نشان داده می شود و برخی از نرم افزارها مانند Disks و PcmanFM و Geany و... منوهایشان و ... بهصورت فارسی نشان داده می شود که البته خیلی وقت پیش امتحان کرده بودم در آنموقع تکمیل نبود و پشتیبانی مناسبی از زبان فارسی نداشت.
من شخصاً ترجیحم استفاده از همان زبان انگلیسی پیشفرض برای سیستم دبیان می باشد.
-
مرحله 17 )
Configure the keyboard if you're not going to use the default 'us' keymap:
# apt install console-setup
# dpkg-reconfigure keyboard-configuration
You may not want to run dpkg-reconfigure keyboard-configuration. I find it more trouble than it’s worth and it seems to me like it is not required, though it’s mentioned in most guides.
Certain changes to the keymap will only take effect once rebooted into the new install.
پیکربندی صفحه کلید:
ابتدا با این فرمان console-setup را نصب نمایید:
# apt install console-setup
سپس برای پیکره بندی: عکس های 1 و 2 و 3 و 4 و 5
# dpkg-reconfigure keyboard-configuration
با دیدن [More] اینتر بزنید تا مقادیر بیشتری برای شما نشان داده شود.
با دیدن :keyboard layout ، عدد 30 که به معنای Other را وارد کنید و سپس اینتر را بزنید، بعد دوباره با دیدن [More] برای نشان دادن محتوای بیشتر اینتر بزنید.
بعد با دیدن :Country of origin for the keyboard عدد 74 که همان Persian است را نوشته و اینتر را بزنید.
با دیدن Keyboard layout ، عدد 1 که همان Persian را تایپ کرده و سپس اینتر را بزنید.
با دیدن :Method for toggling between national and Latin mode
مثلاً عدد 7 که همان میانبر Alt+Shift برای تغییر زبان صفحه کلید است را وارد کرده و سپس اینتر را بزنید.
-
مرحله 18 )
Users, passwords and authentication
Start by creating a password for the root account. You can lock the account later if you don't plan on using it with the passwd -l root command.
# passwd
Setting up your default user:
# useradd -m username
# passwd username
Add the user to necessary groups, and give it the proper interactive shell. Debian uses bash as its default interactive shell, but you can choose whatever you like.
# usermod -aG cdrom,floppy,audio,dip,video,plugdev,netdev username
# usermod -s /bin/bash username
کاربران، رمزهای عبور و احراز هویت
# passwd
# useradd -m username
# passwd username
# usermod -aG cdrom,floppy,audio,dip,video,plugdev,netdev username
# usermod -s /bin/bash username
عکس 1
Next, you need to decide if you want sudo or doas in order to elevate your user’s privileges for updates, etc… This is your choice, though I personally prefer doas.
For doas:
# apt install opendoas
# echo "permit username" > /etc/doas.conf
For sudo:
# apt install sudo
# usermod -aG sudo username
Debian provides a pre-configured sudoers file, and you probably don’t need to change anything, but it’s wise to verify that the line under “allow members of group sudo …” is not commented out with the cat /etc/sudoers command.
Look at the output, and if the line is commented out, use the visudo command and uncomment it.
apt install sudo
usermod -aG sudo username
cat /etc/sudoers
دبیان یک فایل sudoers از پیش پیکربندی شده ارائه میدهد و احتمالاً نیازی به تغییر چیزی ندارید، اما بهتر است که مطمئن شوید خط زیر «allow members of group sudo …” با دستور cat /etc/sudoers به صورت کامنت درنیامده باشد.
عکس های 2 و 3 و 4
-
مرحله 19 )
Setting up the bootloader
Here, grub is used. For other bootloaders, see their own documentation.
For EFI systems
# apt install grub-efi-amd64
# grub-install --target=x86_64-efi --efi-directory=/boot/efi
# update-grub
For bios/legacy systems
# apt install grub-pc
# grub-install /dev/sdX
# update-grub
تنظیم بوت لودر:
در اینجا من از grub استفاده کرده ام. برای سایر بوت لودرها، به مستندات مربوط به خودشان مراجعه کنید.
سیستم من چون EFI systems است بنابراین از این دستورات استفاده کردم:
# apt install grub-efi-amd64
# grub-install --target=x86_64-efi --efi-directory=/boot/efi
# update-grub
عکس های 1 و 2 و 3
-
مرحله 20 یا نهایی )
Finalizing
Run apt clean for good measure.
Remove resolv.conf so it gets recreated at boot: rm /etc/resolv.conf
Exit the chroot with the exit command.
Unmount the filesystems with umount just to be extra safe. Hint: unmount the devices mounted to /boot/efi and /home first before running umount /dev/sdX.
That's it. Reboot and enjoy.
در پایان نصب دبیان بصورت Debootstrap این کارها را می کنیم:
# apt clean
عکس 1
Remove resolv.conf so it gets recreated at boot: rm /etc/resolv.conf
همانطور که در عکس 2 می توانید مشاهده کنید، در این دستور العملی که من استفاده می کنم این دستور در جای نامناسبی داده شده است و خطا می دهد، برای حل این مشکل ابتدا با دستور :
# exit
از chroot خارج می شویم و سپس از دستور زیر برای حذف فایل مربوطه اقدام می کنیم:
# rm /mnt//etc/resolv.conf
عکس 2
Exit the chroot with the exit command.
اجرای این دستور exit در اینجا دیگر لازم نیست، چون در دستورات قبلی ما از محیط chroot با فرمان exit خارج شدیم.
برای امنیت بیشتر، فایلسیستمها را با umount از حالت mount خارج می کنیم.
نکته: قبل از اجرای umount /dev/sda، ابتدا دستگاههایی را که در /boot/efi و /home نصب شدهاند، از حالت مانت خارج می کنیم، برای اینکار از دستورات زیر استفاده می کنیم:
# umount /dev/sda1
# umount /dev/sda4
# umount /dev/sda3
-
من دبیان را بهصورت Debootstrap و مینیمال با systemd از طریق دبیان لایو به سیستم اصلی ام نصب کردم.
حالا می خواهم بیایم و نگاه کنم و ببینم که اصلاً سیستمی که ایجاد کرده ام کار می کند؟ بوت می شود؟ و …
در اینجا به ترتیب ۵ عکس گذاشته ام.
عکس 1:
خوب خدا را شکر، گراب در همین ابتدا بعد از اعلان بایوس، قابل مشاهده است. پس می توانیم امیدوار باشیم که حداقل این یکی درست است تا برسیم به بقیه.
عکس 2:
بهبه ، اعلان دبیان هم آمد.
عکس 3:
تعدادی خطا مربوط به زمان بوت سیستم.
عکس 4:
ولی خطاهای بوت در آن حد نبودند، که مانع ورود ما به سیستم اصلی امان و خط فرمان شوند.در اینجا بعد از اعلان خطاها وارد خط فرمان دبیان می شویم.
بررسی خطاهای مربوط به عکس 3 :
در ایجا ما با دو نوع خطای متفاوت مواجه می شویم:
۱- خطای fsck.ext4 for dev/sda3
۲- خطاهای مربوط به نبودن firmware های مربوطه
حل خطای fsck.ext4 for dev/sda3 :
برای حل این خطا بسته e2fsprogs را نصب می کنیم.
بسته e2fsprogs : این بسته شامل برنامههایی برای ایجاد، بررسی و نگهداری سیستمهای فایل مبتنی بر ext2/3/4 است. همچنین شامل برنامه "badblocks" است که میتواند برای اسکن بلوکهای خراب روی دیسک یا سایر دستگاههای ذخیرهسازی استفاده شود.
فکر کنم بایستی نصب این بسته در قسمت chroot به آموزش نامه Ian LeCorbeau اضافه گردد.
حل خطای مربوط به نبودن firmware های مربوطه:
برای حل این خطا از این دستورها استفاده می کنم:
# apt update
# apt install firmware-linux
# reboot
# apt install firmware-realtek
# reboot
بسته firmware-linux ، این بسته به میانافزار آزاد و غیرآزاد وابسته است که ممکن است با درایورها در هسته لینوکس استفاده شوند. موردی ندارد این بسته را نصب نمایید.
بسته firmware-realtek ، این بسته شامل میانافزار باینری برای تراشههای اترنت، وایفای، بلوتوث و صدای Realtek است که توسط درایورهای مختلف پشتیبانی میشوند. چون سیستم من از مارک Realtek استفاده کرده، بنابراین بایستی این بسته را نصب کنم تا firmware های مربوط به سخت افزارش نصب شود، اگر در سیستم شما مارک دیگری است، این بسته را نصب نکنید و جستجو کرده و بسته مناسب با مارک تان را نصب نمایید.
حتماً بعد از نصب firmware از هر نوعی ، بایستی سیستمتان را reboot نمایید.
عکس 5 : بعد از بوت مجدد، عکس 5 این را به ما نشان می دهد، که مشکلات موجود در عکس 3 با نصب بسته هایی که در بالا توضیح دادم، حل گردیده است.
بنابراین می توان از سیستمی که از طریق Debootstrap نصب شده، استفاده برد.
-
من در ارسالی های قبلی، دبیان را بهصورت Debootstrap و بهصورت مینیمال و systemd نصب کردم و با رفع خطاها سیستم بدون مشکل کار کرد.
الان من می خواهم دبیان را بهصورت Debootstrap و بهصورت مینیمال و systemd free و بصورت sysvinit در سیستم اصلی ام نصب کنم. برای اینکار همه چیز را در سیستمم پاک کردم.
طبق آموزشی که من در پیش گرفته ام همه چیز مثل مراحل قبلی است، بجز اینکه بهجای بسته های مرتبط با systemd بایستی بسته های مرتبط با sysvinit را نصب نمایم.یعنی بدین صورت:
Installing init and the kernel
We need a kernel and init system. This could be done later but I prefer getting it out of the way first.
For systemd:
# apt instal systemd systemd-sysv libpam-systemd libsystemd0
For sysvinit:
# apt install sysvinit-core sysv-rc orphan-sysvinit-scripts elogind libpam-elogind
Install the kernel:
# apt install linux-image-amd64
Swap amd64 for another architecture if you need.
ولی اینجا یک مسله مهمی وجود دارد، اگر به عکس 1 نگاه کنید، می توانید ببینید که بسته linux-image-amd64 به بسته های:
systemd و systemd-cryptsetup و systemd-timesyncd و libsystemd-shared
وابسته است.
نمی دانم چکار کنم؟ آیا راهی بنظرتان می رسد که در دبیان از دست این بسته ها خلاص بشوم.
( امیدوارم که مرا بسویDevuan و antiX و توزیع های دیگر راهنمایی نکنید، نمی خواهم در این مورد بحث کنم)
لطفاً هر ایده ای که به ذهنتان می رسد، بگویید. رویش کار خواهم کرد.
-
۱ )
بستهی linux-image-amd64 در Debian وابستگی غیرمستقیم (indirect dependency) به systemd داره.
اما این وابستگی از نوع Recommends یا Suggests است، نه همیشه "Depends".
توضیح:
Depends: یعنی بدونش پکیج کار نمیکنه.
Recommends: یعنی نصبش مفیده ولی اجباری نیست.
Suggests: یعنی صرفاً پیشنهاده.
مشکل اینه که apt بهطور پیشفرض Recommendsها رو هم نصب میکنه.
در نتیجه systemd همراه کرنل میاد حتی اگه لازم نباشه.
۲ )
به عنوان ایده :
بعد از اینکه وارد chroot شدی :
apt install sysvinit-core sysv-rc orphan-sysvinit-scripts elogind libpam-elogind
جلوگیری از نصب مجدد systemd :
apt-mark hold systemd systemd-sysv libpam-systemd
برای اطمینان بیشتر، این فایل هم بساز:
cat > /etc/apt/preferences.d/nosystemd << "EOF"
Package: systemd*
Pin: release *
Pin-Priority: -1
EOF
الان میتونی با خیال راحت کرنل کامل نصب کنی چون systemd قفل شده:
apt install linux-image-amd64
و بعد ادامه راهی که میرفتید ...
-
اون فایلی که ساختیم چکار میکنه :
apt چطور تصمیم میگیرد چه چیزی نصب شود؟
وقتی در دبیان (یا هر توزیع مبتنی بر آن) دستور apt install را اجرا میکنی، apt باید بین چند نسخه یا مخزن تصمیم بگیرد که کدام بسته را نصب کند.
برای این کار از چیزی به نام APT pinning system استفاده میکند.
هر بسته یک اولویت (priority) دارد که با عدد Pin-Priority مشخص میشود.
- - -
فایل /etc/apt/preferences.d/nosystemd چیست؟
فایلی است که به apt میگوید:
«اگر اسم بسته با systemd شروع میشود، حتی اگر لازم بود، نصبش نکن.»
- - -
Package: systemd*
هر بستهای که نامش با systemd شروع شود (مثلاً systemd, systemd-sysv, systemd-timesyncd, libpam-systemd …)
Pin: release *
از هر مخزنی باشد، فرقی ندارد (deb, updates, security … همه را شامل شود)
Pin-Priority: -1
نمرهی اولویت منفی → یعنی «هرگز نصب نکن»
-
برای نصب نرمافزارها با apt میتونید از فلگ no install recommend استفاده کنید تا بسته اضافی نصب نشود.
بهتره هر مرحلهها به شکل جدا در یک shell script قرار دهید و گامها را به هم متصل کنید. به این شکل نگهداری پروژه سادهتر میشه.
-
ممنون آقای esmaeelE ، دوست عزیز.
برای نصب نرمافزارها با apt میتونید از فلگ no install recommend استفاده کنید تا بسته اضافی نصب نشود.
اگر بخواهیم این روش را بررسی کنیم.
حالت اول:
apt install linux-image-amd64
Installing dependencies:
apparmor dbus-session-bus-common initramfs-tools-core libdevmapper1.02.1 linux-base systemd-timesyncd
busybox dbus-system-bus-common klibc-utils libexpat1 linux-image-6.12.48+deb13-amd64 udev
cpio dmsetup kmod libjson-c5 linux-sysctl-defaults zstd
dbus dracut-install libapparmor1 libklibc logsave
dbus-bin initramfs-tools libcryptsetup12 libkmod2 systemd
dbus-daemon initramfs-tools-bin libdbus-1-3 libsystemd-shared systemd-cryptsetup
حالت دوم:
apt install --no-install-recommends linux-image-amd64
Installing dependencies:
cpio initramfs-tools-bin kmod libkmod2 linux-image-6.12.48+deb13-amd64 udev
dracut-install initramfs-tools-core libapparmor1 libsystemd-shared logsave
initramfs-tools klibc-utils libklibc linux-base systemd
اگر تمرکزمان را فقط بر روی بسته های مربوط به systemd بگذاریم، در حالتی که از no-install-recommends-- استفاده می کنیم،
بسته های libsystemd-shared و systemd نصب می شوند ولی بسته های systemd-timesyncd و systemd-cryptsetup نصب نمی شوند.
در حالت اول که از no-install-recommends-- استفاده نمی کنیم، هر چهار تای این بسته ها نصب می شوند.
برای بکارگیری این روش برایم دو تا مشکل وجود دارد:
۱- من با Installing dependencies و Recommends مشکلی ندارم و حتی ضروری می دانم که آنها نصب بشوند ولی تا حد امکان می خواهم نگذارم بسته های مرتبط با sysytemd نصب شوند. با بکارگیری این روش بایستی بعد بیایم و دوباره بسته هایی مانند:
apparmor و busybox و dbus و dmsetup و zstd و غیره را نصب کنم.
۲-با بکارگیری این روش همچنانکه گفتم بسته های libsystemd-shared و systemd باز هم نصب می شوند.
بهتره هر مرحلهها به شکل جدا در یک shell script قرار دهید و گامها را به هم متصل کنید. به این شکل نگهداری پروژه سادهتر میشه.
متاسفانه در این زمینه اطلاعاتم در حد صفر است.
-
برای کاربرد خاص شما در نصب debootstrap بررسی نکردم ولی دو گزینه apt دارد که احتمالا در این مورد مفید باشند.
apt mark hold و دیگری apt pin
این دو را ترکیب کنید و از نصب بستهها جلوگیری کنید.
https://unix.stackexchange.com/a/316745/235261
https://dev1galaxy.org/viewtopic.php?pid=49005#p49005
-
ممنون دوست عزیز آقای Chappie ، اگر کمک های شما نبود فکر می کنم تا این مرحله نمی رسیدم.
سوال۱:
چرا در قسمت hold ، بسته libsystemd-shared را جزو آنها قرار نداده بودید؟
راستش من روش شما را رفتم و خیلی هم لذت بردم، برای اینکه پیاز داغش را زیادتر کنم بسته libsystemd-shared را هم جزو hold شدگان قرار دادم، دیگر در نصب linux-image-amd64 هیچگونه آثاری از بسته های systemd نبود، در اینجا خیلی کیف کردم و ادامه نصب را بدون مشکل به جلو رفتم، سیستم هم بدون مشکل خاصی بوت شد ولی بعد مشکلات آغاز شد حتی دستور apt update هم در خط فرمان جواب نمی داد و به سایت دبیان وصل نمی شد. مجبور شدم دوباره چیزی که نصب کرده بودم حذف کنم. شاید هم عجله کردم و با نصب چند بسته مشکل برطرف می شد.
دقیقا سوال اساسی من این است:
آیا بسته libsystemd-shared یکی از سنگ بنا و ستون اساسی دبیان است؟ آیا بدون این بسته اوضاع تا حد غیر ممکن بغرنج می شود؟
فعلا تمرکز اساسی ام را بر روی روش شما گذاشته ام، ولی این بسته libsystemd-shared برایم حسابی اوضاع شده، آیا روش جایگزینی وجود دارد که بجای کارکرد این بسته برایم کار کند؟
سوال دیگر:
اگر بخواهیم بعدا بسته ای را از حالت hold خارج کنیم از چه دستوری باید استفاده کنیم؟
-
libsystemd-shared
کتابخانهٔ runtime داخلی systemd (مورد استفاده توسط خود systemd و برخی ابزارهای پایه مثل udev, dbus, policykit, apt بهطور غیرمستقیم)
- - -
چرا نباید libsystemd-shared (یا libsystemd0) رو hold یا block کنی
چون خیلی از بستههای «غیر systemd» — حتی در حالت sysvinit — به کتابخانههای عمومی systemd نیاز دارن، نه daemon خودش.
برای مثال:
dbus-daemon, udisks2, apt-transport-https, policykit, elogind, udev
→ همگی به libsystemd0 یا libsystemd-shared لینک شدن.
این کتابخانهها Daemon نیستن، بلکه فقط کتابخانهٔ سطح پایین C هستن که برای سازگاری استفاده میشن.
یعنی حتی وقتی systemd حذف شده باشه، وجود این فایلهای .so برای عملکرد سایر سرویسها لازمه.
- - -
چه اتفاقی افتاد وقتی تو libsystemd-shared رو هم hold کردی
وقتی اون بسته رو hold کردی یا pin کردی،
apt نتونست libsystemd-shared.so رو آپدیت یا resolve کنه → در نتیجه dbus و apt و networking بعضاً از کار افتادن چون یکی از dependencyهای سطح پایینشون قفل شد.
نتیجه:
apt update نمیتونه بهدرستی gnutls و dbus و policykit رو لود کنه
بعضی از سرویسها که به این lib لینک شدن (حتی غیر systemd) crash یا hang میکنن
- - -
پیشنهاد دقیق برای hold
اگر بخوای یک setup تمیز و بیدردسر داشته باشی:
apt-mark hold systemd systemd-sysv libpam-systemd
و در /etc/apt/preferences.d/nosystemd فقط بنویس:
Package: systemd systemd-sysv libpam-systemd
Pin: release *
Pin-Priority: -1
نه بیشتر.
- - -
libsystemd-shared و libsystemd0 خودشون systemd نیستن،
فقط کتابخانههایی هستن که خیلی از بستهها برای کارکرد عمومیشون بهشون لینک شدن.
حذف یا hold کردنشون باعث اختلال در apt، dbus، udev، و network میشه.
- - -
دستور اصلی برای برداشتن حالت hold
sudo apt-mark unhold package_name
برای دیدن اینکه چه بستههایی در حالت hold هستن:
apt-mark showhold
-
libsystemd-shared و libsystemd0 خودشون systemd نیستن،
فقط کتابخانههایی هستن که خیلی از بستهها برای کارکرد عمومیشون بهشون لینک شدن.
This internal shared library provides common code used by various systemd
components. It is supposed to decrease memory and disk footprint.
The shared library is not meant for public use and is not API or ABI stable.
این کتابخانه مشترک داخلی، کد مشترکی را که توسط اجزای مختلف systemd استفاده میشود، ارائه میدهد. قرار است فضای اشغال شده توسط حافظه و دیسک را کاهش دهد. این کتابخانه مشترک برای استفاده عمومی در نظر گرفته نشده و از نظر API یا ABI پایدار نیست.
ببخشید ولی بنظرم این مطالب با هم جور درنمی آید. عکس 1
-
libsystemd-shared واقعاً بخشی از سورس systemd است.
در پروژهٔ اصلی systemd، فقط برای استفادهٔ داخلیِ خودِ systemd ساخته شده.
دبیان هنگام بستهبندی، systemd را به چند بسته جدا تقسیم میکند.
یکی از آن بستهها همین libsystemd-shared است که توسط udev و چند ابزار دیگر لازم است.
این کتابخانه daemon نیست و init سیستم را کنترل نمیکند.
اگر حذف شود، udev و بعضی برنامههای پایه از کار میافتند.
پس دبیان آن را نگه میدارد، حتی وقتی خود systemd حذف شده باشد.
نتیجه: وجودش به معنی «داشتن systemd» نیست؛ فقط یک وابستگی فنی است تا سیستم بدون systemd هم کار کند.
- - -
apt از کار افتاد نه چون خودش systemd میخواست،
بلکه چون تو کتابخانهای رو قفل کردی که udev و dbus بدونش بوت نمیشن —
و اونها زیرساخت ارتباطی apt با سیستم هستند.
- - -
libsystemd-shared در اصل بخشی از سورس systemd است و برای استفادهی داخلی خودِ systemd ساخته شده.
این کتابخانه فقط شامل کدهای مشترک بین اجزای systemd (مثل journald, logind, udev) است تا حجم حافظه و دیسک کمتر شود.
API و ABI این کتابخانه پایدار نیست، یعنی هر نسخه از systemd باید دقیقاً نسخهی خودش از libsystemd-shared را داشته باشد.
دبیان systemd را به چند بسته جدا تقسیم میکند تا حتی در حالت بدون systemd هم سیستم بوت شود.
در دبیان، udev از همان سورس systemd ساخته میشود و به libsystemd-shared وابسته است.
بنابراین حتی اگر systemd daemon حذف شود، libsystemd-shared باید بماند تا udev و دیگر اجزای پایه کار کنند.
libsystemd0 برعکس، کتابخانهی عمومی و پایدار است که بسیاری از برنامهها (مثل apt، dbus، cups، policykit) برای لاگ و اعلان به آن لینک شدهاند.
اگر libsystemd-shared را hold یا حذف کنی، نسخهی udev دیگر با آن match نمیکند و udev از کار میافتد.
وقتی udev یا dbus fail کنند، apt و خیلی از ابزارهای سیستمی هم نمیتوانند اجرا شوند.
نتیجه: systemd را میتوان حذف کرد، اما libsystemd-shared و libsystemd0 باید بمانند، چون بدون آنها کل زیرساخت سختافزار و ارتباطات درون سیستم از کار میافتد.
- - -
خلاصهی نهایی:
systemd را میتوان کاملاً حذف کرد،
اما کتابخانههای آن (libsystemd0 و libsystemd-shared) باید بمانند،
چون udev و دهها ابزار پایهی لینوکس برای اجرا به آنها لینک شدهاند.
حذف یا hold آنها باعث قطع عملکرد udev، dbus و در نتیجه apt میشود.
-
این لینکها رو هم ببینید شاید براتون نکته ای داشته باشه :
https://wiki.debian.org/Init#Changing_the_init_system_-_at_installation_time
https://nosystemd.org
-
آقای Chappie ، ممنون از همه مَحبت هایتان و بخاطر وقتی که می گذارید.
نتیجه: systemd را میتوان حذف کرد، اما libsystemd-shared و libsystemd0 باید بمانند، چون بدون آنها کل زیرساخت سختافزار و ارتباطات درون سیستم از کار میافتد.
- - -
خلاصهی نهایی:
systemd را میتوان کاملاً حذف کرد،
اما کتابخانههای آن (libsystemd0 و libsystemd-shared) باید بمانند،
چون udev و دهها ابزار پایهی لینوکس برای اجرا به آنها لینک شدهاند.
حذف یا hold آنها باعث قطع عملکرد udev، dbus و در نتیجه apt میشود.
با توجه به عکسهای 1 و 2 و 3 که از توزیع antiX گرفته ام، بنظر میرسد می توان در دبیان هم systemd و هم libsystemd-shared وهم libsystemd0 نصب نباشند و بدون آنها هم، سیستم از هم نپاشد و apt هم کار کند و بدون آنها لزوما کل زیرساخت سختافزار و ارتباطات درون سیستم از کار نخواهد افتاد.
با توجه به عکس 4 که از توزیع antiX گرفته ام، بنظر میرسد می توان در دبیان هم systemd و هم libsystemd-shared وهم libsystemd0 نصب نباشند و بدون آنها هم بسته dbus و بسته های زیر مجموعه آن کار کنند.
ولی با توجه به عکس 5 که از توزیع antiX گرفته ام،بنظر میرسد نمی توان در دبیانی که systemd و libsystemd-shared وlibsystemd0 نصب نباشند، بتوان از بسته های udev و libudev1 استفاده کرد.
با توجه به عکس 6 که از توزیع antiX گرفته ام،بنظر میرسد نمی توان در دبیانی که systemd و libsystemd-shared وlibsystemd0 نصب نباشند، بتوان از بسته network-manager استفاده کرد.
با توجه به عکس 7 و 8 که از توزیع antiX گرفته ام، بنظر می رسد در توزیع antiX آمده اند و بجای بسته network-manager از بسته های ifupdown و wpasupplicnt استفاده کرده اند.
متاسفانه و متاسفانه در درازمدت توزیع هایی مانند antiX مجبورند برای ادامه بقایشان حداقلی از systemd را در سیستمشان پذیرا باشند.
با تشکر مجدد از دوست خوبم آقای Chappie .
-
ادامه عکس ها.
-
ممنونم آقای نوروزی
- - -
سوالم اینه که تو دبیان چه نتیجه ای گرفتین و تجربه خودتون چی هست ؟
من توضیحاتی که دادم برای نصب رو دبیان بود نه antiX
antiX احتمالا هزارتا تغییرات داده رو سیستم تا تونسته به هدفش برسه
در لینکی که بالاتر از ویکی دبیان داده بودم فقط دو بسته hold شدند که با اون توضیحاتی که دادم همخوانی داره .
یه جستجوی کوچیک کردم مثل اینکه antiX برای اینکه وابستگی کمتری به systemd و هم کتابخانه های که که توضیح دادم داشته باشه خیلی از بسته های دبیان رو rebuild کرده .
- - -
توضیح شفافتری نمیتونم بدم چون سیستم در حال Debootstrap ندارم و هم در حال نصب به غیر از systemd نیستم .
- - -
یکی از تغییراتی که داده شده :
eudev یا mdev بهجای udev
https://antixlinuxfan.miraheze.org/wiki/AntiX_19_FAQ