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

คำถามเกี่ยวกับ Linux kernel และ Linux kernel หัวข้อที่เกี่ยวข้องเช่น รายละเอียดการนำไปใช้เช่นการเรียกใช้ระบบการปรับแต่งเคอร์เนล ฯลฯ สำหรับหัวข้อพื้นที่ผู้ใช้ Linux ซึ่งไม่เกี่ยวข้องกับรายละเอียดเคอร์เนล [linux] หรือแท็กการกระจายจะเหมาะสมกว่า

2
ไฟล์ใดในเคอร์เนลระบุ fork (), vfork () ... เพื่อใช้การเรียกระบบ sys_clone ()
เมื่อ ltrace ใช้สำหรับการติดตามการเรียกของระบบฉันเห็นว่า fork () ใช้ sys_clone () มากกว่า sys_fork () แต่ฉันไม่สามารถหาแหล่งที่มาของลินุกซ์ที่มีการกำหนดไว้ โปรแกรมของฉันคือ #include<stdio.h> main() { int pid,i=0,j=0; pid=fork(); if(pid==0) printf("\nI am child\n"); else printf("\nI am parent\n"); } และเอาท์พุท ltrace คือ SYS_brk(NULL) = 0x019d0000 SYS_access("/etc/ld.so.nohwcap", 00) = -2 SYS_mmap(0, 8192, 3, 34, 0xffffffff) = 0x7fe3cf84f000 SYS_access("/etc/ld.so.preload", 04) = -2 SYS_open("/etc/ld.so.cache", …

1
ฉันจะแปลงไฟล์เคอร์เนล. config จาก 32 บิตเป็น 64 บิตได้อย่างไร
ในหน้านี้คุณสามารถดาวน์โหลดไฟล์กำหนดค่าที่ให้คุณกำหนดเป้าหมายสถาปัตยกรรมโน้ตบุ๊กเฉพาะในระหว่างการรวบรวมเคอร์เนลลินุกซ์ 32 บิตใหม่ ฉันต้องการเวอร์ชัน 64 บิต ฉันต้องทำอะไร? ฉันรวบรวมเคอร์เนล 2-3 ครั้งในชีวิต แต่ฉันไม่เคยแตะไฟล์ปรับแต่งฉันมักจะใช้เมนูแบบโต้ตอบ

1
สาเหตุการแยกการใช้งาน CPU สูงขึ้นใน RHEL 6 กับ RHEL 5
ขณะนี้ฉันต้องการย้ายระบบของเราจาก RHEL 5 ไปยัง RHEL 6 แต่ฉันได้พบกับอุปสรรคที่มีการใช้งาน CPU สูงอย่างไม่คาดคิดในเครื่อง RHEL 6 ดูเหมือนว่านี่อาจเป็นเพราะอย่างน้อยในบางส่วนของการใช้งานselectเพื่อให้การนอนหลับขัดจังหวะ นี่คือตัวอย่างง่ายๆที่แสดงพฤติกรรม: #include <sys/select.h> int main() { timeval ts; for (unsigned int ii=0; ii<10000; ++ii) { ts.tv_sec = 0; ts.tv_usec = 1000; select(0, 0, 0, 0, &ts); } return 0; } บนเครื่อง RHEL 5 จะอยู่ที่การใช้งาน CPU 0% แต่บนฮาร์ดแวร์เดียวกันกับ RHEL …

1
วิธีแก้ปัญหาระบบค้าง
ฉันพบข้อผิดพลาดแปลก ๆ เมื่อฉันปิดฝาแล็ปท็อปของฉัน - ระบบค้าง (ไม่มีปฏิกิริยาต่อปุ่มกดไม่มีรูปแบบการตอบสนอง) แข็งและแสดงเอฟเฟกต์สีแปลก ๆ บันทึกเคอร์เนล (หลังจากรีบูต) ไม่แสดงอะไรเลย คำถามของฉันคือ - จะแก้ไขข้อบกพร่องได้อย่างไร อาจจะมีวิธีการติดตามฟังก์ชั่นเคอร์เนลที่เรียกว่าครั้งสุดท้ายหรือสิ่งที่คล้ายกัน?

3
สามารถใช้ vmlinux แทน uImage ได้หรือไม่?
ฉันต้องการใช้เคอร์เนลอิมเมจที่ไม่มีการบีบอัดและบู๊ต BeagleBoard โดยทั่วไปฉันใช้ uImage เพื่อบูตเคอร์เนลซึ่งอยู่ในรูปแบบที่บีบอัด ฉันจะใช้เคอร์เนลอิมเมจที่ไม่บีบอัดได้อย่างไร?

