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

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

1
256 สีในคอนโซล (tty)
X serverสมมติว่าผมมีระบบโดยไม่ต้อง ฉันสามารถล็อกอินได้จากคอนโซลเท่านั้น ดูเหมือนว่าโดยค่าเริ่มต้นคอนโซลลินุกซ์รองรับเพียง 8 สี: # tput colors 8 เป็นไปได้หรือไม่ที่จะใช้ 256 สีในคอนโซลเหมือนกับที่ฉันใช้ในเทอร์มินัลอีมูเลเตอร์ (เช่นเทอร์มิเนเตอร์) ในขณะที่ googling Ihave พบคำถามที่คล้ายกันมากมาย (หลายคนมีอายุมากกว่า 10 ปี) แต่ไม่มีคำตอบที่ชัดเจน บางคนแนะนำให้ใช้ framebuffer บางคนแนะนำให้ผนวกอาร์กิวเมนต์ TERM กับตัวเลือกการบูตเคอร์เนล ในขณะนี้ฉันส่งเพียงหนึ่งตัวเลือกพิเศษเป็นพารามิเตอร์การบูตเคอร์เนล: append="video=1280x720" ฉันเชื่อว่าการส่งความละเอียดวิดีโอใช้งานได้กับเมล็ดที่ทันสมัยkernel mode settingเท่านั้น แต่ฉันไม่แน่ใจ เป็นไปได้หรือไม่ที่จะใช้ 256 สีในคอนโซล linux รุ่นใหม่ (tty) อย่างไร? ฉันใช้ Debian Wheezy กับ kernel 4.1 UPDATE: ตามคำแนะนำจาก @muru ฉันได้ลองfbtermแล้ว …

1
จะเข้าใจเอาต์พุต modinfo ได้อย่างไร?
ฉันแค่พยายามที่จะเข้าใจmodinfoผลลัพธ์ที่อธิบายถึงโมดูลเคอร์เนล ตัวอย่างเช่นในกรณีของโมดูลi915เอาต์พุตจะมีลักษณะดังนี้: $ modinfo i915 filename: /lib/modules/4.2.0-1-amd64/kernel/drivers/gpu/drm/i915/i915.ko license: GPL and additional rights description: Intel Graphics author: Intel Corporation [...] firmware: i915/skl_dmc_ver1.bin alias: pci:v00008086d00005A84sv*sd*bc03sc*i* [...] depends: drm_kms_helper,drm,video,button,i2c-algo-bit intree: Y vermagic: 4.2.0-1-amd64 SMP mod_unload modversions parm: modeset:Use kernel modesetting [KMS] (0=DRM_I915_KMS from .config, 1=on, -1=force vga console preference [default]) (int) [...] ฉันสามารถเข้าใจบางฟิลด์ได้ …

