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

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

4
ทำไม * BSD ใช้ชื่อเฉพาะไดรเวอร์สำหรับอินเทอร์เฟซเครือข่าย มันหมายถึงข้อ จำกัด ?
ฉันสังเกตว่าขึ้นอยู่กับยี่ห้อของการ์ดเครือข่ายชื่ออินเตอร์เฟสนั้นต่างกัน ทำไม * BSD ใช้ชื่อเฉพาะไดรเวอร์สำหรับอินเทอร์เฟซเครือข่าย มันหมายความว่าไม่มีเลเยอร์นามธรรมที่อธิบาย "อินเทอร์เฟซเครือข่ายทั่วไป" ในเคอร์เนลดังนั้นแต่ละไดรเวอร์จะได้รับการจัดการภายในผ่าน API ของตัวเอง (อย่างไร) มีผลกับระบบย่อยเช่นการรวมลิงก์การสร้างปริมาณข้อมูล QoS ( ALTQ ) การกรองและอื่น ๆ หรือไม่ ดูเหมือนว่าภายใต้ pfSense ฉันไม่สามารถใช้ ALTQ กับอินเตอร์เฟสเสมือนการรวมลิงก์ (LAG) นี่เป็นข้อ จำกัด ภายใน BSD เนื่องจากไม่มีเลเยอร์นามธรรมที่เหมาะสมหรือไม่

3
ความหมายของ“ rc5” ใน“ linux kernel 2.6.37-rc5”
เมื่อฉันเยี่ยมชมเว็บไซต์ kernel.org เพื่อดาวน์โหลดเคอร์เนล Linux ล่าสุดฉันสังเกตเห็นแพ็คเกจที่มีชื่อ2.6.37-rc5ในที่เก็บ อะไรคือความหมายของ "rc5" ในตอนท้าย?
12 linux  kernel  version 

1
ความสัมพันธ์ระหว่างกระบวนการเคอร์เนลเธรดกระบวนการที่มีน้ำหนักเบาและเธรดผู้ใช้ใน Unix คืออะไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา Unix Internal โดย Vahalia มีตัวเลขแสดงความสัมพันธ์ระหว่างกระบวนการเคอร์เนลเธรดกระบวนการน้ำหนักเบาและเธรดผู้ใช้ หนังสือเล่มนี้ให้ความสนใจมากที่สุดกับ SVR4.2 และยังสำรวจ 4.4BSD, Solaris 2.x, Mach และ Digital UNIX โดยละเอียด โปรดทราบว่าฉันไม่ได้ถามเกี่ยวกับ Linux สำหรับแต่ละกระบวนการมีกระบวนการที่มีน้ำหนักเบาอย่างน้อยหนึ่งกระบวนการอ้างอิงหรือไม่? รูปที่ 3.4 ดูเหมือนจะบอกว่าใช่ ทำไมรูปที่ 3.5 (a) แสดงกระบวนการโดยตรงที่ด้านบนของ CPU โดยไม่มีกระบวนการที่มีน้ำหนักเบาในระหว่างนั้น สำหรับกระบวนการที่มีน้ำหนักเบาแต่ละครั้งจะมีเคอร์เนลเธรดเดียวที่อ้างอิงกระบวนการที่มีน้ำหนักเบาหรือไม่ รูปที่ 3.4 ดูเหมือนจะบอกว่าใช่ ทำไมรูปที่ 3.5 (b) แสดงกระบวนการที่มีน้ำหนักเบาโดยตรงบนกระบวนการโดยที่ไม่มีเคอร์เนลเธรด เคอร์เนลเธรดเป็นเอนทิตีเดียวที่สามารถกำหนดเวลาได้หรือไม่? กระบวนการที่มีน้ำหนักเบาถูกกำหนดเวลาโดยอ้อมผ่านการกำหนดตารางเวลาเธรดเคอร์เนลพื้นฐานหรือไม่? กระบวนการที่กำหนดไว้ทางอ้อมผ่านการกำหนดเวลากระบวนการน้ำหนักเบาพื้นฐานหรือไม่ ปรับปรุง: ฉันถามคำถามที่คล้ายกันสำหรับ Linux กระบวนการน้ำหนักเบาติดอยู่กับเคอร์เนลเธรดใน …

1
เคอร์เนลส่วนหัวของคุณสำหรับเคอร์เนล 3.10.0-229.el7.x86_64 ไม่พบ
เมื่อฉันพิมพ์คำสั่งservice vboxdrv setupในเทอร์มินัล CentOS 7 ของฉันฉันได้รับข้อผิดพลาดต่อไปนี้: Your kernel headers for kernel 3.10.0-229.el7.x86_64 cannot be found ฉันจะแก้ไขข้อผิดพลาดนี้ได้อย่างไร? เมื่อฉันเปิดล็อกไฟล์โดยพิมพ์vi /var/log/vbox-install.logเนื้อหาคือ: Uninstalling modules from DKMS removing old DKMS module vboxhost version 5.0.4 ------------------------------ Deleting module version: 5.0.4 completely from the DKMS tree. ------------------------------ Done. Attempting to install using DKMS Creating symlink /var/lib/dkms/vboxhost/5.0.4/source -> …

