আমি কীভাবে একটি সাধারণ ওয়েব ব্রাউজার চালানোর জন্য কাস্টম বিতরণ তৈরি করতে পারি?


18

একটি বৃহত স্ক্রিনে একটি একক ওয়েব পৃষ্ঠা প্রদর্শন করার এক্সপ্রেস উদ্দেশ্য সহ আমরা কয়েকটি লাইটওয়েট মেশিন সংগ্রহ করছি। আমার প্রয়োজন মেশিনটি মূলত হালকা ওজনের হিসাবে এবং যত তাড়াতাড়ি সম্ভব বুট আপ করতে এবং মূলত এটি পুরো স্ক্রিনে একটি ব্রাউজার (ওয়েবকিট?) চালাতে পারে, একটি পৃষ্ঠা লোড করা যা জাভাস্ক্রিপ্ট দ্বারা গতিশীলভাবে নিয়ন্ত্রিত হবে। আমি ইন্টিগ্রেটেড জিপিইউ সহ একটি ইন্টেল ডি 525 ডুয়াল-কোর প্রসেসর ব্যবহার করব, সুতরাং আমার কোনও মালিকানাধীন গ্রাফিক্স ড্রাইভার সেট আপ করার দরকার নেই। আমি একবার এই মেশিনগুলির মধ্যে একটি সঠিকভাবে সেট আপ হয়ে গেলে ddআমার কম্পিউটারে হার্ড ড্রাইভটি সক্ষম হওয়া উচিত এবং তারপরে এটি প্রতিটি নতুন মেশিনে ফেলে দেওয়া উচিত।

আমার নিম্নলিখিত প্রশ্নগুলি রয়েছে:

  1. আমি কীভাবে একটি "বিতরণ" তৈরি করতে পারি যার মধ্যে কেবল আমার প্রয়োজনটি অন্তর্ভুক্ত রয়েছে? আমি মনে করি আমার কার্নেল (;]), এক্স এবং কোনও ধরণের ওয়েব ব্রাউজারের দরকার হবে তবে সত্যিকারের খুব বেশি কিছু নয়। আমি কি উবুন্টু সার্ভারের মতো কিছু নিতে পারি এবং কেবল এক্স সার্ভারটি ইনস্টল করতে পারি এবং মেশিনটি স্বয়ংক্রিয়ভাবে লগ ইন করতে, এক্স শুরু করতে এবং ওয়েব ব্রাউজারটি চালু করার কোনও উপায় খুঁজে পেতে পারি, কোনও প্রশ্ন জিজ্ঞাসা করা হয়নি? আমি পড়তে পারি এমন কোনও বই বা একটি নিবন্ধ বা কিছু আছে?

  2. মূলত একটি "ক্রোমবিহীন ক্রোমিয়াম" চালিত একটি সুন্দর, স্ট্রিপড ডাউন ব্রাউজারের জন্য আমি কী ব্যবহার করতে পারি? এই মেশিনগুলি মোটেই ব্যবহারকারীর ইনপুট গ্রহণ করবে না। আমার যদি সেগুলি পরিচালনা করতে হয় তবে আমি এসএসএইচ ব্যবহার করব।

উত্তর:


12

অনেকগুলি ডিস্ট্রিবিউশনে একটি ন্যূনতম ইনস্টল করার জন্য কিছু সুবিধা রয়েছে; মূলত যেখানে আপনি ম্যানুয়ালি কেবল সেই সমস্ত প্যাকেজ নির্বাচন করেন যা আপনি স্পষ্টভাবে ইনস্টল করতে চান। ডেবিয়ানের এই ক্ষমতা রয়েছে এবং আপনার পরিস্থিতিতে অন্যান্য স্পষ্টত ন্যূনতম প্রতিযোগী আর্চ লিনাক্সের চেয়ে ভাল পছন্দ হবে।

আর্চের রোলিং রিলিজের স্থিতি চলমান জটিলতার একটি স্তর সরবরাহ করতে পারে যা আপনি বর্জন করতে চান। দেবিয়ান আপনি সহজ এবং ন্যূনতম বেস সরবরাহ করবে যা আপনি প্লাস অফারের স্থায়িত্ব খুঁজছেন। ডেবিয়ানকে কিওস্ক হিসাবে ব্যবহার করার বিষয়ে একটি ব্লগ পোস্ট রয়েছে যা কিছু সহায়ক টিপস সরবরাহ করতে পারে।

একটি ব্রাউজারের জন্য, যেমন beav_35 পরামর্শ দেয়, উজবাল একটি ভাল পছন্দ। আমার সুপারিশটি ভিম্প্রোবেবল হবে , একটি ওয়েবকিট ব্রাউজার যা স্ক্রিপ্টযোগ্য, কীবোর্ড চালিত এবং এসএসএইচের মাধ্যমে কার্যকরভাবে নিয়ন্ত্রণ করা যায়।

