คำถามติดแท็ก kernel

ทุกอย่างเกี่ยวกับเมล็ด UNIX: การพัฒนา, การกำหนดค่า, การรวบรวม, การออกแบบและอื่น ๆ


6
เคอร์เนลจะเมาต์พาร์ติชั่นรูทอย่างไร?
คำถามของฉันเกี่ยวกับการบูทระบบ Linux จากพาร์ติชั่น / บูตแยกต่างหาก หากไฟล์การตั้งค่าส่วนใหญ่อยู่บนพาร์ติชั่น / พาร์ติชั่นเคอร์เนลจะทำการเมาท์อย่างถูกต้องได้อย่างไรในเวลาบูท? รายละเอียดเกี่ยวกับเรื่องนี้จะดีมาก ฉันรู้สึกว่าฉันขาดอะไรบางอย่างพื้นฐานไป ฉันส่วนใหญ่เกี่ยวข้องกับกระบวนการและคำสั่งของการดำเนินงาน ขอบคุณ! แก้ไข: ฉันคิดว่าสิ่งที่ฉันต้องถามมีมากกว่าตามบรรทัดของไฟล์ dev ที่ใช้ในพารามิเตอร์รูตเคอร์เนล ตัวอย่างเช่นสมมติว่าฉันให้รูทพารามิเตอร์ของฉันเป็นรูท / dev / sda2 เคอร์เนลมีการแม็พไฟล์ / dev / sda2 อย่างไร
29 linux  kernel  boot  mount 

5
การทำให้ Linux อ่านสลับกลับเข้าไปในหน่วยความจำ
เคอร์เนล Linux สลับหน้าส่วนใหญ่ออกจากหน่วยความจำเมื่อฉันเรียกใช้แอปพลิเคชันที่ใช้หน่วยความจำกายภาพ 16GB ส่วนใหญ่ หลังจากที่แอปพลิเคชันเสร็จสิ้นทุกการกระทำ (การพิมพ์คำสั่งการสลับพื้นที่ทำงานการเปิดหน้าเว็บใหม่ ฯลฯ ) ใช้เวลานานมากในการทำให้เสร็จสมบูรณ์ มีวิธีบอกเคอร์เนล Linux ให้คัดลอกหน้าจากสลับกลับไปยังหน่วยความจำกายภาพโดยไม่ต้องสัมผัส (และรอ) แต่ละแอปพลิเคชันด้วยตนเองหรือไม่? ฉันใช้งานแอปพลิเคชั่นจำนวนมากดังนั้นการรอคอยจึงเจ็บปวดเสมอ ฉันมักจะใช้swapoff -a && swapon -aเพื่อทำให้ระบบตอบสนองได้อีกครั้ง แต่จะเป็นการลบหน้าที่ไม่ต้องการสลับดังนั้นพวกเขาจึงต้องเขียนอีกครั้งในครั้งต่อไปที่ฉันเรียกใช้สคริปต์ มีอินเตอร์เฟสของเคอร์เนลหรืออาจใช้ sysfs เพื่อสั่งให้เคอร์เนลอ่านหน้าทั้งหมดจากการสลับ? แก้ไข: ฉันกำลังมองหาวิธีที่จะทำให้การแลกเปลี่ยน swapcached ทั้งหมด (ขอบคุณ Derobert!) [PS serverfault.com/questions/153946/…และserverfault.com/questions/100448/…เป็นหัวข้อที่เกี่ยวข้อง แต่ไม่ได้ตอบคำถามว่าจะให้เคอร์เนล Linux คัดลอกหน้าจาก swap กลับไปยังหน่วยความจำได้อย่างไรโดยไม่ต้องสลับ swap]
28 linux  kernel  memory  swap  sysfs 

