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

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


5
อ่านสแต็คของกระบวนการอื่นได้หรือไม่
ฉันพยายามอ่านสแต็กของกระบวนการลูก แต่ไม่มีโชค ฉันรู้ว่ามันเป็นไปได้ที่จะใช้ptraceแต่ptraceอินเทอร์เฟซของอนุญาตให้คุณอ่านเพียงหนึ่งคำในแต่ละครั้งและฉันพยายามสแกนส่วนที่ใหญ่กว่าของสแต็ก ฉันได้ลองอ่าน/proc/$pid/memจากขอบเขตของสแต็คที่แยกออกมาจาก/proc/$pid/mapsไฟล์หลังจากใช้ ptrace เพื่อเชื่อมต่อกับมันเป็นครั้งแรก (ตามที่แนะนำไว้ที่นี่ ) แต่การอ่านทำให้ล้มเหลว (แม้ในขณะทำงานในฐานะรูท) อ่านจากส่วนต่าง ๆ ของกระบวนการ (เช่นกอง) ผมทำอะไรผิดหรือเปล่า? มีตัวเลือกอื่น ๆ อีกไหม?
16 linux  kernel  memory  proc 

3
อะไรคือสาเหตุที่ทำให้เมล็ดลีนุกซ์รุ่นเก่าไม่ได้รับสิทธิพิเศษ?
ทำไมนักพัฒนาลีนุกซ์คนแรกเลือกที่จะใช้เคอร์เนลที่ไม่ได้รับสิทธิพิเศษ? มันคือการบันทึกการประสาน? เท่าที่ฉันรู้ลีนุกซ์ได้รับการพัฒนาในช่วงต้นยุค 90 เมื่อพีซีมีหน่วยประมวลผลเดียว เคอร์เนลที่ไม่ได้รับการยกเว้นมีประโยชน์อะไรบ้างในพีซีดังกล่าว แต่ทำไมข้อดีของโปรเซสเซอร์แบบมัลติคอร์จึงลดลง?

4
ฉันจะลบเคอร์เนลเวอร์ชันเก่าใน CentOS 7 ได้อย่างปลอดภัยได้อย่างไร
ฉันอาจพบอาการแปลก ๆ ที่เกิดจากการแข่งขันของเมล็ดใน CentOS 7 ดังนั้นฉันจะลบเมล็ดเก่าได้อย่างปลอดภัยได้อย่างไร และฉันจะรู้ได้อย่างไรว่าเคอร์เนลตัวใดเป็นรุ่นใหม่ล่าสุด ด้านล่างคือผลลัพธ์ของเทอร์มินัลที่ฉันได้รับในขณะที่ทำการค้นคว้าสิ่งนี้บนเซิร์ฟเวอร์ที่เป็นปัญหา โปรดทราบว่าฉันลองแพคเกจการล้างข้อมูล แต่มันจะเหมือนกัน 2 เมล็ด: คำแนะนำในบทช่วยสอนนี้บอกว่าผลลัพธ์ของคำสั่งสองคำสั่งต่อไปนี้ควรตรงกัน แต่คุณสามารถเห็นได้ว่าคำสั่งนั้นไม่ตรงกันแม้หลังจากรีบูต: [root@localhost ~]# rpm -qa kernel |sort -V |tail -n 1 kernel-3.10.0-229.el7.x86_64 [root@localhost ~]# uname -r 3.10.0-229.14.1.el7.x86_64 คำสั่งที่เหลือยืนยันว่ามีสองเมล็ดและแสดงความพยายามในการลบเก่า [root@localhost ~]# cd /usr/src/kernels [root@localhost kernels]# ls -al total 16 drwxr-xr-x. 4 root root 4096 Oct 2 12:55 . …