একটি উইণ্ডো ম্যানেজার হিসেবে আমি সুপারিশ করবে dwm : কম 2000 SLOC, এটি অত্যন্ত হালকা এবং সহজেই একটি কিয়স্ক-টাইপ সেটআপের জন্য কনফিগার করা যাবে।


dwm এই উদ্দেশ্যে দুর্দান্ত দেখাচ্ছে, এবং আমি যাইহোক যাইহোক ডেবিয়ান-ভিত্তিক সিস্টেমগুলির সাথে আরও বেশি পরিচিত, তাই আমি সম্ভবত ডেবিয়ান ব্যবহার করব। আপনি কতটা ছোট মনে করেন আমি ওএসটি নামাতে পারি? এবং আমি কীভাবে একটি ডেবিয়ান বিতরণ তৈরি করতে পারি?
নাফটুলি কে

ইনস্টলেশনটি যখন আপনি এগিয়ে যান, আপনি ল্যাপটপ, স্ট্যান্ডার্ড ইত্যাদির পরিবর্তে নির্বাচিত প্যাকেজ পদক্ষেপে পৌঁছালে "ম্যানুয়াল" বেছে নিন এবং কেবলমাত্র সেই প্যাকেজগুলি নির্বাচন করুন (এক্স এর মতো) আপনার খালি ন্যূনতম জন্য প্রয়োজনীয়: এখানে শুরু করুন ডিবিআরএনআরসিডিসিডি / নেটিনস্ট / # বিজনেসকার্ড-স্থিতিশীল
জেসনওয়ারিয়ান

5

প্রথমত, আপনি চাকাটি পুনরায় উদ্ভাবন করতে চাইবেন না ... বেশ কয়েকটি কিওস্ক-কেন্দ্রিক বিতরণ রয়েছে। এর মধ্যে একটি আপনাকে হয়ত অনেক কাজ বাঁচাতে পারে।

দ্বিতীয়ত, আপনি যদি ফেডোরা এবং আরএইচইএল (বা সেন্টোস বা বৈজ্ঞানিক লিনাক্স) -এর কিকস্টার্টের সাথে পরিচিত হন, আপনি এই বিতরণগুলির কোনও নিজস্ব স্পিন তৈরি করতে ফেডোরা সরঞ্জাম ব্যবহার করতে পারেন। ডকুমেন্টেশনটি কিছুটা ছড়িয়ে ছিটিয়ে রয়েছে তবে এখানেই শুরু করুন


ডেবিয়ান / উবুন্টু সমতুল্য: এফএআই (সম্পূর্ণ স্বয়ংক্রিয় ইনস্টলেশন)
গিলস 'অশুভ হওয়া বন্ধ করুন'

4

নূন্যতম ডিস্ট্রো যেমন আর্ট লিনাক্স দিয়ে শুরু করুন , তারপরে আপনার প্রয়োজনীয় প্যাকেজগুলি ইনস্টল করুন। একটি সাধারণ ওয়েব ব্রাউজারের জন্য উজবাল চেষ্টা করুন ।


uzbl দুর্দান্ত। +1
নাফটুলি কে

3