1
ทำไมค่าเฉลี่ยเคลื่อนที่ 1/5/15 นาทีที่ไม่ตรงไปตรงมาจึงใช้ในการคำนวณโหลด Linux
จนกระทั่งเมื่อเร็ว ๆ นี้ฉันคิดว่าค่าเฉลี่ยการโหลด (ดังที่แสดงไว้ด้านบน) เป็นค่าเฉลี่ยเคลื่อนที่ในค่าสุดท้ายของจำนวนกระบวนการในสถานะ "runnable" หรือ "กำลังทำงาน" และ n จะถูกกำหนดโดย "ความยาว" ของค่าเฉลี่ยเคลื่อนที่: เนื่องจากอัลกอริทึมในการคำนวณค่าเฉลี่ยภาระดูเหมือนว่าจะเรียกใช้ทุก ๆ 5 วินาที, n จะเท่ากับ 12 สำหรับค่าเฉลี่ยการโหลด 1 นาที, 12x5 สำหรับค่าเฉลี่ยโหลด 5 นาทีและ 12x15 สำหรับค่าเฉลี่ยการโหลด 15 นาที แต่แล้วผมอ่านบทความนี้: http://www.linuxjournal.com/article/9001 บทความนี้ค่อนข้างเก่า แต่มีการใช้งานอัลกอริทึมแบบเดียวกันในเคอร์เนล Linux วันนี้ ค่าเฉลี่ยการโหลดไม่ใช่ค่าเฉลี่ยเคลื่อนที่ แต่อัลกอริทึมที่ฉันไม่รู้จักชื่อ อย่างไรก็ตามฉันทำการเปรียบเทียบระหว่างอัลกอริทึมเคอร์เนล Linux และค่าเฉลี่ยเคลื่อนที่สำหรับการโหลดเป็นระยะตามจินตนาการ: . มีความแตกต่างอย่างมาก ในที่สุดคำถามของฉันคือ: ทำไมการดำเนินการนี้ได้รับเลือกเมื่อเปรียบเทียบกับค่าเฉลี่ยเคลื่อนที่ที่แท้จริงซึ่งมีความหมายที่แท้จริงสำหรับทุกคน? ทำไมทุกคนพูดถึง "1min load average" …

3
ปิดไฟเป็นพอร์ต usb หรือปิดเครื่องไปยังระบบย่อย usb ทั้งหมด
ฉันมีหลอดไฟ USB ที่ฉันซื้อมาเป็นพิเศษเพื่อปิดการทำงานของโปรแกรมในเวลาหนึ่งดังนั้นฉันจึงต้องถอดปลั๊กไฟออกที่พอร์ต usb ของมัน ฉันเชื่อว่าฉันมีฮับ usb ที่ usb6 หลอดไฟเชื่อมต่อกับหนึ่งในพอร์ตในฮับนี้: #myhost$ lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 001: ID …

2
จะขึ้นบัญชีดำเซกเตอร์แรมที่ไม่ถูกต้องได้อย่างไรตามข้อบ่งชี้ข้อผิดพลาด MemTest86 +
MemTest86 + (รุ่นที่มาพร้อมกับ Ubuntu 13.04) กล่าวว่า Failing address: 002f796c48 - 759.5 MB ฉันควรระบุอะไรในmemmapพารามิเตอร์เคอร์เนลเพื่อข้ามพื้นที่นี้ ฉันลองใช้memtester 770MBแล้วมันก็บอกว่าทุกอย่างก็โอเคดังนั้นมันจึงไม่ได้ดูว่าตัวบ่งชี้ของ MemTest หมายถึงข้อผิดพลาดใน 759.5th MB ตั้งแต่เริ่มต้น วิธีการตีความตัวบ่งชี้ MemTest นี้เพื่อกำหนดค่าmemmap? ฉันไม่มีเงินที่จะซื้อ RAM ใหม่ตอนนี้และข้อผิดพลาดน่าจะเป็นโสดดังนั้นฉันหวังว่าฉันจะสามารถแทนที่ได้
28 linux  kernel  memory  ram 

