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

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

6
Busybox ping IP ใช้งานได้ แต่ชื่อโฮสต์ nslookup ล้มเหลวด้วย“ ที่อยู่ไม่ถูกต้อง”
ฉันกำลังรวบรวมเคอร์เนล 3.14 ของฉันเอง ฉันเกรงว่าฉันอาจไม่ได้ใช้คุณสมบัติระบบเครือข่ายที่สำคัญบางอย่างเพื่อให้ DNS ทำงานได้ ฉันไม่สามารถแก้ไขชื่อโดเมน ฉันสามารถ ping เซิร์ฟเวอร์ DNS ของฉัน ฉันสามารถแก้ไขการใช้ DNS นั้นในเครื่องอื่น ๆ เพื่อให้ฉันรู้ว่าไม่ใช่เซิร์ฟเวอร์ ~ # cat /etc/resolv.conf nameserver 192.168.13.5 ~ # nslookup google.com Server: 192.168.13.5 Address 1: 192.168.13.5 nslookup: can't resolve 'google.com' ~ # ping -c 1 google.com ping: bad address 'google.com' ~ # ping -c …


3
เคอร์เนลของ Linux จัดการ IRQ ที่แชร์ได้อย่างไร
ตามที่ฉันได้อ่านจนถึง "เมื่อเคอร์เนลได้รับการขัดจังหวะตัวจัดการที่ลงทะเบียนทั้งหมดจะถูกเรียกใช้" ฉันเข้าใจว่าตัวจัดการที่ลงทะเบียนสำหรับ IRQ แต่ละตัวสามารถดูได้ผ่านทาง/proc/interruptsและฉันยังเข้าใจว่าตัวจัดการที่ลงทะเบียนนั้นมาจากไดรเวอร์ที่เรียกใช้การrequest_irqส่งผ่านในรูปแบบการติดต่อกลับโดยประมาณ: irqreturn_t (*handler)(int, void *) จากสิ่งที่ฉันรู้ควรเรียกใช้ตัวจัดการอินเทอร์รัปต์เหล่านี้ที่เกี่ยวข้องกับ IRQ เฉพาะและขึ้นอยู่กับตัวจัดการเพื่อพิจารณาว่าควรจัดการอินเทอร์รัปต์จริงหรือไม่ IRQ_NONEถ้าจัดการไม่ควรจัดการกับการขัดจังหวะโดยเฉพาะอย่างยิ่งจะต้องกลับแมโครเคอร์เนล สิ่งที่ฉันมีปัญหาในการทำความเข้าใจคือคาดว่าไดรเวอร์แต่ละตัวจะตัดสินว่าควรจัดการกับอินเทอร์รัปต์หรือไม่ ฉันคิดว่าพวกเขาสามารถติดตามภายในถ้าพวกเขาควรจะคาดหวังว่าการขัดจังหวะ ถ้าเป็นเช่นนั้นฉันไม่รู้ว่าพวกเขาจะสามารถรับมือกับสถานการณ์ที่ไดรเวอร์หลายตัวที่อยู่เบื้องหลัง IRQ เดียวกันคาดว่าจะเกิดการขัดจังหวะได้อย่างไร เหตุผลที่ฉันพยายามเข้าใจรายละเอียดเหล่านี้ก็เพราะฉันยุ่งกับkexecกลไกในการเรียกใช้เคอร์เนลอีกครั้งในระหว่างการทำงานของระบบในขณะที่เล่นด้วยหมุดรีเซ็ตและรีจิสเตอร์ต่าง ๆ บนสะพาน PCIe เช่นเดียวกับ PCI ดาวน์สตรีม เครื่อง และในการทำเช่นนั้นหลังจากรีบูตฉันอาจได้รับความตื่นตระหนกของเคอร์เนลหรือไดรเวอร์อื่น ๆ บ่นว่าพวกเขาได้รับการขัดจังหวะแม้ว่าจะไม่มีการดำเนินการเกิดขึ้น ผู้จัดการตัดสินใจว่าควรจัดการกับอินเทอร์รัปต์อย่างไรจึงเป็นเรื่องลึกลับ แก้ไข: ในกรณีที่เกี่ยวข้องกับสถาปัตยกรรม CPU ที่เป็นx86ปัญหา
14 linux  kernel  pci  interrupt  irq 