এটি একটি চমত্কারভাবে জড়িত প্রশ্ন এবং আপনার প্রকল্পটি পুরোপুরি পরিষ্কার না হওয়ায় এই পরামর্শগুলির মধ্যে কয়েকটি অফ-মার্ক হতে পারে, তবে তাদের মূল্যায়নের বিষয়গুলি বিবেচনা করুন।

  • আপনার আর কখনও কম্পিউটারে ওয়েব ব্রাউজারের প্রয়োজন নেই যা ডিসপ্লে অ্যারের অংশ। আপনি যদি অনেকগুলি স্ক্রিন জুড়ে একটি একক পৃষ্ঠা দেখানোর চেষ্টা করছেন, আপনি সম্ভবত কিছু ধরণের গণ প্রদর্শন প্রযুক্তি ব্যবহার করতে চান এমন সম্ভাবনা রয়েছে। এক্সরগের বেশ কয়েকটি রূপ রয়েছে যা বেশ কয়েকটি মেশিনে ভিডিও ডিভাইসগুলির বাইরে একটি বড় ডিসপ্লে তৈরি করতে বিশেষী।

  • এমনকি যদি আপনি প্রতিটি মেশিনে পৃথক এক্স সার্ভার ব্যবহার করেন, আপনি এক বা একাধিক কম্পিউটারের থেকে ডেটা প্রদর্শন প্রেরণ করতে এক্স-ফরোয়ার্ডিং ব্যবহার করতে পারেন, সুতরাং ব্রাউজারগুলি এখনও স্থানীয়ভাবে চালাতে হবে না।

  • আপনি হয় কোনও উইন্ডো ম্যানেজারকে একেবারেই ব্যবহার করতে এবং আপনার অ্যাপ্লিকেশনটির পূর্ণ স্ক্রিন চালু করতে জ্যামিতির নির্দিষ্টকরণ ব্যবহার করতে বা awesomeপ্রতিটি এক্স ডিসপ্লেতে উইন্ডোজ পরিচালনা করতে একটি কনফিগারযোগ্য টাইল বা ফ্রেমওয়ার্ক উইন্ডো ম্যানেজার (যেমন ) ব্যবহার করতে চান। এগুলি পূর্ণ স্ক্রিন উইন্ডোটিকে বাছাই করা এবং নিয়ন্ত্রণ করা সহজ করে এবং অত্যন্ত স্ক্রিপ্টযোগ্য।

  • একটি ব্রাউজার হিসাবে, আমি uzblসম্ভবত স্পষ্ট পছন্দ মনে করি ।

  • এটি নেটওয়ার্ক বুট করার জন্য একটি ভাল অ্যাপ্লিকেশন হতে পারে। আপনি TFTP এর মাধ্যমে নেটবুক কার্নেল এবং এনএফএস এর মাধ্যমে উপলব্ধ একটি ফাইল সিস্টেমের সাহায্যে সার্ভার সেটআপ করতে পারেন। আপনার সমস্ত ক্লায়েন্টকে এই সার্ভারের সাথে যোগাযোগ করতে, তাদের কার্নেলটি ডাউনলোড করতে এবং যেতে একটি নেটবুট সক্ষম এনআইসি ব্যবহার করতে হবে। কোন হার্ড ড্রাইভ জড়িত! এবং সহজ রক্ষণাবেক্ষণ। সমস্ত মেশিন সম্ভাব্য একই চিত্র বুট করতে পারে।

  • আপনার "ডিস্ট্রো" এ সম্ভবত দুটি জিনিস থাকতে হবে। 1) একটি প্যাকেজ সেট এবং 2) কনফিগারেশন ফাইলগুলির একটি সেট। প্যাকেজ সেটটি ইনস্টল করা প্রয়োজন প্যাকেজগুলির একটি তালিকা। এটি সাধারণত একটি পাঠ্য ফাইলে একত্রিত করা যায় এবং তারপরে আপনি বেশিরভাগ ডিস্ট্রোর প্যাকেজ ম্যানেজারকে লক্ষ্য করে এই প্যাকেজগুলির তালিকা ইনস্টল করতে পারেন (কোনও হার্ড ড্রাইভ বা ডিরেক্টরি যা আপনার এনএফএস মাউন্ট পয়েন্ট হবে)। কনফিগারেশন ফাইলগুলি সম্ভবত gitঅন্য কোনও উত্স নিয়ন্ত্রণ সিস্টেমে রাখা উচিত এবং এতে কয়েকটি স্ক্রিপ্ট থাকতে হবে এবং প্যাকেজ সেটটি দিয়ে ইনস্টল করা বেস সিস্টেমে যে কোনও কনফিগার মোডগুলি তৈরি করা দরকার। একটি নতুন সিস্টেম তৈরি করা তখন পরিণত হয়:

    • মাউন্ট ড্রাইভ বা লক্ষ্য ডিরেক্টরি
    • package_manager --install-distro --package-set=/path/packagelist.txt --target=/path
    • cd /target/path
    • git clone /path/to/repo (বা অন্যথায় আপনার সিস্টেমের মূলের কনফিগারেশন কোডটি চেকআউট করুন)
    • ড্রাইভ থাকলে বুটলোডার ইনস্টল করুন বা নেটবूट হলে PXE কনফিগারেশন যুক্ত করুন
    • বুট।

বেস হিসাবে আপনি কী ডিসট্রো ব্যবহার করেন তা নির্ভর করে যা আপনার সবচেয়ে বেশি আরামদায়ক। আমি নিজের জন্য পিএলডি-লিনাক্স ব্যবহার করব, তবে সম্ভবত কোনও নবজাতকের সাথে কাজ করার জন্য আর্কলিনাক্সকে অনুরূপ তবে আরও ভাল ডকুমেন্টেড সিস্টেম হিসাবে সুপারিশ করব । দেবিয়ান , ফেডোরা , বা জেন্টু এটির জন্য কাজ করবে না এমন কোনও কারণ নেই ।


নেট বুটিং অন: এটি দুর্দান্ত শোনায় এবং জিনিসগুলি বজায় রাখা এত সহজ করে তোলে। তবে, প্রতিটি মেশিনকে আলাদা আলাদা ইউআরএল লোড করতে হবে, কারণ তারা মেশিনটির কাছে অনন্য তথ্য আনবে। কি যে করা সম্ভব? অন্য সমস্ত কিছু অবশ্যই বাহ্যত একই থাকবে, যদিও আমি সুরক্ষার সামান্য মাধ্যম হিসাবে এইচটিটিপি-বেসিক প্রমাণীকরণের জন্য পৃথক ব্যবহারকারী / পাসওয়ার্ড ব্যবহার করতে প্রতিটি মেশিনটি কনফিগার করতে পারি।
নাফটুলি কে