1
รหัสแหล่งที่มาของ GRUB2 อยู่ที่การส่งมอบ / ข้ามไปยังรหัสเคอร์เนล?
ฉันกำลังมองหาบรรทัดของรหัสที่ GRUB2 ในที่สุดก็กระโดดไปที่รหัสเคอร์เนลและส่งมอบการดำเนินการในระบบ x86? ฉันเดาว่ามันอยู่ในไฟล์แอสเซมเบลอร์เนื่องจากเป็นสิ่งที่มีสถาปัตยกรรมต่ำมาก ฉันดูไฟล์ต้นฉบับ/grub-core/boot/i386/pc/*.Sและพบ a JMPในboot.S ที่บรรทัด 455แต่kernel_addressอาจเป็นแอดเดรสของเคอร์เนล GRUB2 ในหน่วยความจำไม่ใช่เคอร์เนล linux ทุกคนที่มีความรู้การชุมนุมและ GRUB2 ที่สามารถช่วยฉันออกมา?

3
อะไรคือความแตกต่างระหว่าง“ เลือก” กับ“ ขึ้นกับ” ในเคอร์เนล Kconfig?
อะไรคือความแตกต่างของการพึ่งพาระหว่างselectและdepends onในไฟล์ Kconfig config FB_CIRRUS tristate "Cirrus Logic support" depends on FB && (ZORRO || PCI) select FB_CFB_FILLRECT select FB_CFB_COPYAREA select FB_CFB_IMAGEBLIT ---help--- This enables support for Cirrus Logic GD542x/543x based boards on Amiga: SD64, Piccolo, Picasso II/II+, Picasso IV, or EGS Spectrum. ในตัวอย่างข้างต้นเป็นวิธีที่FB_CIRRUSเกี่ยวข้อง diffrently ไปFB && (ZORRO || PCI)กว่านั้นคือการFB_CFB_FILLRECT, …

2
การเพิ่มการเรียกระบบใหม่ไปยัง Linux 3.2.x ด้วยโมดูลเคอร์เนลที่โหลดได้ [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Unix & Linux Stack Exchange ปิดให้บริการใน7 ปีที่ผ่านมา ฉันต้องการเพิ่มการเรียกของระบบใหม่ใน linux kernel 3.2.x แต่เป็นโมดูลเคอร์เนลที่สามารถโหลดได้ (เพราะฉันไม่ต้องการคอมไพล์เคอร์เนลซ้ำแล้วซ้ำอีก) ฉันอ่านโพสต์มากมายบนอินเทอร์เน็ตและใน SO และบางแห่งอ้างว่าการใช้การเรียกระบบเนื่องจากโมดูลที่โหลดได้นั้นเป็นไปไม่ได้ในขณะที่คนอื่นบอกว่าเป็นไปได้ มันคืออะไร จะทำอย่างไรถ้าเป็นไปได้?

1
เหตุใด Linux จึงแสดงทั้งหน่วยความจำมากขึ้นและน้อยลงกว่าที่ฉันได้ติดตั้งไว้
ฉันรู้เกี่ยวกับการแลกเปลี่ยน - คำถามนี้ไม่ได้เกี่ยวกับเรื่องนั้น ใน dmesg เคอร์เนล Linux (x86-64) บอกฉันเกี่ยวกับจำนวนหน่วยความจำที่ฉันมี: [ 0.000000] Memory: 3890880k/4915200k available (6073k kernel code, 861160k absent, 163160k reserved, 5015k data, 1596k init) cat /proc/meminfo บอกฉันว่าฉันมี MemTotal: 3910472 kB และจากการคำนวณของฉันฉันคิดว่าฉันควรมี RAM 4 * 1024 * 1024 = 4194304k ซึ่งเป็นวิธีที่เล็กกว่ารูปที่สองในบรรทัด dmesg ด้านบน! ตัวเลขเหล่านี้ต่างกันอย่างไร โดยวิธีการที่uname -aส่งออก: Linux pavilion 3.2.2-1.fc16.x86_64 #1 …

4
การใช้ส่วนหัวเคอร์เนลเรียลไทม์เพื่อรวบรวมรหัสผู้ใช้กับส่วนหัวเริ่มต้น
ตามความต้องการของลูกค้าฉันติดตั้ง CentOS 5.6 ด้วยเคอร์เนลเริ่มต้น ด้วยเคอร์เนลนี้ติดตั้งไฟล์ time.h #define CLOCK_MONOTONICรวมถึง ตอนนี้เคอร์เนลแบบ real-time ได้รับการติดตั้งพร้อมกับเคอร์เนล devel CLOCK_MONOTONIC_RAWและรหัสของเราต้องการที่จะใช้ มันมีอยู่เป็นส่วนหนึ่งของไฟล์ส่วนหัวของเคอร์เนล แต่เมื่อฉันรวบรวมรหัสของเรามันไม่พบมันใน userspace มาตรฐานรวมถึง คำถามของฉันคือขั้นตอนที่เหมาะสมในการรวม / แทนที่time.hพบโดยค่าเริ่มต้นด้วยเคอร์เนลเรียลไทม์คืออะไร? จากการวิจัยของฉันดูเหมือนว่า symlink ไม่ดีดังนั้นควรจัดการอย่างไร ขั้นตอนหรือกระบวนการคืออะไร? การอัพเกรดเป็น CentOS 6.0 หรือ 5.7 ไม่ใช่ตัวเลือกตามความต้องการของลูกค้า

2
อาร์กิวเมนต์เคอร์เนลทั้งหมดใช้โดยเคอร์เนลจริง ๆ หรือไม่
ทำไมลินุกซ์อนุญาตให้ 'init = / bin / bash' ฉันอ่านสิ่งนี้คำตอบกำลังบอกว่ามันเป็น KERNEL ที่กำลังเรียกใช้โปรแกรมเริ่มต้นนี้ จากนั้นฉันก็เริ่มสงสัยว่า Linux มักจะมาพร้อมกับ initramfs ซึ่งในที่สุดจะเมานต์และ pivot_root กับระบบไฟล์รูทจริง initอาร์กิวเมนต์นี้หมายความว่าอย่างไร เส้นทางใน initramfs หรือไม่ หรืออย่างที่ฉันเดามันไม่ได้อ่านโดยเคอร์เนล แต่โดย init ของ initramfs เพื่อดำเนินการ init จริง นอกจากนี้ยังมีroot=UUID=xxxxข้อโต้แย้งที่ว่าจะอ่านโดยเคอร์เนลหรือเพียงแค่เริ่มต้นของ initramfs เพื่อค้นหาระบบไฟล์รูทจริง? ดูเหมือนว่าฉันสามารถส่งผ่านอาร์กิวเมนต์ใด ๆ ที่ฉันต้องการเป็นอาร์กิวเมนต์ของเคอร์เนลดังนั้นพวกเขาจึงอ่านทั้งหมดโดยเคอร์เนลหรืออย่างน้อยบางส่วนมีความหมายเฉพาะกับโปรแกรม userspace หรือไม่

1
ถอนติดตั้งเมานด์ rbind โดยไม่มีผลกับเมานต์ดั้งเดิม
ถามถึงข้อผิดพลาดของเซิร์ฟเวอร์แต่ไม่ได้รับความสนใจเพียงพอจึงโพสต์ที่นี่อีกครั้งด้วยความหวังว่าบางคนที่นี่รู้คำตอบ มีคำถามอีกข้อหนึ่งที่พูดถึงการติดตั้ง rbind mounts แต่วิธีแก้ปัญหามีผลที่ไม่ต้องการ พิจารณาเค้าโครงไดเรกทอรีต่อไปนี้: . ├── A_dir │ └── mount_b ├── B_dir │ └── mount_c └── C_dir ตอนนี้ผมผูกC_dirไปB_dir/mount_cและ rbind B_dirเพื่อA_dir/mount_b: [hidden]$ sudo mount --bind C_dir B_dir/mount_c [hidden]$ sudo mount --rbind B_dir A_dir/mount_b [hidden]$ mount | grep _dir | wc -l 3 ตอนนี้umount A_dir/mount_bจะล้มเหลวซึ่งไม่น่าแปลกใจ ตามที่ตอบทุกที่บนเว็บเราต้องก่อนแล้วumount A_dir/mount_b/mount_c umount A_dir/mount_bอย่างไรก็ตามumount A_dir/mount_b/mount_cจะยกเลิกการต่อเชื่อมB_dir/mount_cซึ่งไม่เป็นที่ต้องการ: …

2
ไฟล์จัดเก็บเคอร์เนลอยู่ที่ไหน
ปัจจุบันฉันเรียกใช้ Angstrom Linux 2.6.32 ฉันตั้งใจจะอัพเกรดเคอร์เนลลินุกซ์จาก 2.6.32 เป็น 3.0.7 ด้วยเหตุนี้ฉันจึงต้องกำหนดค่าเคอร์เนล 3.0.7 ที่ทำงานmake menuconfigอยู่ ตอนนี้ฉันต้องการเปรียบเทียบการกำหนดค่าเคอร์เนลใหม่กับก่อนหน้านี้ แต่ฉันไม่พบไฟล์การกำหนดค่าเคอร์เนล 3.0.7 ความคิดใด ๆ

2
ENOANO (ไม่มีขั้วบวก) มีไว้เพื่ออะไร
คำถามนี้เป็นเพียงความอยากรู้ที่ไม่ได้ใช้งาน แต่ฉันสงสัยว่าคนอื่นจะอยากรู้อยากเห็นเช่นกัน การค้นหา errno.h (จาก Linux 2.6) ฉันพบ ENOANO "No Anode" ไม่มีสัญญาณของข้อผิดพลาด "ไม่มีแคโทด" เมื่อมองผ่านความสอดคล้องของแหล่งที่มาของเคอร์เนลดูเหมือนว่าจะไม่ถูกใช้โดยอุปกรณ์ที่เรียกว่าแอโนดซึ่งเป็นรหัสข้อผิดพลาดที่ผิดปกติอย่างจงใจโดยไดรเวอร์อุปกรณ์ที่ไม่ชัดเจน Googling เปิดเผยว่าไม่มีอะไรน่าสนใจ มันอาจเป็นเรื่องตลกหรือไม่? มันกำหนดไว้ในเอกสารมาตรฐานเช่น POSIX แต่ไม่มีประโยชน์หรือไม่?

3
เคอร์เนล Linux ไม่พบ initrd อย่างถูกต้อง
ฉันได้รวบรวมเคอร์เนล linux และฉันต้องการดีบักใน QEMU ฉันสร้างไฟล์เพื่อบู๊ตจากการทำคำสั่ง $ qemu-img create -f raw disk.img 200M $ mkfs.ext2 -F disk.img # mkdir /mnt/rootfs # mount -o loop disk.img /mnt/rootfs จากนั้นฉันก็ทำqemu -kernel bzImage -initrd disk.imgและได้หน้าจอด้านล่างที่ระบุว่า: Kernel panic - not syncing: VFS: unable to mount root fs on unknown block ฉันทำอะไรผิดและฉันต้องแก้ไขอย่างไร

1
อะไรคือความแตกต่างที่สำคัญระหว่างเมล็ด Unix และ Linux
ฉันรู้ว่าโปรแกรมเดียวกันจำนวนมากทำงานได้อย่างไม่มีที่ติบนทั้งสองเมล็ด ฉันรู้ว่าในอดีตเมล็ดทั้งสองนั้นมาจากต้นกำเนิดที่แตกต่างกัน ฉันรู้ปรัชญาด้วยเหมือนกันว่าพวกเขายืนหยัดเพื่อสิ่งต่าง ๆ คำถามของฉันคือในวันนี้ในปี 2011 อะไรทำให้เคอร์เนล Unix แตกต่างจาก Linux หนึ่งและในทางกลับกัน

1
ความแตกต่างระหว่าง src เวอร์ชัน 3 * และ 3. * - generic
ใน Linux / Ubuntu ในพื้นที่ของฉันฉันมีสองไดเรกทอรีสำหรับ Linux src /usr/src/linux-3.16.0 /usr/src/linux-3.16.0-generic ฉันพบรหัสใน 3.16.0 มากกว่าใน 3.16.0 ทั่วไป ฉันสงสัยว่าทำไมและไดเรกทอรีทั้งสองนั้นแตกต่างกันอย่างไร (และพวกเขาเป็นตัวแทนอะไร)

2
ทำไมเครื่องมือไร้สายรุ่น 30 กลายเป็นเบต้าถาวร
ฉันพบข้อมูลที่ดีเกี่ยวกับเครื่องมือไร้สายในQ / Aนี้ เห็นได้ชัดว่ามันถูกนำมาใช้กับเคอร์เนลลินุกซ์ในปี 1997 โดย Jean Tourrhiles สนับสนุนโดย Hewlett Packard แก้ไข: ดูเหมือนว่า WE (ส่วนขยายไร้สาย) ถูกเพิ่มเข้าไปในเคอร์เนลโดย Tourrhiles ไม่ใช่เครื่องมือไร้สายด้วยตนเอง เครื่องมือมีอยู่ใน distros ส่วนใหญ่เป็นวิธีหลักในการสื่อสารกับเรา /proc/net/wirelessท่านสามารถเข้าดูเราในเคอร์เนลที่ รุ่นล่าสุดที่ปล่อยออกมาเป็นv29ยัง Ubuntu 14 และ 16 ดูเหมือนจะมีv30เบต้า ( iwconfig -v) ฉันอยากรู้ว่าเกิดอะไรขึ้นกับแพ็คเกจนี้ เหตุใดรุ่น "เบต้า" 30 จึงกลายเป็นรุ่นมาตรฐาน defacto ใช้ HP หยุดระดมทุน Jean Tourrhiles เพื่อหยุดการพัฒนาหรือไม่ หรืออาจจะตัดสินใจว่ามันเสถียรพอที่จะหยุดการพัฒนา แต่ถ้าเป็นเช่นนั้นทำไม 30 จะยังคงเป็นเบต้า? ฉันพบหน้า Github นี้แต่ดูเหมือนว่าจะเป็นข้อมูลอ้างอิงทางประวัติศาสตร์เท่านั้น …

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