2
วิธีรายการคอนโซลและแบบอักษรเคอร์เนล?
ฉันติดตั้งฟอนต์คอนโซลจำนวนหนึ่งในการ/lib/kbd/consolefonts/ติดตั้งแล้ว ฉันจะแสดงรายการเหล่านั้นได้อย่างไร (เห็นได้ชัดว่าฉันทำได้แค่ดูชื่อไฟล์ แต่ไม่ใช่รายการที่มีแบบอักษร) ฉันจะเปลี่ยนแบบอักษรคอนโซลได้อย่างไร ฉันจะสร้างไดเรกทอรีที่จัดการได้โดยผู้ใช้สำหรับแบบอักษรเหล่านั้นได้อย่างไรฉันควรใช้/usr/local/lib/consolefonts/อย่างไร ตอนนี้ฉันยอมรับเคอร์เนลพารามิเตอร์ SYSFONT SYSFONT=latarcyrheb-sun16นี้: ฉันต้องการมีรายการซึ่งฟอนต์เคอร์เนลของฉันรองรับและฉันสามารถเลือกพวกมันได้อย่างไร (เช่นในฉันจะแสดงรายการฟอนต์ที่คอมไพล์แล้วของเคอร์เนลได้อย่างไร)

2
นิยาม task_struct อยู่ที่ไหนในเคอร์เนล 2.6.30.5
ในเคอร์เนลเวอร์ชัน 2.6.15 ฉันได้ว่าฉันสามารถเขียนtask_structในไฟล์ (รวมถึง / linux / sched.h), เช่น: struct task_struct { unsigned did_exec:1; pid_t pid; pid_t tgid; ... char hide; } แต่น่าเสียดายที่เมื่อฉันอัปเกรดเป็นเวอร์ชัน 2.6.30.5 ฉันดูไฟล์เดียวกันฉันเพิ่งพบคำประกาศของtask_structเช่น: struct task_struct; และผมก็มีความคิดที่ยื่นฉันควรดูเพื่อวัตถุประสงค์ในการระบุของตัวเองไม่task_struct? มีคนช่วยฉันได้ไหม

2
TCP MSS ที่น้อยที่สุดใน Linux
TCP MSS ใน Linux ต้องมีอย่างน้อย 88 (รวม / net / tcp.h): /* Minimal accepted MSS. It is (60+60+8) - (20+20). */ #define TCP_MIN_MSS 88U คำถามของฉันคือ: พวกเขามากับ "60 + 60 + 8" แล้วทำไม ฉันได้ 20 + 20 มาจาก IP header + header TCP แก้ไข: หลังจากดูส่วนหัวอย่างละเอียดสูตรจะมองหาฉันเช่นนี้: (MAX_IP_HDR + MAX_TCP_HDR + MIN_IP_FRAG) - …


1
เหตุใดส่วนข้อมูลและรหัสจึงทับซ้อนกันอย่างสมบูรณ์ใน Linux
บริบท: ฉันกำลังอ่าน "การทำความเข้าใจกับเคอร์เนล Linux, 3d ed" ซึ่งใช้เคอร์เนล 2.6.11 คำถาม: ตามที่ฉันเข้าใจที่อยู่ทางกายภาพนั้นได้มาจากการแปลที่อยู่เชิงเส้นซึ่งได้มาจากการแปลที่อยู่เชิงตรรกะ โลจิคัลแอดเดรสประกอบด้วยตัวเลือกเซกเมนต์ซึ่งระบุเซกเมนต์ในตารางรายละเอียด ตารางคำอธิบายส่วนกลางของ Linux ประกอบด้วยส่วนของรหัสผู้ใช้และส่วนข้อมูล แต่ที่อยู่พื้นฐานของทั้งสองเซ็กเมนต์คือ0x0และขนาดก็เหมือนกัน ดังนั้นพวกเขาจึงทับซ้อนกันอย่างสมบูรณ์ ดังนั้นอย่างที่ฉันเข้าใจที่อยู่ทางลอจิคัลcs + offsetเหมือนกับที่อยู่แบบลอจิคัลds + offsetที่ไหนcsและdsมีการลงทะเบียน CPU ที่เก็บตัวเลือกเซ็กเมนต์รหัสและตัวเลือกเซ็กเมนต์ข้อมูลตามลำดับ ฉันคิดว่าเป็นกรณีนี้เพราะทั้งสองเซ็กเมนต์มีที่อยู่ฐานเดียวกันซึ่งเพิ่มขึ้นด้วยออฟเซ็ตเพื่อรับที่อยู่เชิงเส้น หากเป็นกรณีนี้และพวกเขาทั้งคู่แมปไปยังที่อยู่เชิงเส้นเดียวกันพวกเขาจะแมปไปยังที่อยู่ทางกายภาพเดียวกันหรือไม่ ถ้าเป็นเช่นนั้นการใช้การแยกcsและการdsลงทะเบียนคืออะไร?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.