অন ​​"প্রতিটি কম্পিউটারে আপনার প্রদর্শিত ব্রাউজারের প্রয়োজন হতে পারে না যা প্রদর্শন অ্যারের অংশ": আমি মনে করি আমি আসলে করব। এই মেশিনগুলির প্রত্যেকটি পৃথক স্থানে থাকবে, ভিজিএ বা এইচডিএমআই এর উপর দিয়ে একটি ড্রাইভিং চালিয়ে that মেশিনটির জন্য একটি অনন্য ওয়েবপৃষ্ঠা প্রদর্শন করবে। (যদিও আমরা এমন একক ইউআরএল পরিবেশন করতে পারি যা ব্যবহারকারীর / পাসওয়ার্ডে সামগ্রী পরিবর্তিত হয়)।
নাফটুলি কে

উইন্ডো পরিচালকদের করুন: আমি সম্ভবত ঠিক সত্যিই একটি লাইটওয়েট একটি ব্যবহার চাই dwmবা awesome। আমি কীভাবে উইন্ডো ম্যানেজারকে পুরো স্ক্রিন মোডে শিরোনাম-বার ছাড়াই একটি অ্যাপ্লিকেশন শুরু করতে বলতে পারি?
নাফটুলি কে

ডিস্ট্রোতে কী থাকতে হবে তা সম্পর্কে: সুতরাং আমার যা দরকার তা হ'ল গিট রেপো তৈরি করা, একটি প্যাকেজ তালিকা এবং কনফিগারেশন ফাইল রাখা এবং তারপরে কোনওভাবে আইএসও তৈরি করা। আমি কীভাবে সবচেয়ে ক্ষুদ্রতম দেবিয়ান ডিস্ট্রো পাব এবং সেখান থেকে কাজ করব? আমি কীভাবে এই কনফিগার ফাইলগুলি গ্রহণ করব এবং একটি জ্বলনযোগ্য আইএসও করব? আমি ডেবিয়ান apt-getবা ব্যবহার করব aptitude
নাফটুলি কে

এক্স-ফরওয়ার্ডিংয়ে: এটি সত্যিই প্রয়োজনীয় হওয়া উচিত নয়, কারণ আমি প্রতি মেশিনে একটি করে ড্রাইভ চালাব। আমাকে সম্ভবত একটি বিপরীত এসএসএইচ সংযোগ ইস্যু করার জন্য একটি উপায় খুঁজে বের করতে হবে যাতে আমার কম্পিউটারটি এটিতে সংযোগ স্থাপন করতে সক্ষম হবে, তবে এটি স্বয়ংক্রিয় করার কোনও উপায় থাকতে পারে। কম্পিউটার থাকার কোনও উপায় কি একটি কম্পিউটার বিতে একটি টিসিপি সংযোগ খুলুন এবং তারপরে এসএসএইচ এর মাধ্যমে কম্পিউটার এ কম্পিউটারের সাথে কান সংযোগ স্থাপন করতে হবে? অন্যথায়, আমাকে প্রতিটি রাউটারের জন্য ডায়নামিক ডিএনএস নামগুলি পেতে হবে: মজা / সহজ নয়।
নাফটুলি কে

2

বিল্ড্রুট 2016.05 + মিডোরি

নূন্যতম ডিস্ট্রোস তৈরির জন্য বিল্ড্রুট একটি দুর্দান্ত সরঞ্জাম:

  • আপনি এটি একটি .configফাইল দিন
  • এটি সমস্ত প্রয়োজনীয় সফ্টওয়্যার এবং নির্ভরতা ডাউনলোড করে এবং সংকলন করে এবং একটি চিত্র তৈরি করে

মিডোরির একটি সর্বনিম্ন ওয়েবকিট- ভিত্তিক ব্রাউজার এবং বিল্ড্রূটের একটি অন্তর্নির্মিত মিডোরি প্যাকেজ রয়েছে।

.configফাইল ব্যবহৃত: https://github.com/cirosantilli/buildroot-configs/blob/32d1174e0bf8d00b92323eebe8901af3f8c389d3/2016.05/qemu_x86_64_x11_midori_defconfig

কীভাবে সেই কনফিগারেশন ফাইলটি তৈরি করা যায়:

  1. অনুসরণ করুন: কীভাবে আমার নিজের লিনাক্স বিল্ড্রুট সিস্টেমে এক্স 11 ইনস্টল করবেন? | এক্স 11 দিয়ে একটি চিত্র তৈরি করতে ইউনিক্স এবং লিনাক্স স্ট্যাক এক্সচেঞ্জ
  2. make menuconfig
    1. টুলচেইন
      1. সি লাইব্রেরি
        1. গ্লিবসি (মিডোরির জন্য)
    2. লক্ষ্য প্যাকেজ
      1. গ্রাফিক গ্রন্থাগার এবং অ্যাপ্লিকেশন
        1. mesa3d
          1. সমস্ত গ্যালিয়াম এবং ডিআরআই ড্রাইভার নির্বাচন করুন যেহেতু কোনটি প্রয়োজন তা আমি বুঝতে পারি না (ওপেনজিএল ইজিএল জন্য)
          2. ওপেনজিএল ইজিএল (libgtk3 এর জন্য)
      2. লাইব্রেরি
        1. গ্রাফিক্স 1. libgtk3 (মিডোরির জন্য)

