मैं एक साधारण वेब ब्राउज़र चलाने के लिए कस्टम वितरण कैसे बना सकता हूं?


18

हम एक बड़े स्क्रीन पर एकल वेब पेज प्रदर्शित करने के उद्देश्य से कुछ हल्की मशीनों को जोड़ रहे हैं। मुझे मशीन को अनिवार्य रूप से हल्के और जितनी जल्दी हो सके बूट करने की आवश्यकता है और अनिवार्य रूप से इसे एक ब्राउज़र (WebKit?) पूरी स्क्रीन में चलाया है, एक पेज लोड कर रहा है जिसे जावास्क्रिप्ट द्वारा गतिशील रूप से नियंत्रित किया जाएगा। मैं एकीकृत GPU के साथ एक इंटेल D525 दोहरे कोर प्रोसेसर का उपयोग कर रहा हूं, इसलिए मुझे किसी भी मालिकाना ग्राफिक्स ड्राइवरों को स्थापित करने की आवश्यकता नहीं होनी चाहिए। एक बार जब मैं इनमें से एक मशीन को ठीक से स्थापित कर ddलेता हूं, तो मुझे बस अपने कंप्यूटर पर हार्ड ड्राइव में सक्षम होना चाहिए और फिर प्रत्येक नई मशीन पर डंप करना चाहिए।

मेरे पास निम्नलिखित प्रश्न हैं:

  1. मैं "वितरण" कैसे बना सकता हूं जिसमें केवल वही शामिल है जो मुझे चाहिए? मुझे लगता है कि मुझे कर्नेल (;)), X और कुछ प्रकार के वेब ब्राउज़र की आवश्यकता होगी, लेकिन वास्तव में बहुत अधिक नहीं। क्या मैं उबंटू सर्वर जैसा कुछ ले सकता हूं और बस एक्स सर्वर स्थापित कर सकता हूं और मशीन को स्वचालित रूप से लॉग इन करने, एक्स शुरू करने और वेब ब्राउज़र शुरू करने का कोई तरीका खोज सकता हूं, कोई सवाल नहीं पूछा गया? क्या कोई किताब है जिसे मैं पढ़ सकता हूं या एक लेख या कुछ और?

  2. मैं एक अच्छे, छीन लिए गए वेब ब्राउज़र के लिए क्या उपयोग कर सकता हूं जो अनिवार्य रूप से "क्रोमलेस क्रोमियम" चलाता है। ये मशीनें उपयोगकर्ता इनपुट को बिल्कुल भी स्वीकार नहीं करेंगी। अगर मुझे उन्हें प्रबंधित करने की आवश्यकता है, तो मैं एसएसएच का उपयोग करूंगा।

जवाबों:


12

कई वितरणों में न्यूनतम स्थापित करने के लिए कुछ सुविधा है; अनिवार्य रूप से जहां आप मैन्युअल रूप से केवल उन पैकेजों का चयन करते हैं जिन्हें आप स्पष्ट रूप से स्थापित करना चाहते हैं। डेबियन में यह क्षमता है और आपकी स्थिति में अन्य स्पष्ट न्यूनतम दावेदार आर्क लिनक्स की तुलना में बेहतर विकल्प होगा।

आर्क के रोलिंग रिलीज की स्थिति चल रही जटिलता का एक स्तर प्रदान कर सकती है जिसे आप बचाना चाहते हैं। डेबियन सरल, न्यूनतम आधार प्रदान करेगा जिसे आप प्लस ऑफ़र स्थिरता के लिए देख रहे हैं। एक ब्लॉग के रूप में डेबियन का उपयोग करने पर एक कियोस्क है जो कुछ उपयोगी सुझाव दे सकता है।

एक ब्राउज़र के लिए, जैसा कि beav_35 से पता चलता है, उज़बेल एक अच्छा विकल्प है। मेरी सिफारिश Vimprobable होगी , एक WebKit ब्राउज़र जो कि स्क्रिप्ट करने योग्य है, कीबोर्ड से संचालित है और इसे SSH पर प्रभावी ढंग से नियंत्रित किया जा सकता है।

एक खिड़की प्रबंधक के रूप में, मैं dwm की सिफारिश करूंगा : 2000 से कम SLOC में, यह बेहद हल्का है और इसे आसानी से कियोस्क-टाइप सेटअप के लिए कॉन्फ़िगर किया जा सकता है।