4
ฉันจะเรียนรู้สิ่งที่ฉันสามารถทำได้กับ / proc และ / sys [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Unix & Linux Stack Exchange ปิดให้บริการใน2 ปีที่ผ่านมา ฉันต้องการทราบเพิ่มเติมเกี่ยวกับการใช้งานขั้นสูงของ/procและ/sysระบบไฟล์เสมือน แต่ฉันไม่รู้ว่าจะเริ่มต้นอย่างไร ใครช่วยแนะนำแหล่งข้อมูลที่ดีให้เรียนรู้ได้บ้าง นอกจากนี้เนื่องจากฉันคิดว่า sys มีการเพิ่มเป็นประจำสิ่งที่ดีที่สุดในการทำให้ความรู้ของฉันเป็นปัจจุบันเมื่อเคอร์เนลใหม่ถูกปล่อยออกมา
15 linux  kernel  proc  sysfs 


7
ค้นหาข้อมูลเกี่ยวกับระบบ / เครื่องใน Unix ได้อย่างไร
ฉันมักจะพบว่ามันยากที่จะหาข้อมูลเกี่ยวกับระบบใน Unix ไม่ว่าจะเป็น ฉันใช้ระบบปฏิบัติการใด (หมายเลขเวอร์ชันและทั้งหมดเพื่อเปรียบเทียบกับบิลด์ที่มีล่าสุด) ฉันกำลังใช้สภาพแวดล้อมเดสก์ท็อปใดอยู่ ถ้าฉันใช้ KDE โปรแกรมส่วนใหญ่เริ่มต้นด้วย K และฉันสามารถพูดได้ว่าฉันใช้ KDE แต่ควรมีวิธีการสอบถามสิ่งนี้พูดจากสคริปต์ ฉันใช้เคอร์เนลเวอร์ชันใด (ตัวอย่างเช่นฉันใช้ Fedora และฉันต้องการทราบว่า Linux kernel รุ่นใดที่ฉันใช้อยู่) โดยพื้นฐานแล้วสิ่งที่ฉันพลาดคือจุดเดียว / ยูทิลิตี้ที่สามารถรับข้อมูลทั้งหมดนี้สำหรับฉัน ส่วนใหญ่เวลาแก้ไขปัญหาข้างต้นจะเป็นระบบปฏิบัติการเฉพาะ จากนั้นคุณติดอยู่

1
TSC_DEADLINE ปิดใช้งานเนื่องจาก Errata
ฉันส่งคอมพิวเตอร์ของฉันไปที่ผู้ผลิตเพื่อการวินิจฉัยและช่วยเหลือปัญหาการส่งสัญญาณวิดีโอที่มี พวกเขาอัพเดท BIOS ตั้งแต่นั้นมาฉันก็ได้ [Firmware Bug]: TSC_DEADLINE disabled due to Errata; please update microcode to version: 0x20 (or later) ฉันไม่ได้ติดตั้งไมโครโค้ดหรือแพ็คเกจucodeใด ๆมาก่อนและฉันไม่เคยได้รับข้อความนี้ ฉันได้ติดต่อผู้ผลิตแล้วและพวกเขาตอบว่า "จำหมายเลขตั๋วของคุณไม่ได้ แต่สงสัยว่าเราอัปเดตไบออส" ดังนั้นพวกเขาจึงไม่ได้มีประโยชน์มาก มันเริ่มระบบและทำงานได้ แต่ TSC_DEADLINE สำคัญหรือมีประโยชน์หรือไม่ สิ่งเดียวที่ฉันสามารถหาเกี่ยวกับเรื่องนี้คือ: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/?id=73b866d89bf7c9a895d5445faad03fa3d56c8af8 แต่ดูเหมือนว่าจะนำไปใช้กับ VirtualBox เท่านั้นและในกรณีใด ๆ ฉันกำลังใช้เคอร์เนล 4.14 อยู่แล้วดังนั้นฉันจึงคิดว่าการส่งมอบนั้นจะแก้ไขปัญหาของฉันได้หรือไม่ ryan@pocketwee:~$ uname -a Linux pocketwee 4.14.0-1-amd64 #1 SMP Debian 4.14.2-1 (2017-11-30) x86_64 …

5
วิธีการรีสตาร์ทเครื่อง Linux ผ่าน SSH หากระบบไฟล์รูทไม่ทำงาน
เช่นเดียวกับความอยากรู้ มีบางอย่างผิดพลาดกับเครื่อง Linux ทำให้ระบบไฟล์รูทแสดงเป็น "64Z" คำสั่งบางคำสั่งทำงาน, เช่นtop, dfและkill, แต่มีบางคำสั่งเช่นreboot"ไม่พบคำสั่ง" (เนื่องจากไม่สามารถอ่านระบบไฟล์รูท) และchmodเกิดข้อผิดพลาดในการแบ่งส่วน มีวิธีใดบ้างที่จะรีสตาร์ทระบบเช่นไม่มีrebootโปรแกรมหรือไม่ ฉันพยายามkill -PWR 1(ส่ง SIGPWR เพื่อเริ่มต้น) แต่สิ่งนี้ดูเหมือนจะไม่ทำอะไรเลย ส่วนใหญ่มันเป็นความอยากรู้ทางวิชาการ เพื่อนร่วมห้องที่กำลังทำงานอะไรก็ตามที่ทำงานกับฐานข้อมูลขนาดใหญ่ที่ทำให้เกิดความล้มเหลวก็จะทำการรีสตาร์ทเครื่องทันที
15 kernel  kill 

1
เคอร์เนล Linux: ความหมายของซอร์ส - ทรี, อิน - ทรีและ out-of-tree
คำว่า "in-tree" และ "out-of-tree" หมายถึงอะไร? นอกจากนี้ "source tree" อ้างถึงเคอร์เนลอย่างเป็นทางการที่ปล่อยจาก / ดูแลที่ kernel.org หรือเป็นคำทั่วไปที่สามารถอ้างถึงเคอร์เนลลินุกซ์ (แก้ไข) ใด ๆ ได้หรือไม่?
15 linux  kernel 

3
วิธีการตรวจสอบว่ามีการเปิดใช้งาน isolcpus?
วิธีการตรวจสอบว่ามีการเปิดใช้งาน Isolcpus และซีพียูตัวใดตัวอย่างเช่นคุณเชื่อมต่อเป็นครั้งแรกบนเซิร์ฟเวอร์ เงื่อนไข: ไม่วางไข่กระบวนการใด ๆ เพื่อดูว่ามันจะถูกโยกย้าย กรณีที่ใช้ก็คือว่าisolcpus=1-7เมื่อวันที่ 6 แกน i7 ดูเหมือนว่าจะไม่ได้เปิดใช้งาน isolcpus ที่บูตและฉันอยากจะรู้ว่าถ้าเป็นไปได้จาก/proc/, /sysหรือ internals เคอร์เนลใด ๆ ที่สามารถอ่านได้ใน userspace เพื่อให้สถานะที่ชัดเจนของการเปิดใช้งานของ isolcpus และซีพียูใดที่เกี่ยวข้อง หรือแม้กระทั่งอ่านการตั้งค่าที่ใช้งานของตัวกำหนดตารางเวลาซึ่งเป็นสิ่งแรกที่เกี่ยวข้องโดย isolcpus พิจารณาว่าสถานะการออนไลน์มีขนาดใหญ่มากซึ่งdmesgจะไม่มีการแสดงรายการบูตเพื่อตรวจหาข้อผิดพลาดเมื่อเริ่มต้น คำตอบพื้นฐานเช่น " look at kernel cmd line " จะไม่ได้รับการยอมรับ :)
15 linux  kernel 