বিল্ডটি পরিষ্কার করুন কারণ আমরা সরঞ্জামচেইন পরিবর্তন করেছি এবং আবার বিল্ড করব:

rm -rf output
make BR2_JLEVEL=$(nproc)

ঘন্টা অপেক্ষা করুন। তারপরে স্বাভাবিক:

qemu-system-x86_64 \
    -enable-kvm \
    -M pc \
    -m 512 \
    -kernel output/images/bzImage \
    -drive file=output/images/rootfs.ext2,if=virtio,format=raw \
    -append root=/dev/vda \
    -net nic,model=virtio \
    -net user

এবং কিউইএমইউর ভিতরে থেকে:

root
startx

এবং এক্স 11 জিইউআই থেকে একটি xtermউইন্ডো ক্লিক করুন এবং রান করুন:

midori

ফলাফল:

এখানে চিত্র বর্ণনা লিখুন

চিত্রের আকার: 220M! এটি একটি খালি X11 সিস্টেমের 28M এর সাথে তুলনা করুন কীভাবে আমার নিজের লিনাক্স বিল্ড্রুট সিস্টেমে এক্স 11 ইনস্টল করবেন? - ইউনিক্স এবং লিনাক্স স্ট্যাক এক্সচেঞ্জ । ওয়েবকিট + জিটিকে 3 নির্ভরতার কারণে সম্ভবত।

উবুন্টু 16.04 হোস্ট, কিউএমইউ 2.5.0 এ পরীক্ষিত।

NetSurf

এসডিএলে লিখিত, যা fbdev সমর্থন করে: http://www.netsurf-browser.org/about/screenshots/#framebuffer

fbdev একটি নিম্ন স্তরের ইন্টারফেস যা লিনাক্স কার্নেল মডিউল দ্বারা সরবরাহ করা হয় যা X11 এর মধ্য দিয়ে যায় না (আমি মনে করি এক্স 11 বিকল্প হিসাবে এটি ব্যাকএন্ড হিসাবে ব্যবহার করতে পারে)। আপনি মূলত স্মৃতিতে লিখুন এবং এটি স্ক্রিনে প্রদর্শিত হয়।

উবুন্টুতে fbdev ব্যবহার করতে আপনাকে একটি টিটিওয়াইতে থাকতে হবে (যেমন Ctrl + Alt + F1)।

সুতরাং আপনি সম্ভবত একটি চিত্র পার পেয়ে যাবে পথ Midori যে এর চেয়ে ছোট করা হয়েছে।

বিল্ড্রুট 2016.05 এর একটি প্যাকেজ রয়েছে netsurf-buildsystemযা এটি সরবরাহ করা উচিত, তবে আমি পরীক্ষা করিনি। যদি কেউ এটি চালিয়ে যেতে পরিচালিত হয় তবে দয়া করে একটি .config, স্ক্রিনশট এবং চিত্রের আকারের লিঙ্কে সম্পাদনা করুন।


1

আমি একবার একটু বাশ স্ক্রিপ্ট লিখেছি যা একটি আর্চ লিনাক্স আইএসও নেয় এবং একটি পরিবর্তিত মূল চিত্র সহ একটি নতুন আইএসও তৈরি করে যা সম্পূর্ণ স্বয়ংক্রিয়ভাবে ইনস্টল করে। এর মধ্যে রয়েছে পার্টিশন করার পাশাপাশি Xorg, FVWM, এবং ক্রোমিয়ামের সাহায্যে সিস্টেম স্থাপন ও কনফিগার করা। ইনস্টল করা সিস্টেম স্বয়ংক্রিয়ভাবে লগইন করে ক্রোমিয়াম শুরু করবে। একটি নতুন ফ্ল্যাশ ড্রাইভে নতুন আইএসও রাখুন এবং পিছনে হেলান। ;-)

দাবি অস্বীকার: স্ক্রিপ্টটি যেমন রয়েছে তেমন সরবরাহ করা হয়, কোনও ওয়ারেন্টি দেওয়া হয় না। আমি এটি কিছুক্ষণের জন্য ব্যবহার করি নি, সুতরাং এটির জন্য এখানে বা সেখানে একটি টুইটের প্রয়োজন হতে পারে। প্রয়োজন অনুসারে সংশোধন করুন।

#!/bin/bash
# Helpful pages:
#
#   * [ArchWiki topic][1] that explains the options of an AIF configuration
#     file.
#
#   * [Status of automated installation][2], a topic in the Arch Linux Forums
#     that contains the original basic install script by *mhertz*.
#
# [1]: https://wiki.archlinux.org/index.php/AIF_Configuration_File
# [2]: https://bbs.archlinux.org/viewtopic.php?id=111925

