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

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

1
เกิดอะไรขึ้นในแต่ละขั้นตอนของกระบวนการสร้างเคอร์เนล Linux
ฉันได้อ่านแบบฝึกหัดมากมายเกี่ยวกับวิธีสร้างเคอร์เนลที่กำหนดเองและการบูต Ubuntu โดยใช้เมล็ดเหล่านั้นและทำตามคำแนะนำและเมล็ดที่กำหนดเองที่บู๊ตเรียบร้อยแล้ว แต่ฉันไม่เข้าใจเกี่ยวกับสิ่งที่คำสั่งแต่ละคำสั่งในไกด์ทำ แต่ละคำสั่ง ขั้นตอนที่อธิบายในเว็บไซต์ของ Ubuntuไม่มากของการทำงานกับfakeroot, dpkg, make-kpkg, initramfs บางส่วนและสิ่งที่น่ากลัวอื่น ๆ ที่ผลงาน แต่ก็ไม่ได้ช่วยให้ฉันเข้าใจสิ่งที่เกิดขึ้น เอาต์พุตของอะไรmakeในไดเร็กทอรีเคอร์เนล linux? มันสร้าง "ภาพเคอร์เนลที่บีบอัด" หรือไม่? ไฟล์ "บีบอัดอิมเมจเคอร์เนล" ชื่ออะไรและวางไว้ที่ไหน อะไรmake modulesทำอย่างไร ควรmake modulesจะทำก่อนหรือหลังmake? ไม่ได้makeสร้างโมดูลของฉันโดยอัตโนมัติหรือไม่ กระบวนการ (เป็นภาษาอังกฤษไม่ใช่แค่รายการคำสั่ง) ของการเพิ่มเมล็ดที่สร้างขึ้นใหม่ลงในรายการของเมล็ดที่สามารถบู๊ตได้? อะไรmake installทำอย่างไร จะmake installเพิ่มลงในรายการเคอร์เนลที่ใช้บู๊ตได้หรือไม่เพื่อไม่ต้องทำอะไรอีก มีสิ่งที่เทียบเท่าmake modules_installหรือไม่?

3
Linux: เป็นไปได้ไหมที่จะเห็นเฉพาะเธรด / กระบวนการของพื้นที่เคอร์เนล
ฉันรู้ว่ามีสอง "ระดับ" ของโปรแกรม: พื้นที่ผู้ใช้และพื้นที่เคอร์เนล คำถามของฉันคือ: ฉันต้องการเห็นเฉพาะโปรแกรมเคอร์เนลหรือดีกว่า: โปรแกรมบนพื้นที่เคอร์เนล วิธีนี้ถูกต้องหรือไม่ ps -ef|grep "\[" root 1 0 0 20:23 ? 00:00:00 init [4] root 2 0 0 20:23 ? 00:00:00 [kthreadd] root 3 2 0 20:23 ? 00:00:00 [ksoftirqd/0] root 5 2 0 20:23 ? 00:00:00 [kworker/0:0H] root 7 2 0 20:23 ? …

1
SATA“ พูดคุย” SCSI ในแง่ใด SCSI และ ATA ใช้ร่วมกันเท่าใด
อย่างน้อยก็ไม่มีอะไรใหม่สำหรับฉันที่ SATA "พูดถึง" SCSI จริง ๆ แล้วเหตุใดอุปกรณ์ SATA เหล่านี้จึงปรากฏเป็นอุปกรณ์ SCSI ใน Linux มีการถามคำถามที่เกี่ยวข้องมาก่อนเช่นทำไมอุปกรณ์ SATA ของฉันถึงแสดงภายใต้ / proc / scsi / scsi อย่างไรก็ตามสิ่งที่ล้มเหลวที่จะกล่าวถึงที่ฉันได้เห็นสิ่งที่กล่าวถึงก่อนหน้านี้เป็นสิ่งที่ SATA เกี่ยวข้องกับ SCSI และสิ่งที่แตกต่างกัน ฉันคิดว่ามันใช้เพื่อยอมรับว่าพวกเขาแตกต่างกันในชั้นกายภาพเนื่องจากพวกเขาไม่ได้ใช้สายเคเบิลที่ใช้ร่วมกันได้ อย่างไรก็ตามสิ่งที่สูงขึ้นเกี่ยวกับสแต็ค? ฉันรู้ว่า Linux แสดงถึง SATA และแม้แต่ IDE ดิสก์บนเมล็ดที่ทันสมัยได้อย่างไรเช่นเดียวกับ SCSI กับระบบย่อย SCSI แต่แล้วโปรโตคอลจริงที่ใช้กับรถบัสล่ะ? ฉันยังรู้ว่า ATAPI เป็น encapsulation สำหรับ SCSI แต่ ATA ปกติเป็นอย่างไร ฉันสังเกตเห็นว่าฟีเจอร์จาก SCSI …