dwm इस उद्देश्य के लिए बहुत अच्छा लग रहा है, और मैं वैसे भी डेबियन आधारित प्रणालियों से अधिक परिचित हूं, इसलिए मैं शायद डेबियन का उपयोग करूंगा। आपको कितना छोटा लगता है कि मैं ओएस को नीचे ला सकता हूं? और मैं डेबियन वितरण कैसे बना सकता हूं?
नफ़तुली Kay

जब आप स्थापना के माध्यम से आगे बढ़ते हैं, जब आप लैपटॉप, मानक, आदि के बजाय कुछ चुनिंदा संकुल चरण पर पहुंचते हैं, तो "मैनुअल" चुनें और केवल उन पैकेजों का चयन करें (जैसे एक्स) आपको एक नंगे न्यूनतम के लिए आवश्यक है
बिजनेसकार्ड

5

सबसे पहले, आप पहिया को सुदृढ़ नहीं करना चाह सकते हैं ... कई कियोस्क-केंद्रित वितरण हैं। उनमें से एक आपको बहुत काम बचा सकता है।

दूसरा, यदि आप फेडोरा और आरएचईएल (या सेंटोस या वैज्ञानिक लिनक्स) पर किकस्टार्ट से परिचित हैं, तो आप उन वितरणों में से किसी एक का अपना स्पिन बनाने के लिए फेडोरा टूल्स का उपयोग कर सकते हैं। प्रलेखन थोड़ा बिखरा हुआ है, लेकिन यहां से शुरू करें


डेबियन / उबंटू समकक्ष: एफएआई (पूरी तरह से स्वचालित स्थापना)
गिल्स एसओ- बुराई को रोकें '


3

यह एक बहुत ही सम्मिलित प्रश्न है, और चूंकि आपकी परियोजना पूरी तरह से स्पष्ट नहीं है, इसलिए इनमें से कुछ सुझाव ऑफ-मार्क हो सकते हैं, लेकिन मूल्यांकन के लिए उन चीजों पर विचार करें।

  • आपको कभी भी कंप्यूटर पर एक वेब ब्राउज़र की आवश्यकता नहीं हो सकती है जो प्रदर्शन सरणी का हिस्सा है। यदि आप कई स्क्रीन पर एक ही पृष्ठ दिखाने का प्रयास कर रहे हैं, तो संभावना है कि आप किसी प्रकार की बड़े पैमाने पर प्रदर्शन तकनीक का उपयोग करना चाहते हैं। Xorg के कई संस्करण हैं जो कई मशीनों पर वीडियो उपकरणों में से एक बड़े डिस्प्ले को बनाने में विशेषज्ञ हैं।

  • यहां तक ​​कि अगर आप प्रत्येक मशीन पर अलग एक्स सर्वर का उपयोग करते हैं, तो आप एक या अधिक अन्य कंप्यूटरों से डिस्प्ले डेटा भेजने के लिए एक्स-फॉरवर्डिंग का उपयोग कर सकते हैं, इसलिए ब्राउज़रों को अभी भी स्थानीय रूप से नहीं चलना होगा।

  • आप या तो किसी भी विंडो प्रबंधक का उपयोग नहीं करना चाहेंगे और अपने ऐप को पूर्ण स्क्रीन लॉन्च करने के लिए ज्यामिति विनिर्देशों का उपयोग करें, या awesomeप्रत्येक एक्स डिस्प्ले पर खिड़कियों का प्रबंधन करने के लिए एक कॉन्फ़िगर करने योग्य टाइल या फ्रेमवर्क विंडो प्रबंधक (जैसे ) का उपयोग करें। ये पूर्ण स्क्रीन विंडो को सॉर्ट और नियंत्रित करना आसान बनाते हैं और अत्यधिक स्क्रिप्ट योग्य हैं।

  • एक ब्राउज़र के रूप में, मुझे लगता uzblहै कि संभावना स्पष्ट विकल्प है।

  • यह नेटवर्क बूटिंग के लिए एक अच्छा अनुप्रयोग हो सकता है। आप सर्वर को TFTP के माध्यम से उपलब्ध नेटबुक कर्नेल और nfs के माध्यम से उपलब्ध फाइल सिस्टम के साथ सेटअप कर सकते हैं। आपके सभी क्लाइंट को इस सर्वर से संपर्क करने, उनकी कर्नेल डाउनलोड करने और जाने के लिए नेटबूट सक्षम एनआईसी का उपयोग करने की आवश्यकता है। कोई हार्ड ड्राइव शामिल नहीं है! और आसान रखरखाव। सभी मशीनें संभावित रूप से एक ही छवि को बूट कर सकती हैं।

  • आपके "डिस्ट्रो" में संभवतः दो चीजें होनी चाहिए। 1) एक पैकेज सेट और 2) कॉन्फ़िगरेशन फ़ाइलों का एक सेट। पैकेज सेट उन पैकेजों की एक सूची है जिन्हें स्थापित करने की आवश्यकता है। यह आमतौर पर एक पाठ फ़ाइल में इकट्ठा किया जा सकता है और फिर आप पैकेज की इस सूची को लक्ष्य तक स्थापित करने के लिए सबसे डिस्ट्रो के पैकेज प्रबंधकों का उपयोग कर सकते हैं (या तो एक हार्ड ड्राइव या एक निर्देशिका जो आपके एनएफ़एस माउंट बिंदु होगी)। कॉन्फ़िगरेशन फ़ाइलों को संभवतः gitया किसी अन्य स्रोत नियंत्रण प्रणाली में रखा जाना चाहिए और इसमें कुछ स्क्रिप्ट होती हैं और पैकेज सेट के साथ स्थापित बेस सिस्टम में जो भी कॉन्फ़िगर मोड की आवश्यकता होती है। एक नई प्रणाली का निर्माण तब बनता है:

    • माउंट ड्राइव या लक्ष्य निर्देशिका
    • package_manager --install-distro --package-set=/path/packagelist.txt --target=/path
    • cd /target/path
    • git clone /path/to/repo (या अन्यथा सिस्टम रूट पर अपने कॉन्फिग कोड की जांच करें)
    • अगर बूटलोडर को ड्राइव करें या नेटबूट में पीएक्सई कॉन्फिगर जोड़ें
    • बूट।