TMP_DIR=/tmp/arch-install

# Read command line parameters for input and output ISO files.
if [ -z "$1" ]; then
    echo 'No input file specified, aborting.'
    exit 1
elif [ ! -f "$1" ]; then
    echo 'Input file "'$INPUT_ISO'" not found, aborting.'
    exit 1
elif [ -z "$2" ]; then
    echo 'No output file specified, aborting.'
    exit 1
elif [ -f "$2" ]; then
    echo 'Output file "'$OUTPUT_ISO'" already exists, aborting.'
    exit 1
fi

# Determine full paths to input and output ISO files.
INPUT_ISO=$(readlink -f "$1")
OUTPUT_ISO=$(readlink -f "$2")

# Set some variables for convenience.
SOURCE_DIR=$TMP_DIR/source
DEST_DIR=$TMP_DIR/dest
ROOT_DIR=$TMP_DIR/squashfs-root
BOOT_CFG=$DEST_DIR/boot/isolinux/isolinux.cfg

# Extract ISO image and root image.
mkdir -p $SOURCE_DIR
mount -o loop "$INPUT_ISO" $SOURCE_DIR
cp -a $SOURCE_DIR $DEST_DIR
umount $SOURCE_DIR
rmdir $SOURCE_DIR
unsquashfs -d $ROOT_DIR $DEST_DIR/root-image.sqfs
rm $DEST_DIR/root-image.sqfs

# Modify the root image as needed.
cat >> $ROOT_DIR/etc/aif.conf <<EOF
SOURCE=cd
FILE_URL=file:///src/core/pkg
SYNC_URL=http://ftp.tu-chemnitz.de/pub/linux/archlinux/\$repo/os/\$arch
HARDWARECLOCK=UpTC
TIMEZONE=Europe/Vienna
RUNTIME_REPOSITORIES=
RUNTIME_PACKAGES=
TARGET_GROUPS=base
TARGET_PACKAGES_EXCLUDE=
TARGET_PACKAGES='openssh xorg xcursor-vanilla-dmz-aa'

worker_runtime_network () {
    dhcpcd eth0
}

worker_configure_system () {
    prefill_configs
    sed -i '/^HOSTNAME/ s/"myhost"/"arch"/' \$var_TARGET_DIR/etc/rc.conf
    sed -i '/^password/ s/pam_permit\.so/pam_unix.so md5 shadow/' \$var_TARGET_DIR/etc/pam.d/chpasswd
    sed -i '\|Server = http://ftp\.tu-chemnitz\.de/| s/^#//' \$var_TARGET_DIR/etc/pacman.d/mirrorlist
    sed -i '/id:3:initdefault:/ s/^/#/' \$var_TARGET_DIR/etc/inittab
    sed -i '/id:5:initdefault:/ s/^#//' \$var_TARGET_DIR/etc/inittab
    sed -i '\|x:5:respawn:/usr/bin/xdm| s/^/#/' \$var_TARGET_DIR/etc/inittab
    echo "x:5:respawn:/bin/su -l -c '/usr/bin/startx </dev/null >/dev/null 2>&1' myuser" >> \$var_TARGET_DIR/etc/inittab
    sed -i 's/^timeout .*$/timeout 0/' \$var_TARGET_DIR/boot/grub/menu.lst
    cp /etc/rc.local.firstboot \$var_TARGET_DIR/etc/rc.local
}

# Mandatory variables.
GRUB_DEVICE=/dev/sda
PARTITIONS='/dev/sda 20:ext2:+ 512:swap 2500:xfs *:xfs'
BLOCKDATA='/dev/sda1 raw no_label ext2;yes;/boot;target;no_opts;no_label;no_params
/dev/sda2 raw no_label swap;yes;no_mountpoint;target;no_opts;no_label;no_params
/dev/sda3 raw no_label xfs;yes;/;target;no_opts;no_label;no_params
/dev/sda4 raw no_label xfs;yes;/home;target;no_opts;no_label;no_params'
EOF

cat >> $ROOT_DIR/etc/rc.local <<EOF
aif -p automatic -c /etc/aif.conf
reboot
EOF

cat >> $ROOT_DIR/etc/rc.local.firstboot <<EOF
echo root:rootpassword | chpasswd
useradd -m myuser
echo myuser:myuser | chpasswd
cat >> /home/myuser/.xinitrc <<EOT
#!/bin/sh
exec fvwm2
EOT
cat >> /home/myuser/.Xdefaults <<EOT
Xcursor.theme: Vanilla-DMZ-AA
EOT
mkdir -p /home/myuser/.fvwm
cat >> /home/myuser/.fvwm/config <<EOT
DeskTopSize 1x1
DesktopName 0 Main
DestroyFunc StartFunction
AddToFunc StartFunction
 + I Test (Init) Exec exec xsetroot -solid '#303030'
 + I Test (Init) Exec exec chromium 'http://www.stackoverflow.com'
