Startx कमांड क्या करती है?


18

उबंटू के बारे में पढ़ते हुए मुझे निम्नलिखित कथन मिला ....।

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

डिफॉल्ट रनलेवल होने का क्या मतलब है? और जब मैंने अपने टर्मिनल पर यह कोशिश की तो मुझे यह मिल गया:

anupam@JAZZ:~$ startx

X: user not authorized to run the X server, aborting.
xinit: giving up
xinit: unable to connect to X server: Connection refused
xinit: server error

मैं बस startx दौड़ा, लेकिन मैं आप के रूप में एक ही त्रुटि है तो मैं इसे sudo किया था। मुड़ता है यह मुझे रूट खाते में लॉग इन किया। मैंने अपने उपयोगकर्ता के पास लौटने के लिए जो रूट से लॉगआउट किया था।

जवाबों:


25

एक बार (1), जब कंप्यूटर की मेमोरी किलोबाइट में मापी गई थी और मेगाबाइट में डिस्क, ग्राफिक इंटरफ़ेस को हर समय चलाना हानिकारक माना जाता था।

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

इसलिए जब आपको एक ग्राफिकल इंटरफ़ेस की आवश्यकता होती है तो आपने इसे startx(2) के साथ शुरू किया है ।

startxमूल रूप से एक Xserver (चित्रमय "ड्राइवर") चलाता है और एक कमांड जो इस पर चलता है, जो आमतौर पर एक विंडो मैनेजर है । डिफ़ॉल्ट रूप से चलाए जाने वाले आदेश ~/.xinitrcआपके घर निर्देशिका में फ़ाइल में हैं, या कुछ सामान्य प्रणाली फ़ाइल अन्यथा।

आधुनिक प्रणालियों को माना जाता है कि नीचे से हर समय एक ग्राफिकल प्रणाली चल रही है, इसलिए किसी ने शायद startxयुगों तक काम करने की जाँच नहीं की है - जो आपके लिए बहुत सारे अजीब व्यवहार की व्याख्या करता है।

यदि आप पुराने समय में प्रयोग करना चाहते हैं और अच्छा महसूस करना चाहते हैं, तो सबसे अच्छी बात यह है कि निम्नलिखित कार्य करें:

ए) स्थापित करें Xnestऔर fvwmएक्सनेस्ट एक ग्राफिक सर्वर-इन-ए-सर्वर है, एक तरह का सर्वर जो आपके सामान्य सिस्टम में एक विंडो के रूप में खुलेगा। Fvwm एक बहुत ही सरल विंडो मैनेजर है जो तब बहुत लोकप्रिय था। आपको पुराने पिक्समैप फ़ॉन्ट की भी आवश्यकता होगी।

sudo apt-get install xnest fvwm 
sudo apt-get install xfonts-100dpi xfonts-100dpi-transcoded xfonts-75dpi-transcoded xfonts-75dpi 

बी) इस फ़ाइल को कहीं न कहीं, उदाहरण के लिए आप घर पर ही लिखें, और इसे कॉल करें ~/test:

#!/bin/bash 
#
xterm & 
exec fvwm2

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

cd ~
startx ~/test -- /usr/bin/Xnest -ac :1 -geometry 800x600

... और आपके पास 80 के दशक की वर्कस्टेशन स्क्रीन है:

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

(आप "एक्सनेस्ट" डेस्कटॉप पर क्लिक करके मेनू कर सकते हैं)।

... और यदि आप वास्तव में साहसी महसूस करते हैं, तो आप Ctrl-Alt-F1, loggin in, और उनमें से एक के साथ जाकर एक अन्य वर्चुअल कंसोल (अन्य उत्तर पढ़ें) पर एक मूल सत्र शुरू कर सकते हैं

startx ~/test 

जो सामान्य रूप से Ctrl-Alt-F8 पर खुलेगा।

सूचना : आधुनिक डेस्कटॉप वातावरण दो अलग-अलग कंसोलों में एक ही उपयोगकर्ता के लिए एक साथ चलने के लिए डिज़ाइन नहीं किए गए हैं। तो उपयोग नहीं करते हैं gnome-shellया unityजब यह प्रयोगों कर या आधुनिक चीजें हैं, या आप गंदगी आपके विन्यास कर सकते थे।


फुटनोट:

(१) १ ९90०- ९ ० के आसपास यहाँ के बारे में बोलना।

(2) उदाहरण के लिए, मेरे पास 256k RAM वाला एक लैपटॉप था। यह (B & W!) ग्राफिक इंटरफ़ेस में बहुत धीमी गति से था, लेकिन कंसोल में तेज़ था। तो मैं अपने काम (संपादन के सबसे किया था C, LaTeXऔर इसी तरह की फ़ाइलें) कंसोल मोड में, और ग्राफिक वातावरण केवल जब वास्तव में जरूरत करने लगे।