9
วิธีการยกเลิกการโหลดโมดูลเคอร์เนล 'nvidia-drm'?
ฉันพยายามติดตั้งไดรเวอร์ NVIDIA ที่ทันสมัยที่สุดใน Debian Stretch ฉันดาวน์โหลดNVIDIA-Linux-x86_64-390.48.runมาจากที่นี่แต่เมื่อฉันพยายามจะทำ sudo sh ./NVIDIA-Linux-x86_64-390.48.run ตามที่แนะนำข้อความแสดงข้อผิดพลาดจะปรากฏขึ้น ERROR: An NVIDIA kernel module 'nvidia-drm' appears to already be loaded in your kernel. This may be because it is in use (for example, by an X server, a CUDA program, or the NVIDIA Persistence Daemon), but this may also …


3
ฉันสามารถแสดงรายการระบบไฟล์ที่เคอร์เนลที่ทำงานอยู่สามารถรองรับได้หรือไม่
ฉันพยายามตรวจสอบว่าระบบไฟล์ใดที่เคอร์เนลสามารถรองรับได้ นึกคิดในรายชื่อเล็กน้อย แต่ฉันจะทำทุกอย่างที่คุณมี โปรดทราบว่าผมไม่ได้หมายfilesystems ในปัจจุบันในการใช้คนเพียงว่าเคอร์เนลปัจจุบันอาจทฤษฎีสนับสนุนโดยตรง (ชัดฟิวส์อาจสนับสนุนหมายเลขอนันต์เพิ่มเติม)

2
นี่เป็นวิธีที่เพจจิ้งของ Linux ควรทำงานหรือไม่
เมื่อระบบลีนุกซ์ของฉันเข้าใกล้เพจจิ้ง (เช่นในกรณีของฉัน, RAM 16GB เกือบเต็ม, 16GB swap ว่างเปล่าอย่างสมบูรณ์) หากกระบวนการใหม่ X พยายามจัดสรรหน่วยความจำบางส่วนที่ระบบล็อคอย่างสมบูรณ์ นั่นคือจนกว่าจะมีจำนวนหน้าไม่สมบูรณ์ (wrt ขนาดรวมและอัตราของการร้องขอการจัดสรรหน่วยความจำของ X) ได้ถูกสลับออก โปรดสังเกตว่าไม่เพียง แต่ gui เท่านั้นที่ไม่ตอบสนองอย่างสมบูรณ์ แต่บริการพื้นฐานอย่าง sshd จะถูกบล็อกอย่างสมบูรณ์ เหล่านี้เป็นรหัสสองชิ้น (หยาบยอมรับ) ที่ฉันใช้เพื่อเรียกพฤติกรรมนี้ในทาง "วิทยาศาสตร์" มากขึ้น คนแรกที่ได้รับสองตัวเลข x, y จากบรรทัดคำสั่งและดำเนินการเพื่อจัดสรรและเริ่มต้นชิ้นจำนวนมากของ y ไบต์จนกว่า x ไบต์ทั้งหมดได้รับการจัดสรร และจากนั้นก็นอนหลับไปเรื่อย ๆ สิ่งนี้จะถูกใช้เพื่อนำระบบเข้าสู่เพจ #include <stdlib.h> #include <stdio.h> #include <string.h> #include <unistd.h> int main(int argc, …

5
การถ่ายโอนข้อมูลแบบ USB เป็น USB ระหว่าง Linux OS สองเครื่องนั้นเป็นไปได้หรือไม่?
ฉันต้องการสร้างระบบการถ่ายโอนข้อมูลแบบ USB เป็น USB ใน Linux (ควรเป็น Ubuntu) สำหรับสิ่งนี้ฉันต้องการใช้ฮาร์ดแวร์หรือสวิทช์ภายนอก ( ยกเว้นสายเคเบิลนี้ ) มันจะเหมือนกับการติดตั้งไดรฟ์ USB เข้ากับระบบ แต่ในสถานการณ์นี้หนึ่งในระบบ Linux จะถูกติดตั้งบนอีกระบบหนึ่ง ฉันจะสร้างสิ่งนี้ได้อย่างไร มีเคอร์เนลโมดูลใดบ้างให้ประสบการณ์ของฉันกับการเขียนโปรแกรมเคอร์เนลเป็นพื้นฐานมาก?

