در قسمت قبل بستهها بارگیری و به پوشهی debroot
منتقل شدند. حالا ادامهی مراحل را انجام میدهیم.
۳. ساخت تصویر توزیع
یک ایمیج خالی با استفاده از dd
درست میکنیم:
root@host:~# dd if=/dev/zero of=Debian.img count=0 bs=1M seek=1K
حجم ایمیج ساختهشده ۱گیگابایت خواهد بود. برای داشتن اندازهی دلخواهتان مقدار seek
را بر حسب مگابایت تغییر دهید.
آن را فرمت میکنیم:
root@host:~# mkfs.ext4 -F -L Debian Debian.img
و سپس سوار میکنیم:
root@host:~# mount -t ext4 -o loop,rw Debian.img /mnt
حالا همهی بستههای بارگیری شده را به ایمیج کپی میکنیم:
root@host:~# cp -r debroot/* /mnt/; sync
و ایمیج را جدا:
root@host:~# umount /mnt
حالا ما یک ایمیج از توزیعمان داریم ولی هنوز آماده نیست. از اینجا دیگر به پوشهی debroot
نیاز نداریم.
۴. انتقال توزیع به اندروید
مهم نیست که ایمیج کجا کپی میشود، ولی باید قابل دسترس باشد و فضای کافی داشته باشد. مثلا ایمیج من در /storage/sdcard1/Disks/
قرار دارد. پس از انتقال ایمیج، دیگر کاری با ماشین گنو/لینوکسی نداریم.
توجه! در مرحلهی بعد به BusyBox نیاز خواهیم داشت. اگر هنوز آن را روی اندروید نصب نکردهاید، همین حالا نصب کنید.
۵. نصب توزیع
یک پوشه میسازیم. این پوشه محل سوارشدن ایمیج خواهد بود:
root@android:~# mkdir /data/debian
root@android:~# busybox mount -o loop,rw -t ext4 <IMAGE> /data/debian
یادتان نرود که در کدهای گفته شده، <IMAGE>
را با مسیر ایمیجی که کپی کردیم عوض کنید. وارد توزیع میشویم:
root@android:~# export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
root@android:~# export USER=root
root@android:~# export HOME=/root
root@android:~# busybox chroot /data/debian /bin/bash
root@localhost:/#
اکنون شما وارد توزیع شدید. اما هنوز بستهها را استخراج نکردیم!
root@localhost:/# /debootstrap/debootstrap --second-stage
debootstrap
شروع به نصب سیستم میکند.
تبریک! توزیع ما آماده است؛ ولی هنوز کارهای کوچکی باقیمانده که میتواند کار ما را راحتتر کند. مثلا با اسکریپت زیر، هربار توزیع آماده و اجرا میشود و پس از اتمام کار خودبهخود جدا میشود. من این اسکریپت را در مسیر system/bin/debian/
قرار دادم.
1 export DEBMNT=/data/debian
2 busybox mount -t ext2 <IMAGE> $DEBMNT
3 busybox mount -t proc none $DEBMNT/proc
4 busybox mount -t sysfs none $DEBMNT/sys
5 busybox mount -o bind /dev $DEBMNT/dev
6 busybox mount -t devpts none $DEBMNT/dev/pts
7 unset LD_PRELOAD
8 LAST_PATH=$PATH
9 export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
10 export USER=root
11 export HOME=/root
12 export TERM=linux
13 busybox chroot $DEBMNT /bin/bash
14 export PATH=$LAST_PATH
15 sync
16 busybox umount $DEBMNT/dev/pts
17 busybox umount $DEBMNT/dev
18 busybox umount $DEBMNT/proc
19 busybox umount $DEBMNT/sys
20 busybox umount $DEBMNT || sh -c "busybox umount -l $DEBMNT && echo 'Force unmounted!'"
۶. تنظیم apt
لازم است که تغییراتی در sources.list
مربوط به مدیر بستهی apt
بهوجود آوریم تا بتوانیم بستههای مورد نیازمان را نصب کنیم.
root@localhost:/# vi /etc/apt/sources.list
توجه! به جای ویرایشگر vi
، هر ویرایشی که با آن راحتتر هستید استفاده کنید. nano
بهطور پیشفرض نصب است.
خطوط زیر را به آن اضافه کنید یا فایل آماده را دریافت کنید.
1 deb http://ftp.ir.debian.org/debian/ jessie contrib main non-free
2 deb-src http://ftp.ir.debian.org/debian/ jessie contrib main non-free
3
4 deb http://ftp.ir.debian.org/debian/ jessie-backports contrib main non-free
5 deb-src http://ftp.ir.debian.org/debian/ jessie-backports contrib main non-free
6
7 deb http://ftp.ir.debian.org/debian/ jessie-updates contrib main non-free
8 deb-src http://ftp.ir.debian.org/debian/ jessie-updates contrib main non-free
و در آخر، برای بهروزرسانی کَش apt
:
root@localhost:/# apt-get update
توجه! فرمان بالا نیاز به اتصال اینترنت دارد.
اکنون توزیع شما دقیقا مانند یک توزیع گنو/لینوکس عادی رفتار میکند.
در قسمت بعد به نصب محیط گرافیکی(به هر دو روش framebuffer
و VNC
) خواهیم پرداخت.