DestroyMenu RootMenu
AddToMenu RootMenu "Menu" Title
 + "Terminal" Exec exec xterm
 + "Browser" Exec exec chromium 'https://www.stackoverflow.com'
 + "" Nop
 + "Log off" Quit
 + "Reboot" Exec exec sudo /sbin/reboot
 + "Shutdown" Exec exec sudo /sbin/halt
OpaqueMoveSize unlimited
Style * ClickToFocus, ResizeOpaque
Style chromium !Title, !Border, !Handles
CursorStyle root top_left_arrow
CursorStyle stroke hand2
IgnoreModifiers L25
Key Help R A -
Key F1 R A -
Key Tab A M -
Key Escape A MC -
Mouse 1 R A -
Mouse 1 T A Move
Mouse 1 FS A Resize
Mouse 1 I A Iconify Off
Mouse 2 FST A -
Mouse 3 R A Menu RootMenu Nop
EOT
mkdir -p /home/myuser/.config/chromium/Default
touch /home/myuser/.config/chromium/First\ Run
cat >> /home/myuser/.config/chromium/Default/Preferences <<EOT
{
   "alternate_error_pages": {
      "enabled": false
   },
   "autofill": {
      "enabled": false
   },
   "browser": {
      "custom_chrome_frame": true,
      "enable_spellchecking": false
   },
   "default_search_provider": {
       "enabled": true,
       "encodings": "UTF-8",
       "icon_url": "about:blank",
       "id": "2",
       "instant_url": "",
       "keyword": "google.com",
       "name": "Google",
       "prepopulate_id": "1",
       "search_url": "{google:baseURL}search?ie={inputEncoding}&q={searchTerms}",
       "suggest_url": ""
   },
   "devtools": {
      "disabled": true
   },
   "dns_prefetching": {
      "enabled": false
   },
   "download": {
      "directory_upgrade": true
   },
   "extensions": {
      "chrome_url_overrides": {
         "bookmarks": [ "chrome-extension://eemcgdkfndhakfknompkggombfjjjeno/main.html" ]
      }
   },
   "geolocation": {
      "default_content_setting": 2
   },
   "google": {
      "services": {
         "username": ""
      }
   },
   "homepage": "https://www.stackoverflow.com",
   "homepage_is_newtabpage": false,
   "intl": {
      "accept_languages": "en",
      "charset_default": "ISO-8859-1"
   },
   "ntp": {
      "pref_version": 3
   },
   "profile": {
      "clear_site_data_on_exit": true,
      "content_settings": {
         "pref_version": 1
      },
      "default_content_settings": {
         "plugins": 1
      },
      "exited_cleanly": true,
      "notifications_default_content_setting": 2,
      "password_manager_enabled": false
   },
   "safebrowsing": {
      "enabled": false
   },
   "search": {
      "suggest_enabled": false
   },
   "tabs": {
      "use_vertical_tabs": false
   },
   "translate": {
      "enabled": false
   }
}
EOT
chown -R myuser:myuser /home/myuser
pacman -Sy
pacman -S --noconfirm pacman
pacman -S --noconfirm fvwm-devel chromium sudo
echo 'myuser arch=NOPASSWD: /sbin/halt,/sbin/reboot' > /etc/sudoers.d/start_stop
chmod 0440 /etc/sudoers.d/start_stop
rm /etc/rc.local
EOF

# Create the new root image.
mksquashfs $TMP_DIR/squashfs-root $TMP_DIR/dest/root-image.sqfs
rm -rf $TMP_DIR/squashfs-root

# Configure the boot loader.
sed -i 's/TIMEOUT 3000/TIMEOUT 100/' $BOOT_CFG
sed -i '/APPEND hd0 0/d' $BOOT_CFG
sed -i 's/archisolabel=[^ ]*/archisolabel=ARCH/' $BOOT_CFG

# Create the new ISO image.
genisoimage -l -R -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat \
    -no-emul-boot -boot-load-size 4 -boot-info-table -V ARCH \
    -o "$OUTPUT_ISO" $DEST_DIR
rm -rf $TMP_DIR
isohybrid "$OUTPUT_ISO"

0

এই মত একটি সিস্টেমের জন্য আমি বলতে চাই পাপী

আপনি লিনাক্সের যে কোনও সংস্করণ ব্যবহার করে আপনাকে ডিস্ট্রো বানাতে পারবেন, কুকুরছানা কাস্টম বুটযোগ্য ইমেজগুলি তৈরি করা খুব সহজ করে তোলে, এটি কমপ্যাক্ট ডিজাইনের জন্য ডিজাইন করা হয়েছে এবং এতে দুর্দান্ত ওভারলে ফাইল সিস্টেম সমর্থন রয়েছে।

আমার কেবল হার্ড ড্রাইভটি ডিডি করতে সক্ষম হওয়া উচিত