4
थैंक्स @ रमानो, महान व्याख्या पूरी तरह से मिल गई ...
लाजर

9

startx xsession या ग्राफ़िकल इंटरफ़ेस शुरू करता है, जहाँ आप एक लॉगिन स्क्रीन देखते हैं और सिर्फ ascii कंसोल (टेक्स्ट सेशन) से अधिक कुछ भी।

आप यह त्रुटि प्राप्त कर रहे हैं क्योंकि xsession पहले ही शुरू हो चुका है और आप ts7 पर xsession के अंदर से कमांड निष्पादित करने का प्रयास कर रहे हैं।

tty7 यूजर इंटरफेस है कि कम से मौजूद है ctrl+ alt+ f7(डिफ़ॉल्ट xsession)।

tty1 उपयोगकर्ता इंटरफ़ेस है जो ctrl+ alt+ पर मौजूद है f1

tty2 उपयोगकर्ता इंटरफ़ेस है जो ctrl+ alt+ पर मौजूद है f2। । । और इसी तरह।

tty1 - tty6 पाठ सत्र हैं और आप इनमें से किसी एक स्क्रीन पर अपने उपयोगकर्ता नाम और पासवर्ड से लॉगिन कर सकते हैं। लॉगिन करने के बाद, आप कमांड को रन कर सकते हैं startxऔर xsession tty7 में शुरू होगा अगर यह पहले से चल नहीं रहा है और tty8 अगर tty7 पहले से ही xsession चल रहा है।


रन स्तर:

रन-लेवल 0 हाल्ट - सिस्टम को बंद कर देता है।

रन-लेवल 1 एकल-उपयोगकर्ता मोड - प्रशासनिक कार्यों के लिए मोड।

रन-लेवल 2 ग्राफिकल मल्टी-यूजर विद नेटवर्किंग - सिस्टम को सामान्य रूप से शुरू करता है।

रन-लेवल 3-5 अप्रयुक्त लेकिन रनलेवल 2 के समान कॉन्फ़िगर किया गया

रन-लेवल 6 रिबूट - सिस्टम को रिबूट करता है।

रनलेवल शब्द कंप्यूटर ऑपरेटिंग सिस्टम में से एक में ऑपरेशन के एक मोड को संदर्भित करता है जो यूनिक्स सिस्टम वी-स्टाइल आरंभीकरण को लागू करता है। परंपरागत रूप से, सात रनवे मौजूद होते हैं, जो शून्य से छह तक होते हैं; हालांकि दस से ऊपर, शून्य से नौ तक [प्रशस्ति पत्र की जरूरत], इस्तेमाल किया जा सकता है। S को कभी-कभी किसी एक स्तर के पर्याय के रूप में प्रयोग किया जाता है। केवल एक "रनलेवल" bootup पर निष्पादित किया जाता है - चलाने का स्तर क्रमिक रूप से या तो रन लेवल 2 या 3 या 4 निष्पादित किया जाता है, नहीं 2 तो फिर 3 4. निष्पादित नहीं कर रहे हैं, यानी - en.wikipedia.org/wiki/Runlevel


Thanx यह मुझे बहुत मदद की mchid,
लाजर

लेकिन जब मैंने tty1 पर लॉगिन किया और $ startx का प्रदर्शन किया, तो मुझे बिना किसी लॉन्चबार और अन्य विकल्पों के बिना एक डेस्कटॉप विंडो मिली ... (tty8 पर) -ctrl + Alt + F8, यह है कि मेरा startx अच्छी तरह से कॉन्फ़िगर नहीं किया गया था या यह एक सीमित नहीं दिखाता है startx पर विकल्प (यहाँ केवल डेस्कटॉप की तरह)
lazarus

1
@ jazzz आपका डिफ़ॉल्ट x वातावरण है। आप सबसे अधिक संभावना कई डेस्कटॉप वातावरण स्थापित किया है। आप तो आप की तरह कमांड चलाने कर सकते हैं एक टर्मिनल प्राप्त करने के लिए Ctrl + टी में सक्षम होना चाहिए unityया gnome-shell --replaceया यहाँ तक कि gnome-panelया metacity --replace
mchid

@jazzz इसके अलावा, यदि आप इस उत्तर को स्वीकार करते हैं, तो कृपया इसे बंद करने के लिए बाईं ओर स्थित आइकन पर क्लिक करें। धन्यवाद!
mchid

खेद है कि मैं इस बारे में एक और प्रश्न के लिए थोड़ा विलंबित हूं --- क्या नई विंडो है जो मुझे Ctrl + Alt + F8 से मिली है, जैसा कि मैंने ऊपर कहा है कि कार्यक्षेत्र के समान है?
लाजर

4

यह बस एक अलग tty पर मतलब है ।

जुड़े हुए प्रश्न का उद्धरण:

डिफ़ॉल्ट रूप से Ubuntu में 7 tty है।

1-6केवल कमांड लाइन है, 7आपका एक्स सत्र (आपका सामान्य ग्राफिकल डेस्कटॉप) चलाता है।

उन्हें एक्सेस करने के लिए, इस कीबोर्ड शॉर्टकट का उपयोग करें: Ctrl+ Alt+F1

( F1उस टर्मिनल तक पहुंचने के लिए एफ 1-एफ 6 को बदलना जो आपको चाहिए)

अपने X सत्र (सामान्य डेस्कटॉप) पर वापस जाने के लिए: Ctrl+ Alt+ का उपयोग करेंF7

after logging on to a text-mode console बस एक अलग tty में प्रवेश करने और कमांड टाइप करने का मतलब है:

startx

1

Rmano के रूप में नोट, startx एक बहुत पुराना दृष्टिकोण है। जब यह इस्तेमाल किया गया था तो रास्ता वापस, X11 बाइनरी सेटुइड रूट स्थापित किया गया था।

मैंने अभी-अभी VM में इसे आज़माया है और वास्तव में, startxजैसा कि आप वर्णन करते हैं, डिफ़ॉल्ट रूप से विफल हो जाता है। chmod u+s /usr/lib/xorg/Xorgहालांकि वह ठीक करता है।

मैं नहीं की सिफारिश कर रही Xorgsetuid जड़ हो। गुड रीज़न के लिए दुनिया उससे दूर चली गई है। लेकिन अगर आप एक फेंक-दूर VM में खेल रहे हैं, तो यह है कि कैसे startxकाम करना है।


1

QEMU + बिल्डरोट न्यूनतम उदाहरण

सीखने के लिए मेरा पसंदीदा तरीका यह है कि जो कुछ करता है वह एक न्यूनतम उदाहरण है जो इसे चलाता है।

उबंटू पर, यह मुश्किल है क्योंकि एक दूसरा startxआपके वर्तमान डेस्कटॉप के साथ संघर्ष कर सकता है।

/ubuntu//a/519164/52975 का प्रस्ताव Xnestहै, लेकिन QEMU + Buildroot साथ हम और भी कम से कम जाने के लिए और साथ ही X11 स्थापित एक माइक्रो distro बना सकते हैं।

इस तरह यह समझना आसान होना चाहिए कि क्या चल रहा है।

मैंने डिस्ट्रो क्रिएशन का वर्णन यहां किया है: /unix//a/306116/32558

एक बार जब आप QEMU पर चलने वाली छवि प्राप्त कर लेते हैं, तो आप TTY शेल पर शुरू करते हैं।

फिर जब आप करते हैं:

root
startx

यह एक X11 GUI शुरू करता है:

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

अब startxउस डिस्ट्रो के अंदर के स्रोत पर एक नज़र डालें , जो सिर्फ एक शेल स्क्रिप्ट है।

यह एक साधारण आवरण है /usr/bin/xinit, और यह गुजरता /etc/X11/xinit/xinitrcहै xinit

यदि आप खोलते हैं /etc/X11/xinit/xinitrc, तो इसमें निम्नलिखित लाइनें हैं:

twm &
xclock -geometry 50x50-1+1 &
xterm -geometry 80x50+494+51 &
xterm -geometry 80x20+494-0 &

इसलिए हम देखते हैं कि यह शुरू होता है:

  • twm: एक बहुत ही सरल और पुरानी विंडो मैनेजर
  • xclockऔर xtermजो हम स्क्रीन पर देखते हैं

के लिए /usr/bin/xinit, हम कर सकते हैं:

man xinit

जो कहता है कि:

यदि कमांड लाइन पर कोई विशिष्ट क्लाइंट प्रोग्राम नहीं दिया गया है, तो xinit उपयोगकर्ता के होम डायरेक्टरी में एक फ़ाइल की तलाश करेगा जिसे .xinitrc कहा जाता है जो क्लाइंट प्रोग्राम्स को शुरू करने के लिए शेल स्क्रिप्ट के रूप में चलता है। यदि ऐसी कोई फ़ाइल मौजूद नहीं है, तो xinit डिफ़ॉल्ट के रूप में निम्नलिखित का उपयोग करेगा:

xterm  -geometry  +1+1  -n  login  -display  :0

यदि कमांड लाइन पर कोई विशिष्ट सर्वर प्रोग्राम नहीं दिया गया है, तो xinit उपयोगकर्ता के होम डायरेक्टरी में एक फ़ाइल की तलाश करेगा, जिसे सर्वर शुरू करने के लिए शेल स्क्रिप्ट के रूप में चलाने के लिए .xserverrc कहा जाता है। यदि ऐसी कोई फ़ाइल मौजूद नहीं है, तो xinit डिफ़ॉल्ट के रूप में निम्नलिखित का उपयोग करेगा:

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