1
อะไรจะเป็นวิธีที่ดีที่สุดในการแก้ไขปัญหา glibc นี้
ฉันจัดการกล่อง Gentoo Hardened ที่ใช้ความสามารถของไฟล์เพื่อกำจัดความต้องการไบนารีส่วนใหญ่ของ setuid (เช่น/bin/pingมี CAP_NET_RAW และอื่น ๆ ) Infact ไบนารีเดียวที่ฉันเหลืออยู่คืออันนี้: abraxas ~ # find / -xdev -type f -perm -u=s /usr/lib64/misc/glibc/pt_chown abraxas ~ # ถ้าฉันลบบิต setuid หรือติดตั้งระบบไฟล์รูทของฉันnosuidใหม่ sshd และ GNU Screen หยุดทำงานเพราะพวกเขาเรียกgrantpt(3)pesudoterminals หลักและ glibc เรียกใช้โปรแกรมนี้เพื่อ chown และ chmod ทาส pseudoterminal ใต้/dev/pts/และหน้าจอ GNU ใส่ใจเมื่อฟังก์ชั่นนี้ ล้มเหลว ปัญหาคือ manpage สำหรับการgrantpt(3)ระบุอย่างชัดเจนว่าภายใต้ Linux …

4
การอัพเดตเคอร์เนล Linux ในขณะที่ปล่อยให้ระบบเหลืออยู่
ฉันเป็นผู้ใช้ OpenBSD ในคำถามที่พบบ่อย OpenBSDกล่าวว่า: OpenBSD เป็นระบบที่สมบูรณ์โดยมีจุดประสงค์เพื่อให้ข้อมูลตรงกัน มันไม่ได้เป็นเคอร์เนลรวมกับยูทิลิตี้ที่สามารถอัพเกรดแยกจากกัน เมื่อคุณอัพเกรดระบบคุณสามารถทำได้ในครั้งเดียว เคอร์เนลและระบบฐานจะถูกแทนที่ จากนั้นคุณไปและอัปเดตแพ็คเกจบุคคลที่สามของคุณ หากรวบรวมจากแหล่งที่มาคุณจะต้องคอมไพล์เคอร์เนลและบูตใหม่ จากนั้นคุณสร้างระบบฐานอีกครั้งจากนั้นแพ็คเกจที่คุณติดตั้งไว้ หากมีมากกว่าสองสามสัปดาห์ / เดือนที่ผ่านมานับตั้งแต่ที่คุณสร้างทุกสิ่งใหม่ล่าสุดคุณจะต้องติดตั้งสแนปชอตและสร้างใหม่จากที่นั่นเป็นครั้งแรก (หากคุณติดตามสาขา CVS ล่าสุด) การมีเคอร์เนลซิงค์นอกระบบพื้นฐานและ / หรือแพคเกจของบุคคลที่สามเป็นแหล่งที่มาของปัญหาและอาจทำให้คุณไม่ได้รับความช่วยเหลืออย่างจริงจังจากรายชื่อผู้รับจดหมายอย่างเป็นทางการ ฉันค่อนข้างโอเคกับเรื่องนี้ อันที่จริงนี่เป็นหนึ่งในเหตุผลที่ฉันใช้ OpenBSD มันทำให้ระบบเป็นหน่วยที่สอดคล้องกันและทำให้มันง่ายสำหรับฉันในการสร้างภาพรวมทางจิตใจของมัน บน Linux เป็นอย่างไร ลินุกซ์ส่วนใหญ่ที่ฉันรู้ว่าไม่มี "ระบบพื้นฐาน" ในความหมายเดียวกับ BSD แต่เป็นชุดของแพ็คเกจที่ประกอบโดยผู้ให้บริการกระจายสินค้า ซอฟต์แวร์เพิ่มเติมจะถูกเพิ่มเข้าไปในสิ่งนี้โดยผู้ดูแลระบบท้องถิ่นในลักษณะที่ขอบเขตระหว่างสิ่งที่อยู่ที่นั่นตั้งแต่เริ่มต้นและสิ่งที่เพิ่มเข้ามาในภายหลังนั้นเป็นสิ่งที่ดีที่สุดไม่ชัดเจน Linux (โดยทั่วไป) ไม่มีเคอร์เนลที่แข็งแกร่งสำหรับการเชื่อมต่อกับผู้ใช้งาน เคอร์เนลได้รับการปรับปรุงเท่าที่ฉันรู้เช่นเดียวกับซอฟต์แวร์อื่น ๆ และมันทำให้ฉันสับสนเล็กน้อยว่านี่เป็นไปได้ทั้งหมด เพิ่มความจริงที่ว่าบางส่วนของเมล็ดที่กำหนดเองได้รวบรวม (ซึ่งท้อแท้ใน OpenBSD) และมีเคอร์เนลรุ่นต่างๆมากมายที่ระบุไว้ในเมนูการบู๊ตของพวกเขา ใครหรืออะไรรับประกันได้ว่าระบบย่อยต่าง ๆ ของระบบลีนุกซ์สามารถร่วมมือกันได้แม้ว่าพวกเขาจะได้รับการอัพเดตอย่างเป็นอิสระจากกันหรือไม่? เหตุผลที่ฉันถามคือเนื่องจากผู้ใช้รายอื่นในไซต์นี้ถามฉันว่าการเปลี่ยนเคอร์เนลในระบบ Linux ของเขาด้วยเวอร์ชันที่ใหม่กว่า …