না - আমি কোনও বুটেবল ছবি তৈরির পুনঃনির্মাণ চাই যা আপনি বুদ্ধিমানভাবে বজায় রাখতে পারবেন - আপনার প্রস্তাবিত পদ্ধতির ফিরে আসবে এবং আপনাকে কামড় দেবে।


জিনিসটি হ'ল, আমি একটি থাম্ব ড্রাইভে অপারেটিং সিস্টেম চালাব। আমারও সম্ভবত ডিস্ক ড্রাইভ নেই যা দিয়ে ওএস ইনস্টল করতে হবে।
নাফটুলি কে

0
  • বেশিরভাগ লোক উজবিএল উল্লেখ করেছেন এবং আমি সম্মত হলাম এটি একটি দুর্দান্ত পছন্দ - তবে আপনি সম্ভবত লুয়াকিটকে আরও ভাল দেখতে পাবেন।

  • কালেব যেমন ইতিমধ্যে উল্লেখ করেছেন, আপনার কোনও উইন্ডো ম্যানেজারের সত্যই প্রয়োজন নেই । এখানে একটি উদাহরণ স্ক্রিপ্ট যা আমি সর্বোচ্চ লুইকিট ব্রাউজারের সাথে ডাব্লুএম-কম এক্সরগ সার্ভার চালানোর জন্য তৈরি করেছি:

    #!/bin/sh
    XDCMD="xdotool search --class luakit windowsize %3 100% 100%"
    while [ 1 ]
    do
        ( sleep 0.5; $XDCMD || sleep 0.2 && $XDCMD || sleep 5 && $XDCMD ) &
        /usr/bin/luakit $@
    done
    

    লুয়াকিত শুরু হওয়ার ঠিক পরে উইন্ডোটি সর্বাধিক করতে এটি xdotool ব্যবহার করে । এর আরও ভাল সমাধান হতে পারে যদিও ...

  • এই ধরনের সিস্টেমের বেসের জন্য, আমি অবশ্যই জেন্টুর পরামর্শ দেব। এটি কেবলমাত্র আমি সবচেয়ে ভাল জানি কারণই নয়;) তবে এটি বিশ্বব্যাপী সমস্ত ইনস্টলড সফ্টওয়্যারটির বিল্ড-টাইম বিকল্পগুলি পরিচালনা করার জন্য একটি অনন্য পদ্ধতির ব্যবহার করে। আমি ইউএসই পতাকা বোঝাচ্ছি । এগুলি ব্যবহার করে, আপনি বৈশিষ্ট্যগুলি / গ্রন্থাগারগুলি / মানদণ্ডগুলির সেট নির্ধারণ করেন যা তাদের সমর্থন করে এমন সমস্ত প্রোগ্রামগুলির দ্বারা ব্যবহৃত হয় - সুতরাং উদাহরণস্বরূপ, আপনি যদি আপনার প্রোগ্রামগুলি ALSA ব্যবহার করতে চান এবং এসএসডি, জ্যাক বা পালসৌদিওর মতো অতিরিক্ত অডিও ব্যাকেন্ডের প্রয়োজন না হয়, আপনি alsa -jack -esd -pulseaudioআপনার ব্যবহারের পতাকা রাখেন । এর পরে, আপনি তৈরি করতে পারবেন এমন প্রতিটি সফ্টওয়্যারALSA ব্যতীত অতিরিক্ত অডিও ব্যাকেন্ডগুলি ব্যবহার করুন তাদের সমর্থন ব্যতীত নির্মিত হবে। যেহেতু এটি কনফিগারেশন / বিল্ড স্তরে ঘটে, তাই আপনি উল্লেখযোগ্যভাবে পাতলা সফ্টওয়্যার দিয়ে শেষ করেন। সুতরাং এটি নিচে নামার পরিবর্তে (সমস্ত নির্ভরতা সম্মান করার সময়) গড়ে তোলার দর্শন (যা বগি এবং বজায় রাখা খুব কঠিন হয়ে যেতে পারে)।


0

আমি এটি উল্লেখ করব কারণ আমি অবাক হয়েছি কারও কাছে নেই।

স্ক্র্যাচ থেকে লিনাক্স এমন একটি বই (পিডিএফ) যা আপনাকে নিজের লিনাক্স বিতরণ তৈরির পথে নিয়ে যায়। আপনি যা অর্জন করার চেষ্টা করছেন তার জন্য এটি অতিমাত্রার কাজ হতে পারে (আসলে এটি আপনার কাছে ইতিমধ্যে আপনার প্রয়োজনীয় সরঞ্জামগুলি রয়েছে বলেই দেখা হচ্ছে) তবে এটি কীভাবে সিস্টেম কাজ করে তা বোঝার ক্ষেত্রে এটি একটি অমূল্য সরঞ্জাম হিসাবে প্রমাণিত হতে পারে। এটি সত্যিই এত কঠিন নয় এবং এর সাথে কোনও প্রোগ্রামিং জড়িত নেই।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.