আমি কিভাবে আমার নিজের "বিবিধ" তৈরি সম্পর্কে যেতে পারে লিনাক্স ডিস্ট্রো যে শুধু একটা প্রোগ্রাম, প্রায় কাছাকাছি ঠিক হিসাবে একই ভাবে চালানো হবে XBMCbuntu ।
আমি কিভাবে আমার নিজের "বিবিধ" তৈরি সম্পর্কে যেতে পারে লিনাক্স ডিস্ট্রো যে শুধু একটা প্রোগ্রাম, প্রায় কাছাকাছি ঠিক হিসাবে একই ভাবে চালানো হবে XBMCbuntu ।
উত্তর:
আমি এলএফএসের সাথে জগাখিচুড়ি শুরু করব না, এটি কিছু উদ্যানের পথ যা উদ্যানের পথ to
কোনও ডিস্ট্রো দিয়ে শুরু করুন যেখানে প্রাথমিক ইনস্টল যেমন আর্চ, বা উবুন্টু সার্ভারের মতো শিরোনামহীন সংস্করণে আপনার প্রচুর নিয়ন্ত্রণ রয়েছে। এর বিন্দুটি স্থান সংরক্ষণ করার জন্য এতটা নয় যেটি init কনফিগারেশনের জটিলতাটি সীমিত করতে পারে; একটি হেডলেস ডিস্ট্রো থেকে শুরু করে আপনি যে অ্যাপ্লিকেশনটি চালাতে চান তার জন্য যদি একটি জিইউআই প্রয়োজন, আপনি জিইআইআই লগইন (যেমন। ডিসপ্লে ডিসপ্লে ম্যানেজার বা ডিএম) শেষ না করেই এর জন্য যা প্রয়োজন তা যোগ করতে পারেন, আর ডিবি দ্বারা একটি সম্পূর্ণ ডাবল ডেস্কটপ এর সাথে যেতে পরিবেশ।
এরপরে আপনি কীভাবে init সিস্টেমটি আপনার উদ্দেশ্যে কনফিগার করবেন তা শিখতে চান - নোট করুন যে আপনি আরম্ভ না করে করতে পারবেন না, এবং এটি আপনার লক্ষ্য অর্জনের সেরা উপায় হতে পারে। প্রাথমিকভাবে লিনাক্সে তিনটি ব্যবহার করা যায় (তবে কিছু অন্যান্য রয়েছে ):
দেবিয়ান ক্লাসিক ইউনিক্স এসআইএসভি স্টাইল ইন্ডিতে একটি প্রকরণ ব্যবহার করে । jessie
রিলিজ হিসাবে , ডিবিয়ানও systemd
( https://wiki.debian.org/systemd ) এ স্যুইচ করেছে
উবুন্টু এবং ডেরিভেটিভগুলি আপস্টার্ট ব্যবহার করে ।
ফেডোরা, আর্চ এবং ডেরিভেটিভগুলি সিস্টেমড ব্যবহার করে ।
যদি আপনি এখনও এগুলির কোনও সম্পর্কে কিছু জানেন না, তবে তাদের কোনওটিই অন্যের তুলনায় বিশেষত ব্যবহার করা শক্ত। যদি আপনি পরবর্তী দুটির মধ্যে একটির সাথে যান তবে তারা সিসভির সাথে পশ্চাদপটে সামঞ্জস্যের জন্য কিছু ব্যবস্থা সরবরাহ করে তবে এটি নিয়ে বিরক্ত করবেন না , এটি কোনও সহজ নয়। 1
এখানে মূল বক্তব্যটি হ'ল init বুট এ কী করে তা হ্রাস করা এবং আপনি কীভাবে এমন একটি সিস্টেম তৈরি করতে পারেন যা আপনি ফোকাস করতে চান সেই অ্যাপ্লিকেশনটি সমর্থন করার জন্য একটি ন্যূনতম পরিমাণ সফ্টওয়্যার চালাবে - এটি সার্ভারটি কীভাবে সেট আপ করা হয় তা মূলত, বিটিডাব্লু, সুতরাং এটি একটি সাধারণ কাজ (নোট করুন যে আপনি আক্ষরিকভাবে "কেবল একটি" ব্যবহারকারীল্যান্ড প্রক্রিয়া চালাতে পারবেন না, কমপক্ষে কার্যকরভাবে কার্যকর নয়)।
আপনি যে অ্যাপ্লিকেশনটি চালাতে চান সেটি যদি জিইউআই প্রোগ্রাম হয় (তবে আপনি কেন আক্ষরিকভাবে একটি অ্যাপ্লিকেশন চালাতে পারবেন না তার একটি ভাল উদাহরণ, যেহেতু জিইআইআই অ্যাপ্লিকেশনগুলিতে এক্স সার্ভারের প্রয়োজন হয়), আপনার কাছে ~/.xinitrc
এমন দেখতে পাওয়া যেতে পারে ;
#!/bin/sh
myprogram
আপনি যখন তখন startx
, আপনার প্রোগ্রামটি কেবল চলমান হবে এবং ডেস্কটপগুলি পরিবর্তন করা বা অন্য কিছু শুরু করা অসম্ভব হবে কারণ আংশিকভাবে কোনও উইন্ডো ম্যানেজার বা ডেস্কটপ পরিবেশ নেই (সুতরাং, উইন্ডো ফ্রেম বা শিরোনামবারটি নেই)।
১. বিষয়টিকে কিছুটা বেলার জন্য: আপনি যখন এই গবেষণাটি চালাচ্ছেন, আপনি সিস্টেমড এবং আপস্টার্ট সম্পর্কে এমন কিছু লোককে দেখতে পাবেন যারা সিসভি দাবী সম্পর্কে আগে পরিচিত ছিল, যেমন তারা খুব জটিল। যাইহোক, বস্তুনিষ্ঠভাবে এগুলি এসআইএসভি (আইএমও সিস্টেমড ব্যবহার করা সহজ, আসলে) এর চেয়ে জটিল নয়, তবে বেশিরভাগ কুকুর তাদের পুরানো কৌশলগুলি পছন্দ করে, তাই কথা বলতে। এই গ্রিপিং মারা যেতে শুরু করছে এখন উভয় সিস্টেমই কিছু সময়ের জন্য ব্যবহার করা হচ্ছে।
init
তবে আপনি এটি ছাড়া কিছু করতে পারবেন upstart, systemd,
বা sysv. init
কেবলমাত্র কিছু এক্সিকিউটেবল ফাইলের নাম দেওয়া হয়েছে init
যা আপনার কার্নেলটি মাউন্ট করার সময় ডাকে যখন initramfs.
বেশিরভাগ ক্ষেত্রে এই অন্য তিনটি হয় না init
তবে এগুলি আসলে exec
সম্পাদিত হয় init,
যার দ্বারা সাধারণত হয়busybox.
busybox
কারণ এটি পৃথক উত্তরে পৃথক চিকিত্সার দাবিদার, তবে আমার দ্বারা নয়।
সর্বনিম্ন আরম্ভ হ্যালো ওয়ার্ল্ড প্রোগ্রাম ধাপে ধাপে
অসীম লুপে শেষ হওয়া কোনও নির্ভরতা ছাড়াই হ্যালো ওয়ার্ল্ড সংকলন করুন। init.S
:
.global _start
_start:
mov $1, %rax
mov $1, %rdi
mov $message, %rsi
mov $message_len, %rdx
syscall
jmp .
message: .ascii "FOOBAR FOOBAR FOOBAR FOOBAR FOOBAR FOOBAR FOOBAR\n"
.equ message_len, . - message
আমরা প্রস্থান সিস্টেম কলটি ব্যবহার করতে পারি না, না হলে কার্নেল প্যানিক্স।
তারপর:
mkdir d
as --64 -o init.o init.S # assemble
ld -o d/init init.o # link
cd d
find . | cpio -o -H newc | gzip > ../rootfs.cpio.gz
ROOTFS_PATH="$(pwd)/../rootfs.cpio.gz"
এটি আমাদের হ্যালো ওয়ার্ল্ডে একটি ফাইল সিস্টেম তৈরি করে /init
যা কার্নেলটি চালিত হবে এমন প্রথম ব্যবহারকারীর প্রোগ্রাম। আমরা আরও ফাইল যুক্ত করতে পারতাম এবং যখন কার্নেলটি চালিত হয় তখন সেগুলি প্রোগ্রাম d/
থেকে অ্যাক্সেসযোগ্য হবে /init
।
তারপরে cd
লিনাক্স কার্নেল গাছের মধ্যে, বিল্ডটি যথারীতি হয় এবং এটিকে কিউইএমইউতে চালান:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
cd linux
git checkout v4.9
make mrproper
make defconfig
make -j"$(nproc)"
qemu-system-x86_64 -kernel arch/x86/boot/bzImage -initrd "$ROOTFS_PATH"
এবং আপনার একটি লাইন দেখতে হবে:
FOOBAR FOOBAR FOOBAR FOOBAR FOOBAR FOOBAR FOOBAR
এমুলেটর পর্দায়! মনে রাখবেন এটি শেষ লাইন নয়, তাই আপনাকে আরও কিছুটা উপরে তাকিয়ে থাকতে হবে।
আপনি সি প্রোগ্রামগুলি স্ট্যাটিকালি লিঙ্ক করলে আপনি এটি ব্যবহার করতে পারেন:
#include <stdio.h>
#include <unistd.h>
int main() {
printf("FOOBAR FOOBAR FOOBAR FOOBAR FOOBAR FOOBAR FOOBAR\n");
sleep(0xFFFFFFFF);
return 0;
}
সঙ্গে:
gcc -static init.c -o init
ডায়নামিক লিঙ্কিংয়ের জন্য ডায়নামিক লিংক নির্বাহযোগ্য স্থাপন করা প্রয়োজন, যার মধ্যে সর্বাধিক সাধারণ গ্লিবিকের মতো সি স্ট্যান্ডার্ড লাইব্রেরির অংশ।
আপনি একটি ইউএসবি চালু /dev/sdX
এবং সহ সত্যিকারের হার্ডওয়্যারটিতে চালনা করতে পারেন :
make isoimage FDINITRD="$ROOTFS_PATH"
sudo dd if=arch/x86/boot/image.iso of=/dev/sdX
এই বিষয়ে দুর্দান্ত উত্স: প্রযুক্তি টিপ: কীভাবে initramfs ব্যবহার করবেন landley.net এটি কীভাবে ব্যবহার করতে হয় তাও ব্যাখ্যা করে gen_initramfs_list.sh
, যা প্রক্রিয়াটি স্বয়ংক্রিয় করতে সহায়তার জন্য লিনাক্স কার্নেল উত্স ট্রি থেকে প্রাপ্ত একটি স্ক্রিপ্ট।
উবুন্টু 16.10, QEMU 2.6.1 এ পরীক্ষিত।
পরবর্তী পদক্ষেপ
আপনি পরবর্তী কাজটি করতে চান তা হল ব্যাসিবক্স সেটআপ করা ।
ব্যাসিবক্স একটি পসিএক্স-ওয়াই শেল সহ বেসিক POSIX-y CLI ইউটিলিটিগুলি প্রয়োগ করে, যা আপনাকে আরও সহজেই সিস্টেমের সাথে ইন্টারেক্টিভভাবে পরীক্ষা করার অনুমতি দেয়।
ব্যক্তিগতভাবে, এই মুহুর্তে আমি কেবল বিল্ড্রুটের উপর নির্ভর করতে পছন্দ করি , যা স্ক্রিপ্টগুলির একটি দুর্দান্ত সেট যা উত্স থেকে সমস্ত কিছু তৈরি করে এবং মূল ফাইল সিস্টেম তৈরি করে mates
আমি এটির জন্য একটি অত্যন্ত বিশদ এবং স্বয়ংক্রিয় সহায়কটি আপলোড করেছি: https://github.com/cirosantilli/linux-kernel-module-cheat
আপনি যদি প্রোগ্রামিংয়ে সামান্য থাকেন এবং আপনি এটিকে স্ক্র্যাচ থেকে তৈরি করতে চান তবে আপনি এলএফএসের সাথে যেতে পারেন অর্থাৎ স্ক্র্যাচ থেকে লিনাক্স http://www.linuxfromscratch.org/
আপনি যদি উবুতনু কাস্টমাইজ করতে চান তবে আপনি উবুন্ট-বিল্ডার ব্যবহার করতে পারেন এবং আপনি যদি এটি আরপিএম বেসে চান তবে আপনি এসইউএসই-স্টুডিও ব্যবহার করতে পারেন, সুস স্টুডিও আপনাকে কাস্টম স্যুস লিনাক্স তৈরি করতে দেয়
চিয়ার্স
আপনার "একটি প্রোগ্রাম" কী প্রয়োজন তা সম্পর্কে এটি আরও বেশি।
আপনি কীভাবে একটি এলএফএস তৈরি করে জিনিসগুলি একসাথে রাখবেন তা বুঝতে শুরু করতে পারেন (ওরফে " লিনাক্স থেকে স্ক্র্যাচ ") । তারপর আপনি আপনার প্রোগ্রাম দ্বারা প্রয়োজনীয় জিনিস যোগ অথবা কারণ মত ভারী উপ-সিস্টেম নির্মাণের একটি পূর্ণ বিতরণের জন্য যেতে হবে , Gnome বা ডি-ই LFS একটি বাস্তব ব্যথা-ইন-গাধা হতে পারে।
অবশ্যই পিছিয়ে যাওয়া প্রথমে সহজ হতে পারে তবে পুরো বিতরণ থেকে জিনিসগুলি সরিয়ে ফেলা ঝামেলা হতে পারে: একটি ভিএম-এ এটি করুন এবং প্রতিটি পদক্ষেপে এই ভিএম এর অনুলিপি করুন।
(আমার 2 সেন্ট)
সম্পাদনা করুন :
সেন্টোস বা উবুন্টুর মতো সম্পূর্ণ বিতরণ থেকে শুরু না করে সিকিউরিটিবিস্টের দ্বারা নির্দেশিত হিসাবে , আপনার বিল্ডিং বিতরণ সরঞ্জামগুলির দিকেও নজর রাখতে পারে:
আপনাকে যা জিজ্ঞাসা করতে হবে তা হ'ল আপনার "একটি প্রোগ্রাম" কী প্রয়োজন এবং আপনার কোন সংস্থান রয়েছে।
এটির জন্য যদি গ্রন্থাগার এবং সমর্থন বাইনারিগুলির বিস্তৃত প্রয়োজন হয় তবে আপনি একটি "নিয়মিত" লিনাক্স ডিস্ট্রো (দেবিয়ান বা অনুরূপ) ব্যবহার করে এবং বুট প্রক্রিয়াটি কিছুটা বিশৃঙ্খলা করতে পারেন।
যদি এটি সমর্থন সামগ্রীর সংকীর্ণ নির্বাচনের প্রয়োজন তবে বিভিন্ন কার্নেল মডিউল বা ইউজারল্যান্ড সাপোর্ট বিট ব্যবহার করে বিভিন্ন নেটওয়ার্কের জন্য নেটওয়ার্কিং বা সমর্থন যেমন স্টাফ প্রয়োজন এবং আপনি নিয়মিত ডিস্ট্রোতে ডিস্ক স্পেসের ওভারহেডটি না চান তবে আমি পরামর্শ দেওয়ার পরামর্শ দেব এম্বেডেড ডিস্ট্রোস (বিল্ড্রুট বা অনুরূপ) বা স্ক্র্যাচ পদ্ধতির কোনও লিনাক্স (যদিও এটি রক্ষণাবেক্ষণের মাথাব্যথা হতে পারে)
আপনার যদি প্রয়োজন হয় কেবল একটি নন-মডিউলার কার্নেল সরবরাহ করতে পারে এবং অন্য কোনও কিছুই না থাকে তবে আপনার নিজের বাইনারি সোজা কার্নেলে চালানো কাজ করতে পারে এবং হালকা দ্রাবণ হতে পারে ..
busybox
তবে সম্ভবত এটি আপনি চান না। সুতরাং দয়া করে আপনার প্রয়োজনীয়তা প্রকাশের জন্য প্রয়োজনীয় সময় নিন এবং আমরা আপনাকে সহায়তা করতে সক্ষম হতে পারি। এতে কোনও প্রাসঙ্গিক উপাদান যুক্ত করতে আপনার প্রশ্ন সম্পাদনা করতে দ্বিধা করবেন না ।