2
เหตุใด Linux จึงมีอายุการใช้งานแบตเตอรี่ต่ำเมื่อเทียบกับ Windows
มีบางสิ่งที่เป็นธรรมชาติของระบบปฏิบัติการ Linux ที่ทำให้พวกเขาจัดการพลังงานแบตเตอรี่ไม่ดีตามค่าเริ่มต้นหรือไม่? ฉันคิดว่า distro แบบเบา ๆ อย่าง Lubuntu จะมีข้อได้เปรียบด้านอายุการใช้งานแบตเตอรี่ที่ชัดเจนกว่า Windows แต่นี่ไม่ได้เป็นอย่างนั้น เป็นปัญหาของผู้จำหน่ายฮาร์ดแวร์หรือไม่ - แล็ปท็อปเพิ่งออกแบบมาเพื่อใช้พลังงานอย่างมีประสิทธิภาพมากขึ้นกับระบบปฏิบัติการ Windows ตัวอย่างเช่นจากประสบการณ์ของฉันในแล็ปท็อปเครื่องเดียวกันการแจกจ่าย linux ที่ให้มาดูเหมือนว่าจะมีอายุการใช้งานแบตเตอรี่ที่ต่ำเมื่อเทียบกับ Windows แล็ปท็อปเครื่องเก่าของฉัน (Thinkpad X61) กินเวลานานเกือบครึ่งเมื่อบูตเข้าสู่ Lubuntu มากกว่าที่ใช้ Windows XP ในรุ่นที่ใหม่กว่าฉันได้รับประสิทธิภาพที่แย่คล้ายกันโดยใช้ Fedora 20 กับ Windows 8.1