एक आधार के रूप में आप जो डिस्ट्रो का उपयोग करते हैं, उस पर निर्भर होना चाहिए कि आप किस चीज के साथ सबसे अधिक आरामदायक हैं मैं अपने लिए पीएलडी-लिनक्स का उपयोग करूंगा, लेकिन शायद एक नौसिखिया के साथ काम करने के लिए आर्केलिनक्स को एक समान लेकिन बेहतर दस्तावेज प्रणाली के रूप में सुझाएगा । कोई कारण नहीं है कि डेबियन , फेडोरा या जेंटू इसके लिए काम नहीं करेगा।


नेट बूटिंग पर: जो कि बहुत अच्छा लगता है और चीजों को बनाए रखने के लिए इतना आसान बना देगा। हालाँकि, प्रत्येक मशीन को एक अलग URL लोड करने की आवश्यकता होती है, क्योंकि वे मशीन के लिए अद्वितीय जानकारी प्राप्त करेंगे। क्या वह करने योग्य है? बाकी सब कुछ सामान्य रूप से एक ही रहेगा, हालाँकि मैं सुरक्षा के थोड़े से साधनों के रूप में HTTP-बेसिक प्रमाणीकरण के लिए एक अलग उपयोगकर्ता / पासवर्ड का उपयोग करने के लिए प्रत्येक मशीन को कॉन्फ़िगर कर सकता हूं।
नफ़तुली Kay

"आपको हर कंप्यूटर पर एक वेब ब्राउज़र की आवश्यकता नहीं हो सकती है जो प्रदर्शन सरणी का हिस्सा है": मुझे लगता है कि मैं वास्तव में करूंगा। इन मशीनों में से प्रत्येक एक अलग स्थान पर होगी, वीजीए या एचडीएमआई पर एक प्रदर्शन ड्राइविंग, उस मशीन के लिए एक अद्वितीय वेबपेज प्रदर्शित करना। (हालांकि हम एक एकल URL की सेवा कर सकते हैं जो उपयोगकर्ता / पासवर्ड की सामग्री को बदलता है)।
नफ़तुली Kay

खिड़की के प्रबंधकों पर: मैं शायद सिर्फ एक बहुत ही हल्के dwmया जैसे का उपयोग करूँगा awesome। मैं फुल स्क्रीन मोड में टाइटल-बार के बिना एप्लिकेशन शुरू करने के लिए विंडो मैनेजर को कैसे बता सकता हूं?
नफ़तुली Kay