2
เคอร์เนล Linux / Unix ต่างกันหรือไม่?
ฉันสามารถใช้เคอร์เนล Linux และใช้ร่วมกับพูด FreeBSD และในทางกลับกัน (เคอร์เนล FreeBSD พูดเป็น Debian) ได้หรือไม่ มีคำตอบสากลหรือไม่? ข้อ จำกัด คืออะไร? สิ่งกีดขวางคืออะไร?

3
เคอร์เนลทั้งหมดถูกโหลดเข้าสู่หน่วยความจำขณะบูตหรือไม่
ฉันอ่านIBM doc ที่เป็นที่นิยม (ฉันเห็นว่ามีการอ้างอิงค่อนข้างบ่อยบนเว็บ) อธิบายการทำงานของดิสก์ RAM เริ่มต้น ฉันตีกำแพงในการกำหนดแนวคิดว่ามันทำงานอย่างไร ในเอกสารมันบอกว่า ตัวโหลดบูตเช่น GRUB ระบุเคอร์เนลที่จะโหลดและคัดลอกอิมเมจเคอร์เนลนี้และ initrd ที่เกี่ยวข้องใด ๆ ลงในหน่วยความจำ ฉันสับสนแล้ว: มันคัดลอกเคอร์เนลทั้งหมดไปยังหน่วยความจำหรือเพียงแค่ส่วนหนึ่งของมันได้หรือไม่ หากเคอร์เนลทั้งหมดอยู่ในหน่วยความจำแล้วทำไมเราถึงต้องใช้ RAM ดิสก์เริ่มต้นด้วยซ้ำ ฉันคิดว่าจุดประสงค์ของการเริ่มต้นเพื่อให้สามารถมีเคอร์เนลอิมเมจขนาดเล็กทั่วไปและ initrd จะติดตั้งโมดูลที่ถูกต้องก่อนที่จะโหลดอิมเมจเคอร์เนล แต่ถ้าเคอร์เนลทั้งหมดอยู่ในหน่วยความจำแล้วทำไมเราถึงต้องเริ่มต้น? นั่นยังทำให้เกิดสิ่งอื่นที่ทำให้ฉันสับสน - โมดูลที่โหลดลงในเคอร์เนลตั้งอยู่ที่ไหน โมดูลเคอร์เนลทั้งหมดถูกเก็บไว้ภายใน initrd หรือไม่?