3
การเพิ่มขนาดหน่วยความจำเคอร์เนล
ฉันมีบอร์ดฝังตัวที่มี RAM 512MB ใช้ Linux 2.6.29 และ UBoot bootloader แต่เคอร์เนลสามารถใช้ RAM ได้เพียง 128MB เท่านั้น ฉันลองเปลี่ยนค่าของXCODE_MEMSIZEซึ่งฉันคิดว่ากำหนดจำนวน RAM ที่เคอร์เนลใช้ เมื่อฉันตั้งค่าเป็น 512 เคอร์เนลจะหยุดทำงานในขณะที่บูตเครื่อง มีพารามิเตอร์การกำหนดค่าอื่น ๆ ที่จำเป็นต้องเปลี่ยนแปลงหรือไม่?

2
ความแตกต่างของรุ่นและรุ่นของเคอร์เนล / การกระจายคืออะไร?
ฉันใช้คำสั่งต่อไปนี้เพื่อดูชื่อรุ่นและรุ่นของเคอร์เนล -bash-4.1$ uname -s Linux -bash-4.1$ uname -r 2.6.32-279.el6.x86_64 -bash-4.1$ uname -v #1 SMP Wed Jun 13 18:24:36 EDT 2012 อะไรคือความแตกต่างและความสัมพันธ์ระหว่างการปล่อยเคอร์เนลและเวอร์ชั่น? ขอบคุณ! คำถามที่คล้ายกันสำหรับการแจกจ่าย Linux (เช่น Ubuntu, Mint, ... )? อะไรคือความแตกต่างและความสัมพันธ์ระหว่างรีลีสของลินุกซ์กับเวอร์ชั่น
14 kernel 

3
วิธีการอ่านตารางพาร์ทิชันในหน่วยความจำ (เคอร์เนล) ของ / dev / sda?
ฉันเขียนทับตารางพาร์ติชัน / dev / sda ของฉันโดยไม่ได้ตั้งใจด้วย GParted ( เรื่องเต็มใน AskUbuntu ) เนื่องจากฉันยังไม่ได้บูตเครื่องใหม่และระบบไฟล์ของฉันยังใช้งานได้อย่างสมบูรณ์แบบฉันจึงได้รับแจ้งว่าฉันอาจกู้คืนตารางพาร์ติชันจากหน่วยความจำในเคอร์เนลได้ เป็นไปได้ไหม ถ้าเป็นเช่นนั้นฉันจะกู้คืนและคืนค่าได้อย่างไร