1
วิธีการใช้ไดรเวอร์เคอร์เนล Linux อินเตอร์เฟส bind / unbind สำหรับอุปกรณ์ USB-HID
พื้นหลังแรก ฉันกำลังพัฒนาไดรเวอร์สำหรับอุปกรณ์แผงเกม Logitech มันเป็นคีย์บอร์ดที่มีหน้าจออยู่ ไดรเวอร์ทำงานได้เป็นอย่างดี แต่โดยค่าเริ่มต้นอุปกรณ์จะถูกจัดการโดย HID เพื่อป้องกันไม่ให้ HID ทำการยึดอุปกรณ์ก่อนไดร์เวอร์ฉันสามารถขึ้นบัญชีดำใน hid-core.c ใช้งานได้ แต่ไม่ใช่ทางออกที่ดีที่สุดเนื่องจากฉันทำงานกับคนหลายคนและเราทุกคนต้องทำการปะโมดูล HID ของเราซึ่งกำลังเป็นที่น่าเบื่อโดยเฉพาะอย่างยิ่งมันมักเกี่ยวข้องกับการสร้าง initramfs ขึ้นมาใหม่ ฉันได้วิจัยบางอย่างเกี่ยวกับปัญหานี้และผมพบว่าโพสต์รายชื่อผู้รับจดหมายซึ่งท้ายที่สุดก็พาฉันไปที่บทความนี้ใน LWN สิ่งนี้อธิบายกลไกสำหรับการผูกอุปกรณ์กับไดรเวอร์เฉพาะตอนรันไทม์ ดูเหมือนว่าสิ่งที่ฉันต้องการ ดังนั้นฉันจึงพยายาม ฉันสามารถปลดคีย์บอร์ดจาก HID ได้ สิ่งนี้ได้ผลและเป็นไปตามที่คาดไว้ฉันไม่สามารถพิมพ์ได้อีกต่อไป แต่เมื่อฉันพยายามที่จะผูกไว้กับไดรเวอร์ของเราฉันได้รับ "ข้อผิดพลาด: ไม่มีอุปกรณ์ดังกล่าว" และการดำเนินการล้มเหลว ดังนั้นคำถามของฉันคือฉันจะใช้การดำเนินการเคอร์เนลผูก / unbind เพื่อทำซ้ำสิ่งที่เกิดขึ้นเมื่อคุณขึ้นบัญชีดำอุปกรณ์ HID ใน hid-core และจัดหาไดรเวอร์ของคุณเอง? - นั่นคือ - เพื่อแทนที่ความต้องการในการแก้ไข hid-core.c ตลอดเวลาหรือไม่ แหล่งที่มาของไดรเวอร์ของเราอยู่ที่นี่: https://github.com/ali1234/lg4l

1
ท่อทำงานอย่างไรใน Linux
ฉันได้อ่านเกี่ยวกับวิธีการใช้ไพพ์ในเคอร์เนล Linux และต้องการตรวจสอบความเข้าใจของฉัน หากฉันไม่ถูกต้องคำตอบพร้อมคำอธิบายที่ถูกต้องจะถูกเลือก Linux มี VFS เรียกว่า pipefs ที่ติดตั้งในเคอร์เนล (ไม่ใช่ในพื้นที่ผู้ใช้) pipefs มีซุปเปอร์บล็อกเดียวและติดตั้งที่รูทของมันเอง ( pipe:) ข้างๆ/ pipefs ไม่สามารถดูได้โดยตรงเหมือนกับระบบไฟล์ส่วนใหญ่ รายการไปยัง pipefs คือผ่านpipe(2)syscall pipe(2)syscall ใช้โดยเปลือกหอยสำหรับท่อกับ|ผู้ประกอบการ (หรือด้วยตนเองจากกระบวนการอื่น ๆ ) สร้างไฟล์ใหม่ใน pipefs ซึ่งทำงานสวยมากเช่นไฟล์ปกติ ไฟล์ทางด้านซ้ายของผู้ประกอบการไปป์ได้stdoutถูกเปลี่ยนเส้นทางไปยังไฟล์ชั่วคราวที่สร้างขึ้นใน pipefs ไฟล์ทางด้านขวาของผู้ปฏิบัติงานไปป์มี stdinไพพ์ตั้งค่าไฟล์ไว้ที่ pipefs pipefs ถูกเก็บไว้ในหน่วยความจำและผ่านเคอร์เนลเวทย์มนตร์บางอย่างไม่ควรทำเพจ นี่คือคำอธิบายว่าท่ออย่างไร (เช่น ls -la | less ) ว่าถูกต้องหรือไม่? สิ่งหนึ่งที่ผมไม่เข้าใจคือวิธีการบางอย่างเช่นทุบตีจะตั้งเป็นกระบวนการstdinหรือจะอธิบายไฟล์ที่ส่งกลับโดยstdout pipe(2)ฉันยังไม่พบอะไรเกี่ยวกับสิ่งนั้น
25 kernel  pipe 