2
ขีด จำกัด หน่วยความจำของเคอร์เนล Linux
ฉันมีปัญหาที่น่างง ฉันมีห้องสมุดที่ใช้sgสำหรับการดำเนินการ CDB ที่กำหนดเอง มีคู่ของระบบที่เป็นประจำมีปัญหาเกี่ยวกับการจัดสรรหน่วยความจำมีSG โดยปกติแล้วSGคนขับมีขีด จำกัด หนักประมาณ 4MB แต่ที่เราเห็นบนระบบไม่กี่เหล่านี้ด้วย ~ คำขอ 2.3mb นั่นคือ CDBs กำลังเตรียมที่จะจัดสรรสำหรับการถ่ายโอน 2.3mb ไม่ควรมีปัญหาใด ๆ ที่นี่: 2.3 <4.0 ทีนี้รายละเอียดของตัวเครื่อง มันเป็นซีพียู 64 บิต แต่รัน CentOS 6.0 32- บิต (ฉันไม่ได้สร้างพวกเขาหรือฉันไม่มีส่วนเกี่ยวข้องกับการตัดสินใจนี้) เคอร์เนลเวอร์ชันสำหรับ CentOS distro นี้คือ 2.6.32 พวกเขามี RAM 16gb นี่คือลักษณะการใช้หน่วยความจำในระบบ (แต่เนื่องจากข้อผิดพลาดนี้เกิดขึ้นในระหว่างการทดสอบอัตโนมัติฉันยังไม่ได้ตรวจสอบหากสิ่งนี้สะท้อนถึงสถานะเมื่อ errno นี้ส่งคืนจากsg ) top - 00:54:46 up 5 …