3
วิธีการสร้าง Module.symvers
เมื่อเร็ว ๆ นี้ฉันได้เปิด RPM นอกเคอร์เนลซอร์ส (OpenSuse) หรือไม่ ; และในขณะที่ใช้เวลา> 10 ชั่วโมงบนเครื่องของฉันลองจินตนาการถึงความประหลาดใจของฉันว่าหลังจากทำตามขั้นตอนที่อธิบายไว้ที่นั่นฉันไม่พบModule.symversที่ใดเลย! เมื่อฉันค้นหา "generate Module.symvers" ฉันจะได้รับสิ่งนี้: หมายเหตุ: "modules_prepare" จะไม่สร้าง Module.symvers แม้ว่า CONFIG_MODVERSIONS จะถูกตั้งค่าไว้ ดังนั้นการสร้างเคอร์เนลแบบเต็มจะต้อง ดำเนินการเพื่อให้การกำหนดรุ่นโมดูลทำงานได้ ( เอกสารเคอร์เนล Linux :: kbuild: modules.txt ) ... แต่ฉันไม่เข้าใจ - เคอร์เนลไม่ได้ถูกสร้างขึ้นในขั้นตอนก่อนหน้า (อธิบายไว้ในลิงก์ด้านบนใช่หรือไม่ฉันแน่ใจว่าใช้เวลา> 10 ชั่วโมงสำหรับ CC เพื่อสร้างกลุ่มทั้งหมด * .o ไฟล์และ LD เพื่อเชื่อมโยงพวกเขาดังนั้นสิ่งที่จะต้องสร้างขึ้น แต่ถ้าเป็นเช่นนั้นแล้วจะอยู่Module.symversที่ไหน? ในแง่ที่ชัดเจนมากขึ้นฉันควรเรียกใช้คำสั่งอะไรเพื่อสร้าง Module.symvers ฉันรู้ว่ามันmake prepareจะไม่ทำงาน …



5
เปรียบเทียบไฟล์กำหนดค่าเคอร์เนลสองไฟล์จากเปอร์สเปคทีฟของ menuconfig หรือไม่
ฉันมีสถานการณ์ที่ฉันมีไฟล์กำหนดค่าเคอร์เนลสองไฟล์ (สำหรับเคอร์เนลแหล่งเดียวกัน) ทั้งสองอย่างมีส่วนหนึ่งของฟังก์ชั่นที่ฉันต้องการ (ที่หนึ่ง, USB ทำงานอย่างถูกต้อง, ที่อื่น ๆ , I2C ที่สอง) ฉันรู้ว่าความแตกต่างระหว่างสองไฟล์ปรับแต่งจากมุมมองของ menuconfig นั้นมีเพียงไม่กี่ตัวเลือกที่เลือก (แต่ไม่รู้ว่าอันไหน) อย่างไรก็ตามเมื่อเปรียบเทียบไฟล์กำหนดค่าด้วยตนเอง (รวมอยู่ระหว่างไฟล์. config สองไฟล์) ความแตกต่างนั้นไม่สามารถระบุได้ง่าย ฉันพยายามรวมเข้าด้วยกันโดยไม่สำเร็จ ฉันแน่ใจว่าฉันจะประสบความสำเร็จในที่สุด แต่เชื่อว่ากระบวนการอาจไม่เจ็บปวดมากกว่านี้หากเปรียบเทียบไฟล์ในลักษณะที่ปรากฏในเมนู Menuconfig สามารถทำได้และถ้าเป็นเช่นนั้นได้อย่างไร

6
ฉันจะตรวจสอบเวอร์ชั่นเคอร์เนลที่ใช้งานอยู่ได้อย่างไร?
ในขณะที่แก้ไขปัญหาเกี่ยวกับการ์ดอีเธอร์เน็ตของฉันฉันพบว่าไดรเวอร์ที่ฉันใช้อยู่ในปัจจุบันอาจมีปัญหาบางอย่างกับเคอร์เนลเวอร์ชันเก่า ฉันสามารถใช้คำสั่งใดเพื่อตรวจสอบรุ่นเคอร์เนลที่ฉันกำลังใช้งานอยู่

1
วิธีการ (จริงๆ) ปิดการใช้งาน NCQ ใน Linux
ฉันติดตั้ง Serial-ATA Host-Bus-Adapter (HBA) ของตัวเองใน VHDL และตั้งโปรแกรมไว้บน FPGA FPGA เป็นชิปที่สามารถตั้งโปรแกรมกับวงจรดิจิตอลใด ๆ มันยังมีตัวรับส่งสัญญาณแบบอนุกรมเพื่อสร้างสัญญาณความเร็วสูงสำหรับ SATA หรือ PCIe คอนโทรลเลอร์ SATA นี้รองรับอัตราสาย SATA 6 Gb / s และใช้คำสั่ง ATA-8 DMA-IN / OUT เพื่อถ่ายโอนข้อมูลในกลุ่มก้อนสูงสุด 32 MiB ไปและกลับจากอุปกรณ์ การออกแบบได้รับการพิสูจน์แล้วว่าทำงานด้วยความเร็วสูงสุด (เช่น Samsung SSD 840 Pro -> มากกว่า 550 MiB / s) หลังจากการทดสอบกับอุปกรณ์ SSD และ HDD หลายตัวฉันซื้อ Seagate …
13 linux  kernel  drivers  sata 

3
Linux โหลดอิมเมจ 'initrd' อย่างไร
ฉันพยายามทำความเข้าใจกับกระบวนการบูท แต่มีเพียงสิ่งเดียวเท่านั้นที่จะข้ามหัวฉันได้ .. ทันทีที่เคอร์เนล Linux ถูกบูทและติดตั้งระบบไฟล์รูท (/) โปรแกรมสามารถรันได้และโมดูลเคอร์เนลเพิ่มเติมสามารถรวมเข้าด้วยกันเพื่อให้มีฟังก์ชั่นเพิ่มเติม ในการเมาท์ระบบไฟล์รูทจะต้องปฏิบัติตามเงื่อนไขบางประการ เคอร์เนลต้องการไดรเวอร์ที่เกี่ยวข้องเพื่อเข้าถึงอุปกรณ์ที่ระบบไฟล์รูทอยู่ (โดยเฉพาะไดรเวอร์ SCSI) เคอร์เนลจะต้องมีรหัสที่จำเป็นในการอ่านระบบไฟล์ (ext2, reiserfs, romfs, ฯลฯ ) เป็นไปได้ว่าระบบไฟล์รูทถูกเข้ารหัสอยู่แล้ว ในกรณีนี้จำเป็นต้องใช้รหัสผ่านเพื่อต่อเชื่อมระบบไฟล์ ramdisk เริ่มต้น (หรือที่เรียกว่า initdisk หรือ initrd) แก้ปัญหาได้อย่างแม่นยำตามที่อธิบายไว้ข้างต้น เคอร์เนล Linux จัดให้มีตัวเลือกในการโหลดระบบไฟล์ขนาดเล็กลงในดิสก์ RAM และใช้งานโปรแกรมก่อนที่จะติดตั้งระบบไฟล์รูทจริง การโหลดของ initrd ได้รับการจัดการโดย boot loader (GRUB, LILO และอื่น ๆ ) ตัวโหลดการบูตต้องการรูทีน BIOS เท่านั้นเพื่อโหลดข้อมูลจากสื่อการบูต หากบูตโหลดเดอร์สามารถโหลดเคอร์เนลได้ก็สามารถโหลด ramdisk เริ่มต้นได้ ไม่จำเป็นต้องใช้ไดรเวอร์พิเศษ หาก …
13 linux  kernel  boot  initrd 

1
สามารถป้องกันการใช้เอนโทรปีที่เริ่มต้นโปรแกรมได้หรือไม่
ฉันใช้ Knoppix (หรือ Live CD / DVD อื่น ๆ ) เป็นสภาพแวดล้อมที่ปลอดภัยสำหรับการสร้างคีย์ crypto ที่มีค่า น่าเสียดายที่เอนโทรปีเป็นทรัพยากรที่มี จำกัด ในสภาพแวดล้อมเช่นนั้น ฉันเพิ่งสังเกตว่าการเริ่มต้นแต่ละโปรแกรมนั้นใช้เอนโทรปีค่อนข้างมาก ดูเหมือนว่าจะเป็นเพราะคุณสมบัติการป้องกันสแต็กบางอย่างที่ต้องการการสุ่มที่อยู่ คุณสมบัติที่ดี แต่ไร้ประโยชน์อย่างสมบูรณ์และ - แย่ลง - ทำลายในสถานการณ์ของฉัน มีความเป็นไปได้ที่จะปิดใช้งานคุณสมบัตินี้หรือไม่? ฉันต้องการรูปที่ทำให้ฉันสามารถใช้ภาพ Knoppix ดั้งเดิม (หรืออะไรก็ได้) ต่อไปและต้องการการกำหนดค่าบางอย่างที่รันไทม์ ฉันอ่านว่านี่เกิดจาก glibc ฉันประหลาดใจที่การstrace -p $PID -f -e trace=openต่อต้านการทุบตีไม่แสดงการเข้าถึง / dev / random ใด ๆ เมื่อฉันเริ่มโปรแกรม แต่ฉันไม่คุ้นเคยกับการโต้ตอบของ execve () และตัวเชื่อมโยง
13 linux  kernel  security 

3
กิจกรรมการเขียนจำนวนมากบน SSD ทำให้ประสิทธิภาพของระบบนิวเคลียร์
ฉันสังเกตว่าเมื่อฉันเขียนแอพพลิเคชั่นอย่างหนักระบบทั้งหมดจะช้าลง เพื่อทดสอบเพิ่มเติมต่อไปนี้ฉันทำสิ่งนี้เพื่อทำ CPU (ค่อนข้างต่ำ), กิจกรรมดิสก์สูง: john -incremental > file_on_SSD สิ่งนี้จะบีบสตริงออกนับหมื่นต่อวินาทีไปยังไฟล์บนดิสก์ระบบของฉัน เมื่อมันทำเช่นนี้เมาส์จะล่าช้า TTY ไม่ตอบสนองแอพพลิเคชั่น "จาง" และโดยทั่วไปคอมพิวเตอร์ทั้งหมดจะไม่สามารถใช้งานได้ ในที่สุดเมื่อฉันสามารถควบคุมได้ + C johnระบบจะกลับมาเต็มความแรงหลังจากไม่กี่วินาที นี่เป็นตัวอย่างที่รุนแรง แต่ฉันมีปัญหาที่คล้ายกันที่มีกิจกรรมการเขียนน้อยมากเช่นการคัดลอกไฟล์ขนาดใหญ่จากแหล่งที่มาอย่างรวดเร็วหรือการแปลงรหัส ดิสก์ระบบปฏิบัติการหลักของฉันคือ SSD ที่ค่อนข้างเร็ว ( OCZ Agility 60GB ) พร้อม EXT4 ถ้าฉันเขียนjohnเอาต์พุตไปยังดิสก์เชิงกลที่มี EXT4 ฉันจะไม่พบกับการทำงานแบบช้าลงแม้ว่าอัตราจะช้ากว่ามาก (SSD ทำได้ ~ 42,000 คำต่อวินาทีและกลไก 8,000 วัตต์ต่อวินาที) ปริมาณงานอาจเกี่ยวข้อง ดิสก์เชิงกลยังไม่มีส่วนเกี่ยวข้องกับระบบ มันเป็นเพียงข้อมูล และฉันใช้เคอร์เนล 2.6.35-2 แต่ฉันสังเกตเห็นปัญหานี้เนื่องจากฉันได้รับ SSD นี้เมื่อฉันอาจใช้. 31 …
13 kernel  performance  io  ssd 

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