5
การหาสาเหตุของ Linux kernel panic
ฉันใช้งานอนุพันธ์ Ubuntu 12.04 (amd64) และฉันมีปัญหาแปลก ๆ เมื่อเร็ว ๆ นี้ ดูเหมือนสีน้ำเงิน X จะหยุดอย่างสมบูรณ์ชั่วขณะหนึ่ง (1-3 นาที) จากนั้นระบบจะรีบูต ระบบนี้ถูกโอเวอร์คล็อก แต่มีเสถียรภาพมากเมื่อผ่านการตรวจสอบใน Windows ซึ่งทำให้ฉันเชื่อว่าฉันมีความตื่นตระหนกของเคอร์เนลหรือมีปัญหากับหนึ่งในโมดูลของฉัน แม้ใน Linux ฉันสามารถเรียกใช้ LINPACK และจะไม่เห็นความผิดพลาดแม้จะวางภาระที่น่าขันบน CPU ดูเหมือนว่าการขัดข้องจะเกิดขึ้นแบบสุ่มแม้ในขณะที่เครื่องไม่ได้ทำงาน ฉันจะดีบักสิ่งที่ระบบขัดข้องได้อย่างไร สำหรับลางสังหรณ์ว่าอาจเป็นไดรเวอร์ NVIDIA ที่เป็นกรรมสิทธิ์ฉันได้ย้อนกลับไปเป็นไดรเวอร์รุ่นเสถียรรุ่น 304 และฉันยังคงพบกับความผิดพลาด ทุกคนสามารถแนะนำขั้นตอนการดีบักที่ดีหลังจากเกิดความผิดพลาดได้หรือไม่? ฉันยินดีเป็นอย่างยิ่งที่จะบูตลงใน thumb drive และโพสต์ไฟล์การกำหนดค่าความผิดพลาดทั้งหมดของฉันฉันไม่แน่ใจว่ามันจะเป็นอะไร ฉันจะทราบได้อย่างไรว่าระบบของฉันหยุดทำงาน ต่อไปนี้เป็นบันทึกการกระทำผิดปกติ .xsession-errors : http://pastebin.com/EEDtVkVm /var/log/Xorg.0.log : http://pastebin.com/ftsG5VAn /var/log/kern.log : http://pastebin.com/Hsy7jcHZ / var …

4
fd เดียวกันในกระบวนการต่าง ๆ สามารถชี้ไปที่ไฟล์เดียวกันได้อย่างไร?
ว่าฉันมีขั้นตอนที่ 1และขั้นตอนที่ 2 ทั้งสองมีตัวอธิบายไฟล์ที่สอดคล้องกับจำนวนเต็ม 4 ในแต่ละกระบวนการอย่างไรก็ตามไฟล์ descriptor 4 ชี้ไปที่ไฟล์ต่างกันโดยสิ้นเชิงใน Open File Table ของเคอร์เนล: เป็นไปได้อย่างไร? ไฟล์ descriptor ไม่ควรเป็นดัชนีไปยังระเบียนใน Open File Table หรือไม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.