1
การใช้งาน CPU สูงด้วย CFS?
ฉันถามคำถามก่อนหน้านี้เพื่อลองและแยกแหล่งที่มาของการเพิ่มขึ้นของการใช้งาน CPU เมื่อย้ายแอปพลิเคชันจาก RHEL 5 ไปยัง RHEL 6 การวิเคราะห์ที่ฉันทำเพื่อดูเหมือนจะบ่งชี้ว่าเกิดจาก CFS ในเคอร์เนล ผมเขียนแอพลิเคชันทดสอบและพยายามตรวจสอบว่านี้คือกรณี (การประยุกต์ใช้การทดสอบเดิมลบออกให้พอดีกับขนาด จำกัด แต่ยังคงมีอยู่ในrepo คอมไพล์ ฉันรวบรวมมันด้วยคำสั่งต่อไปนี้ใน RHEL 5: cc test_select_work.c -O2 -DSLEEP_TYPE=0 -Wall -Wextra -lm -lpthread -o test_select_work จากนั้นฉันก็เล่นกับพารามิเตอร์จนกระทั่งเวลาดำเนินการต่อการทำซ้ำประมาณ 1 ms ใน Dell Precision m6500 ฉันได้ผลลัพธ์ต่อไปนี้ใน RHEL 5: ./test_select_work 1000 10000 300 4 time_per_iteration: min: 911.5 us avg: 913.7 …

5
จำกัด ขนาดของบัฟเฟอร์แคชใน Linux
มีวิธีบอกเคอร์เนล Linux ให้ใช้หน่วยความจำเปอร์เซ็นต์หนึ่งสำหรับแคชบัฟเฟอร์หรือไม่? ฉันรู้ว่า/proc/sys/vm/drop_cachesสามารถใช้ล้างแคชชั่วคราวได้ แต่มีการตั้งค่าถาวรใด ๆ ที่ป้องกันไม่ให้เพิ่มขึ้นเป็นมากกว่า 50% ของหน่วยความจำหลักหรือไม่ เหตุผลที่ฉันต้องการทำเช่นนี้คือฉันมีเซิร์ฟเวอร์ที่ใช้ Ceph OSD ซึ่งให้บริการข้อมูลจากดิสก์อย่างต่อเนื่องและจัดการเพื่อใช้หน่วยความจำกายภาพทั้งหมดเป็นบัฟเฟอร์แคชภายในไม่กี่ชั่วโมง ในเวลาเดียวกันฉันจำเป็นต้องเรียกใช้แอปพลิเคชันที่จะจัดสรรหน่วยความจำกายภาพจำนวนมาก (หลาย 10s of GB) ตรงกันข้ามกับความเชื่อที่ได้รับความนิยม (ดูคำแนะนำในเกือบทุกคำถามเกี่ยวกับบัฟเฟอร์แคช) การเพิ่มหน่วยความจำโดยอัตโนมัติโดยการทิ้งรายการแคชสะอาดไม่ได้เกิดขึ้นทันที: การเริ่มต้นแอปพลิเคชันของฉันอาจใช้เวลาหนึ่งนาทีเมื่อบัฟเฟอร์แคชเต็ม *) ในขณะที่หลังจากล้างแคช (โดยใช้echo 3 > /proc/sys/vm/drop_caches) แอปพลิเคชันเดียวกันจะเริ่มต้นขึ้นทันที (*) ในช่วงนาทีของเวลานี้เริ่มต้นโปรแกรมจะ faulting ในหน่วยความจำใหม่ แต่ใช้จ่าย 100% ของเวลาใน kernel ตาม VTune pageblock_pfn_to_pageในการทำงานที่เรียกว่า ฟังก์ชั่นนี้ดูเหมือนจะเกี่ยวข้องกับการบีบอัดหน่วยความจำที่จำเป็นในการค้นหาหน้าเว็บขนาดใหญ่ซึ่งทำให้ฉันเชื่อว่าการแตกแฟรกเมนต์เป็นปัญหา