1
คุณช่วยอธิบายการประมาณค่าเอนโทรปีที่ใช้ใน random.c ได้ไหม
/dev/randomใช้การกำหนดเวลาของเคอร์เนล interupts เพื่อเพิ่มไปยังกลุ่มเอนโทรปี entropy_countปริมาณของเอนโทรปีในสระว่ายน้ำที่มีการติดตามในชื่อตัวแปร random.cนี่คือข้อมูลที่เกี่ยวข้องของรหัสจาก เพราะมันหมายถึงเวลา (jiffies ฉันคิด) ระหว่างสอง interupts สุดท้ายในตัวแปรและความแตกต่างในสันดอนเป็นdeltadelta2 delta = time - state->last_time; state->last_time = time; delta2 = delta - state->last_delta; state->last_delta = delta; if (delta < 0) delta = -delta; if (delta2 < 0) delta2 = -delta2; delta = MIN(delta, delta2) >> 1; for (nbits = …
12 linux  kernel  random 

1
การพัฒนา 25 ปีของเคอร์เนล Linux สามารถผ่านการรับรองหรือสรุปในแง่ของคนธรรมดาได้หรือไม่? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ลินุกซ์เคอร์เนลเก่าเกือบ 25 ปีที่ผ่านมา ถ้าฉันต้องมากับเวอร์ชั่นสั้น ๆ เกี่ยวกับประวัติการพัฒนาของเคอร์เนลลินุกซ์ตั้งแต่ปี 1991 (วันที่เริ่ม) และในระดับตั้งแต่ปี 1994 (1.0.0) จนถึงวันนี้ฉันไม่สามารถทำได้ สิ่งที่ดีที่สุดที่ฉันสามารถทำได้เพียงอ่านทุกครั้งที่รีลีสเคอร์เนลรีลีสคือการให้ฟีเจอร์ต่อไปนี้ซึ่งเป็นฟีเจอร์รีลีสทั่วไปที่เพิ่มเข้าไปในเคอร์เนลจนถึงเวอร์ชัน 3.11 (บันทึกและลิงก์ที่ละเว้น): เคอร์เนล Linux เวอร์ชัน 1.0เปิดตัวเมื่อวันที่ 14 มีนาคม 2537 เคอร์เนล Linux รุ่นนี้รองรับระบบคอมพิวเตอร์ที่ใช้โปรเซสเซอร์ i386 ตัวเดียวเท่านั้น การพกพากลายเป็นปัญหาและ รุ่น 1.2 (วางจำหน่าย 7 มีนาคม 2538) ได้รับการสนับสนุนสำหรับระบบคอมพิวเตอร์ที่ใช้โปรเซสเซอร์โดยใช้สถาปัตยกรรมแบบ Alpha, SPARC และ MIPS รุ่น 2.0ได้รับการปล่อยตัว 9 มิถุนายน …
12 kernel  history 

3
หนึ่งจับปริมาณการใช้งานบนอินเตอร์เฟสเสมือนได้อย่างไร
ฉันต้องการจับภาพทราฟฟิกบนอินเตอร์เฟสเสมือนของ Linux เพื่อการดีบัก ฉันได้รับการทดสอบด้วยveth, tunและdummyอินเตอร์เฟซประเภท; ในทั้งสามฉันมีปัญหาในการtcpdumpแสดงอะไร นี่คือวิธีการตั้งค่าส่วนต่อประสานแบบจำลอง: ip link add dummy10 type dummy ip addr add 99.99.99.1 dev dummy10 ip link set dummy10 up ในเทอร์มินัลหนึ่งดูด้วยtcpdump: tcpdump -i dummy10 ในหนึ่งวินาทีให้ฟังด้วยnc: nc -l 99.99.99.1 2048 ในหนึ่งในสามทำการร้องขอ HTTP ด้วยcurl: curl http://99.99.99.1:2048/ แม้ว่าใน terminal 2 เราสามารถดูข้อมูลจากการร้องขอการแสดงอะไรขึ้นมาจากcurltcpdump Tun / แตะกวดวิชาชี้แจงสถานการณ์บางอย่างที่เคอร์เนลอาจไม่ได้ส่งแพ็กเก็ตใด ๆ เมื่อมีการดำเนินงานเกี่ยวกับอินเตอร์เฟซท้องถิ่น: เมื่อดูที่ผลลัพธ์ของ tshark เราจะเห็น …
12 networking  kernel  ip  tcp  tcpdump 


1
ทำไม ramdisk เริ่มต้นของฉันใหญ่มาก
ผมใช้ Ubuntu 11.10 3.0.0-14ซึ่งมาพร้อมกับรุ่นเคอร์เนล ฉันดาวน์โหลดและสร้างเคอร์เนลจาก3.1.0สาขา หลังจากติดตั้งเคอร์เนลใหม่ฉันเห็นว่า/boot/initrd.img-3.1.0ไฟล์ของฉันมีขนาดใหญ่มาก มันคือ 114MB ในขณะที่ฉัน/boot/initrd.img-3.0.0-14-genericประมาณ 13MB ฉันต้องการกำจัดปมซึ่งไม่จำเป็นอย่างชัดเจน เมื่อสร้างเคอร์เนลใหม่ฉันคัดลอกของฉัน/boot/config-3.0.0-14-genericไปที่.configในไดเรกทอรีสร้างของฉันเพื่อเก็บการกำหนดค่าของเคอร์เนลเดิม ฉันวิ่งmake oldconfigเลือกค่าเริ่มต้นสำหรับตัวเลือกใหม่ทั้งหมดแล้วสร้างเคอร์เนล เมื่อดูที่ขนาดไฟล์ภายในแต่ละไฟล์เก็บถาวร cpio ของ initrd ฉันเห็นว่าโมดูล. ko ทั้งหมดของฉันมีขนาดใหญ่กว่าใน 3.1.0 ramdisk มากกว่า 3.0.0-14 ฉันสันนิษฐานว่ามีการตรวจสอบสถานะการดีบักที่ไม่จำเป็นในไฟล์กำหนดค่าของฉัน แต่ฉันไม่เห็นสิ่งอื่นที่ไม่ได้เปิดใช้งานในไฟล์กำหนดค่า 3.0.0-14 ฉัน/boot/config-3.0.0-14-genericอยู่ที่นี่: http://pastebin.com/UjH7nEqd และฉัน/boot/config-3.0.1อยู่ที่นี่: http://pastebin.com/HyT0M2k1 ทุกคนสามารถอธิบายได้ว่าการขยายตัวที่ไม่จำเป็นมาจากไหน?


2
ksplice มีข้อเสียหรือไม่?
kspliceเป็นส่วนขยายโอเพนซอร์ซของเคอร์เนล Linux ซึ่งช่วยให้ผู้ดูแลระบบสามารถนำแพตช์ความปลอดภัยไปใช้กับเคอร์เนลที่กำลังทำงานอยู่โดยไม่ต้องรีบูตระบบปฏิบัติการ (จากวิกิพีเดีย ) มีข้อเสียในการใช้ ksplice หรือไม่? มันทำให้เกิดความไม่มั่นคงใด ๆ หรือไม่? ถ้าไม่ทำไมมันไม่รวมอยู่ในลินุกซ์มากขึ้น?
12 linux  kernel  upgrade 

5
เป็นไปได้หรือไม่ที่จะใส่รูทใน LVM โดยไม่ใช้ initrd?
ฉันเพิ่งตั้งค่าระบบพื้นฐาน Gentoo (ซึ่งหมายความว่าฉันสามารถบูตและเข้าสู่ระบบและทำสิ่งต่าง ๆ ได้ทันที) root พาร์ติชันของฉันอยู่ในกลุ่มเสมือน LVM2 (มี/bootพาร์ติชันแยกต่างหาก) ในการบูตฉันต้องส่งพารามิเตอร์ด้านล่างไปยังเคอร์เนล: root=/dev/ram0 real_root=/dev/vg/rootlv init=/linuxrc dolvm เห็นได้ชัดว่ามันใช้ ramdisk เริ่มต้นเพื่อทำบางสิ่ง (ฉันเดาว่าจะโหลดสิ่งของ LVM) ก่อนที่จะติดตั้งรูท มีวิธีที่ฉันสามารถใส่รหัสนี้ลงในเคอร์เนลของตัวเองเพื่อให้ไม่จำเป็นต้องเริ่มต้นหรือไม่? ถ้าไม่ฉันจะสร้างตัวประทับเองได้อย่างไร มันอาจจะมีประโยชน์ที่จะเพิ่มว่าฉันได้พยายามรวบรวมเคอร์เนลสำหรับรากที่ไม่ใช่ LVM โดยไม่ต้องเริ่มต้นและมันทำงานได้อย่างสมบูรณ์ จากนั้นฉันพยายามใส่ทุกอย่างภายใต้ LVM และไม่สามารถทำให้เครื่องบูตได้ (ฉันเดาว่ามันไม่สามารถจัดการกับสิ่งที่ LVM ได้) จากนั้นฉันใช้genkernelเครื่องมือพร้อม--lvmตัวเลือกและสร้างเคอร์เนลที่ใช้งานได้และเริ่มต้นที่ฉันใช้อยู่ในปัจจุบัน ตอนนี้ฉันต้องการข้ามgenkernelและทำทุกอย่างด้วยตัวเองโดยไม่ต้องเริ่มต้นเพื่อให้เครื่องบูตได้ค่อนข้างเร็ว (ฉันไม่ต้องการความยืดหยุ่นอยู่ดี)
12 kernel  boot  root  initrd  lvm 

1
ทำไมต้องเลือกโหมดเคอร์เนลแทนที่จะแยกสิทธิพิเศษ
การตั้งค่าโหมดเคอร์เนลเป็นเรื่องที่เจ็บปวดมากในตอนแรกที่ใช้งาน Linux แต่ตอนนี้มันยอดเยี่ยมมาก ฉันหมายถึง X ไม่จำเป็นต้องเรียกใช้ในฐานะรูท? ฮาร์ดแวร์ความละเอียดสูงเร่งคอนโซล สิ่งที่เย็น. ปัญหาคือแพลตฟอร์ม UNIX จำนวนมากไม่มีการตั้งค่าไดรเวอร์เคอร์เนลในโหมดใด ๆ ดังนั้นฮาร์ดแวร์ที่ต้องใช้ KMS จึง จำกัด เฉพาะ Linux เท่านั้น คำถามของฉัน: ทำไมใช้งานจริงในเคอร์เนล? หากจำเป็นต้องใช้การเข้าถึงฮาร์ดแวร์เพื่อตั้งค่าความละเอียดของหน้าจอทำไมไม่ใช้ daemon ที่มีสิทธิ์แยกต่างหากหรือ setuid binary ขนาดเล็ก สิ่งนี้จะรักษาความได้เปรียบของการแยกรหัสสิทธิพิเศษและให้เซิร์ฟเวอร์การแสดงผลทำงานแบบผู้ใช้ จำกัด ในขณะที่กำจัดข้อกำหนดพิเศษของไดรเวอร์และทำให้การสนับสนุนข้าม UNIX ง่ายขึ้น ขวา? หรือฉันขาดสิ่งสำคัญที่นี่
12 kernel  xorg  drivers 

3
ทำไม initramfs จึงเมาท์ระบบไฟล์รูทเป็นแบบอ่านอย่างเดียว
อะไรคือสาเหตุที่ระบบไฟล์รูทติดตั้งroใน initramfs (และใน initrd) ตัวอย่างเช่นคู่มือGentoo initramfsเมาท์ระบบไฟล์รูทด้วย: mount -o ro /dev/sda1 /mnt/root ทำไมไม่ต่อไปนี้ mount -o rw /dev/sda1 /mnt/root ฉันเห็นว่ามีเหตุผลที่ดี (และอาจเกี่ยวข้องกับswitchroot) แต่ดูเหมือนจะไม่ได้รับการบันทึกไว้ที่ใดเลย

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