क्या distro से मिलकर होना चाहिए: तो मुझे वास्तव में एक git रेपो बनाने की ज़रूरत है, एक पैकेज सूची और कॉन्फ़िगरेशन फ़ाइलों को रखें, और फिर किसी भी तरह एक ISO बनाएँ। मैं सबसे नन्हा डेबियन डिस्ट्रो कैसे प्राप्त करूं और फिर वहां से काम करूं? मैं इन कॉन्फ़िगर फ़ाइलों को कैसे ले सकता हूं और एक जलाने योग्य आईएसओ बना सकता हूं? मैं उपयोग apt-getकर रहा हूँ या aptitudeडेबियन पर।
Naftuli Kay

एक्स-फ़ॉरवर्डिंग पर: यह वास्तव में आवश्यक नहीं होना चाहिए, क्योंकि मैं प्रति मशीन एक डिस्प्ले चला रहा हूं। मुझे शायद मशीन को रिवर्स एसएसएच कनेक्शन जारी करने का एक तरीका खोजना होगा ताकि मेरा कंप्यूटर इससे जुड़ सके, लेकिन इसे स्वचालित करने का एक तरीका हो सकता है। क्या कोई तरीका है कंप्यूटर A में कंप्यूटर B के लिए एक TCP कनेक्शन खुला है और फिर SSH के माध्यम से कंप्यूटर A को कंप्यूटर A से कनेक्ट किया गया है? अन्यथा, मुझे प्रत्येक राउटर के लिए डायनेमिक DNS नाम प्राप्त करने होंगे: मज़ेदार / आसान नहीं।
Naftuli Kay

2

बिल्डरोट 2016.05 + मिडोरी

बिल्डरोट न्यूनतम डिस्ट्रोस बनाने के लिए एक महान उपकरण है:

  • आप इसे एक .configफ़ाइल दें
  • यह सभी आवश्यक सॉफ़्टवेयर और निर्भरताओं को डाउनलोड और संकलित करता है, और एक छवि तैयार करता है

Midori एक न्यूनतर WebKit- आधारित ब्राउज़र है, और Buildroot में एक अंतर्निहित Midori पैकेज है।

.configफ़ाइल का इस्तेमाल किया: https://github.com/cirosantilli/buildroot-configs/blob/32d1174e0bf8d00b92323eebe8901af3f8c389d3/2016.05 .qemu_x86_6411_x11_midori_defconfig