4
ฉันสามารถสร้างอินเตอร์เฟสอีเทอร์เน็ตเสมือนชื่อ eth0 ได้หรือไม่?
ฉันใช้งาน Arch โดยใช้เคอร์เนล 3.10.5-1 ระบบจะใช้พฤตินัยใหม่การตั้งชื่อของอีเธอร์เน็ตอินเตอร์เฟซ ENP * * * * * * * * s และ WLP * ฯลฯ ปัญหานี้เป็นปัญหา แต่เป็นสถาบันการศึกษาของฉันคือการใช้โปรแกรมที่เรียกว่าเมเปิ้ล 17 ระบบออกใบอนุญาตของ Maple นั้นขึ้นอยู่กับอินเตอร์เฟสที่มีชื่อว่า eth0 เพราะจะต้องดึงข้อมูลที่อยู่ MAC ของมันเพื่อตรวจสอบใบอนุญาต มันเป็นวิธีที่ไม่ดี แต่ฉันต้องแก้ไขมัน ซึ่งหมายความว่าฉันจะต้องมีส่วนต่อประสาน eth0 กับที่อยู่ MAC ใด ๆ เลย (เพราะฉันสามารถดึงไฟล์ลิขสิทธิ์ใหม่สำหรับที่อยู่ MAC ใหม่) ที่ไม่จำเป็นต้องทำงาน ในความเป็นจริงมันควรจะลงตลอดเวลา ฉันคิดว่ามีหลายวิธีในการพยายามแก้ไขปัญหานี้ แต่ฉันไม่สามารถค้นหาอะไรเกี่ยวกับความคิดใด ๆ ได้ การสร้างอะแดปเตอร์โดยไม่มีการเชื่อมต่อ การสร้างนามแฝงสำหรับ enp3s0 …

1
ใช้ devtmpfs สำหรับ / dev
ฉันสังเกตเห็นตัวเลือกต่อไปนี้ในเคอร์เนล: CONFIG_DEVTMPFS Device Drivers -> Generic Driver Options -> Maintain devtmpfs to mount at /dev และฉันเห็นว่ามันเปิดใช้งานโดยค่าเริ่มต้นในเคอร์เนลการกระจาย Debian 3.2.0-4-amd64 ฉันพยายามที่จะเข้าใจความแตกต่างของตัวเลือกนี้ โดยตัวเลือกนี้/devจะติดตั้งอยู่ในฐานะที่มีตัวเลือกนี้จะติดตั้งเป็นtmpfs devtmpfsนอกจากนั้นฉันไม่เห็นความแตกต่าง helpไม่ได้ชี้แจงให้กับฉันอย่างใดอย่างหนึ่ง สิ่งนี้จะสร้างอินสแตนซ์ของระบบไฟล์ tmpfs / ramfs ก่อนเวลาบูตเครื่อง ในระบบไฟล์นี้เคอร์เนลไดรเวอร์หลักเก็บรักษาโหนดอุปกรณ์ด้วยชื่อและการอนุญาตเริ่มต้นสำหรับอุปกรณ์ที่ลงทะเบียนทั้งหมดด้วยหมายเลขหลัก / รองที่ได้รับมอบหมาย มันมีไดเรกทอรีทำงานได้อย่างสมบูรณ์ / dev ซึ่งโดยปกติ udev จะทำงานอยู่ด้านบนจัดการสิทธิ์และเพิ่ม symlink ที่มีความหมาย ในสภาพแวดล้อมที่ จำกัด อย่างมากมันอาจให้ฟังก์ชั่น / dev ที่เพียงพอโดยไม่มีความช่วยเหลือเพิ่มเติม นอกจากนี้ยังช่วยให้ระบบกู้ภัยง่ายและจัดการหมายเลขหลัก / รองแบบไดนามิกได้อย่างน่าเชื่อถือ ใครช่วยอธิบายความแตกต่างระหว่างการใช้CONFIG_DEVTMPFSvs มาตรฐาน/dev?

4
จะดาวน์โหลดซอร์สโค้ด Linux Kernel ของรุ่นใดรุ่นหนึ่งได้ที่ไหน
มีทรัพยากรในการดาวน์โหลดที่มารุ่นเคอร์เนลที่เฉพาะเจาะจงหรือไม่ ตัวอย่างเช่นฉันต้องการรับแหล่ง 2.6.36.2 เปรียบเทียบกับแพ็คเกจนี้และดูว่ามีการเปลี่ยนแปลงอะไรบ้าง

4
เมื่อใช้คอมไพล์แฮชแล้วจะรู้ได้อย่างไรว่าเคอร์เนลรีลีสนั้นมีอะไรบ้าง?
สมมติว่าฉันมีปัญหาบางอย่างที่แก้ไขโดยแพทช์ล่าสุดไปยังที่เก็บ Linux git อย่างเป็นทางการ ฉันมีวิธีแก้ไข แต่ฉันต้องการยกเลิกเมื่อมีการเปิดตัวที่มีการแก้ไขของฉัน ฉันรู้ว่าคอมไพล์ที่แน่นอนกระทำกัญชาเช่นf3a1ef9cee4812e2d08c855eb373f0d83433e34c วิธีที่ง่ายที่สุดในการตอบคำถามคืออะไรเคอร์เนลรุ่นใดบ้างที่มีโปรแกรมแก้ไขนี้ คะแนนโบนัสหากไม่ต้องการพื้นที่เก็บข้อมูล git Linux ในพื้นที่ ( LWMอธิบายแนวคิดบางอย่าง แต่สิ่งเหล่านี้จำเป็นต้องใช้ที่เก็บข้อมูลในเครื่อง)