2
ดีไหมถ้ามี Linux Kernel หลายรุ่น?
ครั้งหนึ่งฉันติดตั้งเคอร์เนลแพทช์และมีบางอย่างผิดพลาดบนเซิร์ฟเวอร์ที่ใช้งานอยู่ซึ่งเรามีลูกค้านับร้อย มีเคอร์เนลเดียวเท่านั้นในระบบ ดังนั้นเซิร์ฟเวอร์จึงหยุดทำงานชั่วคราวและเมื่อใช้ซีดีสดเราจึงทำให้ระบบเริ่มทำงานและทำงานซ่อมแซมต่อไป ตอนนี้คำถามของฉัน: เป็นความคิดที่ดีหรือไม่ที่มีเคอร์เนล 2 เวอร์ชันดังนั้นหากเคอร์เนลเสียหายเราสามารถรีบูตด้วยเคอร์เนลอื่นที่มีอยู่ได้หรือไม่ โปรดแจ้งให้เราทราบ นอกจากนี้เป็นไปได้หรือไม่ที่จะมีเคอร์เนลเดียวกัน 2 เวอร์ชัน? เพื่อให้ฉันสามารถเลือกเคอร์เนลอื่นเมื่อมีความเสียหายเคอร์เนล? Edited: My Server Details: 2.6.32-431.el6.x86_64 CentOS release 6.5 (Final) ฉันจะมีสำเนาเดียวกันของเคอร์เนลนี้ดังนั้นเมื่อเคอร์เนลของฉันเสียหายฉันสามารถเริ่มเคอร์เนลสำรองได้อย่างไร
14 linux  centos  kernel 

5
“ การเรียกของระบบ” มีความหมายอย่างไรหากไม่มีการใช้งานในภาษาโปรแกรม
ฉันต้องการที่จะเข้าใจคำว่า "การเรียกระบบ" ฉันคุ้นเคยกับการเรียกใช้ระบบเพื่อรับบริการเคอร์เนลจากแอปพลิเคชัน userspace ส่วนที่ฉันต้องการชี้แจงด้วยคือความแตกต่างระหว่าง "การเรียกระบบ" และ "การใช้งาน C ของการเรียกระบบ" นี่คือข้อความที่ทำให้ฉันสับสน: บนระบบที่คล้าย Unix API นั้นมักจะเป็นส่วนหนึ่งของการใช้งาน C library (libc) เช่น glibc ซึ่งมีฟังก์ชั่น wrapper สำหรับการโทรของระบบซึ่งมักจะตั้งชื่อเหมือนกับการเรียกระบบที่พวกเขาเรียก "การเรียกระบบที่พวกเขาเรียก" คืออะไร? แหล่งของพวกเขาอยู่ที่ไหน ฉันสามารถรวมพวกเขาโดยตรงในรหัสของฉัน? "การเรียกของระบบ" ในแง่สามัญเพียงแค่ POSIX อินเตอร์เฟสที่กำหนด แต่จริง ๆ แล้วเห็นการใช้งานอย่างใดอย่างหนึ่งสามารถตรวจสอบแหล่ง C และในนั้นดูว่าผู้ใช้จริงเพื่อการสื่อสารเคอร์เนลจริงไป? บันทึกพื้นหลัง: /devฉันพยายามที่จะเข้าใจถ้าในท้ายที่สุดแต่ละฟังก์ชั่นคปลายขึ้นโต้ตอบกับอุปกรณ์จาก
14 kernel  c  posix  system-calls 

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