उस config फाइल को कैसे जनरेट करें:

  1. अनुसरण करें: मेरे अपने लिनक्स बिल्डरो सिस्टम पर X11 कैसे स्थापित करें? | X11 के साथ एक छवि बनाने के लिए यूनिक्स और लिनक्स स्टैक एक्सचेंज
  2. make menuconfig
    1. toolchain
      1. C पुस्तकालय
        1. glibc (midori के लिए)
    2. लक्ष्य पैकेज
      1. ग्राफिक पुस्तकालयों और अनुप्रयोगों
        1. mesa3d
          1. सभी गैलियम और DRI ड्राइवरों का चयन करें क्योंकि मुझे समझ नहीं आ रहा है कि किसकी ज़रूरत है (OpenGL EGL के लिए)
          2. OpenGL EGL (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

और QEMU के अंदर से:

root
startx

और X11 GUI से एक xtermविंडो क्लिक करें और चलाएं:

midori

परिणाम:

यहाँ छवि विवरण दर्ज करें

छवि का आकार: 220M! तुलना करें कि एक नंगे एक्स 11 सिस्टम के 28 एम के लिए मेरे अपने लिनक्स बिल्डरोट सिस्टम पर एक्स 11 कैसे स्थापित करें? - यूनिक्स और लिनक्स स्टैक एक्सचेंज । संभवतः WebKit + GTK3 निर्भरता के कारण।

Ubuntu 16.04 होस्ट, QEMU 2.5.0 पर परीक्षण किया गया।

NetSurf

SDL में लिखा गया है, जो fbdev का समर्थन करता है: http://www.netsurf-browser.org/about/screenshots/#framebuffer

fbdev एक लिनक्स कर्नेल मॉड्यूल द्वारा प्रस्तुत एक निम्न स्तर का इंटरफ़ेस है जो X11 के माध्यम से नहीं जाता है (मुझे लगता है कि X11 वैकल्पिक रूप से इसे बैकेंड के रूप में उपयोग कर सकता है)। आप मूल रूप से सिर्फ मेमोरी में लिखते हैं और यह स्क्रीन पर दिखता है।

Ubuntu पर fbdev का उपयोग करने के लिए, आपको एक TTY (जैसे Ctrl + Alt + F1) पर होना होगा।

तो आप शायद एक छवि के साथ भाग प्राप्त कर सकते हैं जिस तरह से मिडोरी से बहुत कम होता।

Buildroot 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

इस तरह की प्रणाली के लिए मैं पिल्ला की सिफारिश करूंगा ।

जब आप लिनक्स के किसी भी संस्करण का उपयोग करके आपको डिस्ट्रो का निर्माण कर सकते हैं, तो पिल्ला कस्टम बूट करने योग्य चित्रों का निर्माण करना बहुत आसान बना देता है , कॉम्पैक्ट होने के लिए डिज़ाइन किया गया है और इसमें शानदार ओवरले फ़ाइल सिस्टम समर्थन है।

मैं सिर्फ हार्ड ड्राइव को dd करने में सक्षम होना चाहिए

नहीं - मैं एक बूट करने योग्य छवि बनाने की सिफारिश करूंगा, जिसे आप समझदारी से बनाए रख सकते हैं - आपके द्वारा सुझाया गया दृष्टिकोण वापस आ जाएगा और आपको काट देगा।


बात यह है, मैं एक अंगूठे ड्राइव पर ऑपरेटिंग सिस्टम चला रहा हूँ। मेरे पास संभवतः एक डिस्क ड्राइव भी नहीं है जिसके साथ ओएस स्थापित करना है।
Naftuli Kay

0
  • कई लोगों ने uzbl का उल्लेख किया और मैं मानता हूं कि यह एक अच्छा विकल्प है - लेकिन आप पा सकते हैं लूकीट को और भी बेहतर।

  • जैसा कि कालेब ने पहले ही उल्लेख किया है, आपको वास्तव में ज़रूरत नहीं है किसी विंडो मैनेजर की । यहाँ एक उदाहरण लिपि है जिसे मैंने WM-कम Xorg सर्वर को चलाने के लिए तैयार किया है जिसमें अधिकतम लाउकीट ब्राउज़र है:

    #!/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 के अलावा अतिरिक्त ऑडियो बैकएंड का उपयोग उन लोगों के समर्थन के बिना बनाया जाएगा। चूंकि यह कॉन्फ़िगरेशन / बिल्ड स्तर पर होता है, इसलिए आप काफी पतले सॉफ़्टवेयर के साथ समाप्त होते हैं। तो यह नीचे गिरने के बजाय (जो सभी निर्भरता का सम्मान करते हुए) निर्माण का एक दर्शन है (जो कि छोटी गाड़ी होने और बनाए रखने के लिए बहुत कठिन हो सकता है)। USE झंडे । उन का उपयोग करते हुए, आप उन सुविधाओं / पुस्तकालयों / मानकों के सेट को निर्धारित करते हैं जो उन सभी कार्यक्रमों द्वारा उपयोग किए जाते हैं जो उनका समर्थन करते हैं - इसलिए, उदाहरण के लिए, यदि आप चाहते हैं कि आपके प्रोग्राम ALSA का उपयोग करें और आपको esd, jack या pulseaudio जैसे अतिरिक्त ऑडियो बैकेंड की आवश्यकता नहीं है, तो आप डाल alsa -jack -esd -pulseaudioआपके उपयोग के झंडे के बीच में। उसके बाद, सॉफ्टवेयर के प्रत्येक टुकड़े आपको लगता है कि निर्माण कर सकते हैं


0

मैं इसका उल्लेख करूंगा क्योंकि मुझे आश्चर्य है कि किसी और के पास नहीं है।

स्क्रैच से लिनक्स एक पुस्तक (पीडीएफ) है जो आपको अपने स्वयं के लिनक्स वितरण के निर्माण के माध्यम से चलता है। यह उस चीज़ के लिए ओवरकिल हो सकता है जिसे आप पूरा करने की कोशिश कर रहे हैं (वास्तव में, यह देख रहा है कि आपके पास पहले से ही आपके पास आवश्यक उपकरण हैं), लेकिन यह समझने में एक अमूल्य उपकरण साबित हो सकता है कि सिस्टम कैसे काम करता है। यह वास्तव में कठिन नहीं है और इसमें कोई प्रोग्रामिंग शामिल नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.