4
จะบอก Linux Kernel> 3.0 ให้เพิกเฉยต่อดิสก์ที่ล้มเหลวได้อย่างไร?
ฉันมีแล็ปท็อปซัมซุง (โครโนส S7) กับหนึ่งดิสก์ SATA ฮาร์ดบนรถบัสata:1ซึ่งจะตรวจพบว่าเป็น/dev/sdaความ 8G SSD บนata:2, /dev/sdbและอุปกรณ์อื่น ๆ ในส่วนที่เหลือของอินเตอร์เฟซ SATA ปัญหาคือดิสก์ SSD นั้น บัดกรีให้กับกระดานหลัก (unmovable) จับ (มันแค่ให้ข้อผิดพลาด I / O สำหรับการดำเนินการใด ๆ ) มันไม่ปรากฏในประวัติ (อาจเป็นเพราะมันเสีย) ตอนนี้ดิสก์นี้: หน่วงเวลาบูตสามถึงห้านาทีพยายามตรวจสอบดิสก์ที่ล้มเหลวซึ่งน่ารำคาญ แต่สิ่งที่น่ารำคาญที่สุดคือระบบไม่สามารถระงับได้เนื่องจาก/dev/sdbความล้มเหลว สังเกตเห็นว่าฉันสามารถอยู่กับความล่าช้าในการบูต --- สิ่งที่ฉันกังวลคือสิ่งที่ดำเนินการต่อ / หยุดชั่วคราว ดังนั้นคำถามคือ:ฉันสามารถบอกเคอร์เนลเพื่อหลีกเลี่ยงการละเอียดอุปกรณ์ใน ata: 2 ได้หรือไม่ ในเคอร์เนลที่เก่ากว่า (<3.0) เมื่อฉันยังสามารถขุดลงไปในแหล่งที่มาได้มีพารามิเตอร์บรรทัดคำสั่งของรูปแบบhdb=ignoreที่จะได้ทำเคล็ดลับ ฉันได้ลองใช้เทคนิคทั้งหมดที่เสนอด้านล่างด้วยudevและlibata:forceพารามิเตอร์เคอร์เนลเพื่อประโยชน์ โดยเฉพาะอย่างยิ่งต่อไปนี้ใช้งานไม่ได้: การเพิ่มลงใน/etc/udev/rules.d/ไฟล์ใดไฟล์หนึ่งต่อไปนี้(ในการประมวลผลก่อนหน้าเช่น00-ignoredisk.rulesหรือในช่วงปลาย99-ignoredisk.rulesหรือในทั้งสองสถานที่) SUBSYSTEMS=="scsi", DRIVERS=="sd", ATTRS{rev}=="SSD ", …

3
ทำไม Debian Linux อนุญาตพื้นที่ที่อยู่เสมือนสูงสุด 128TiB ต่อกระบวนการ แต่เพียงหน่วยความจำฟิสิคัล 64TiB
ฉันเพิ่งอ่านที่นี่ : พื้นที่แอดเดรสเสมือนสูงสุด 128TiB ต่อกระบวนการ (แทน 2GiB) รองรับหน่วยความจำฟิสิคัล 64TiB แทน 4GiB (หรือ 64GiB ที่มีนามสกุล PAE) ทำไมถึงเป็นอย่างนั้น? ฉันหมายถึงการสนับสนุนหน่วยความจำกายภาพถูก จำกัด โดยเคอร์เนลหรือโดยฮาร์ดแวร์ปัจจุบัน ทำไมคุณต้องการพื้นที่หน่วยความจำเสมือนสองเท่ากว่าหน่วยความจำกายภาพที่คุณสามารถระบุได้จริง

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