Ubuntu สร้างความเสียหายให้กับไดรฟ์ USB หรือไม่


74

เมื่อใดก็ตามที่ฉันเลิกเมานท์ไดรฟ์ USB ด้วย Nautilus และเสียบเข้ากับเครื่อง Windows ฉันจะได้รับคำเตือนว่าจำเป็นต้องซ่อมแซมไดรฟ์


(ข้อความเดียวกันเหมือนในภาพหน้าจอนี้)

เป็นเวลากว่า 10 ปีที่ทำงานกับ windows ฉันไม่เคยมีไดรฟ์ USB ที่เสียหายหรือเสียหาย แต่ในช่วงสองปีที่ผ่านมาไดรฟ์ USB สามตัวของฉันไม่ทำงานดังนั้นฉันจึงไม่สามารถพิสูจน์ได้ แต่เห็นได้ชัดว่า .

เพื่อนบอกฉันว่าฉันสามารถป้องกันความเสียหายดังกล่าวได้โดยใช้ udisks และ sync แต่ฉันหวังว่านี่ไม่ใช่วิธีที่จะทำได้การติดตั้งไดรฟ์ด้วยคำสั่งเชลล์ในปี 2559


1
ฉันจะลองทำการทดสอบสองครั้งเพื่อหาสาเหตุที่แท้จริง: 1) คุณสามารถป้องกันข้อผิดพลาดได้หรือไม่ถ้าคุณโทรหาsyncเชลล์ก่อนที่จะทำการ unmount ใน Ubuntu? (ไม่น่าเป็นไปได้) 2) ลองเขียนไฟล์ครั้งละหนึ่งไฟล์เลิกเมานต์แล้วตรวจสอบว่าไฟล์นี้สามารถอ่านได้บน windows และเนื้อหานั้นทันสมัยหรือไม่แม้จะเห็นคำเตือนนี้ 2) หมายความว่าปัญหาน่าจะเกิดกับ Windows ที่พูดจู้จี้จุกจิกว่า "เราพบข้อผิดพลาด" เกี่ยวกับปัญหาที่ไม่ใช่ของจริง
arielf

2
อย่าเชื่อคนอื่นเมื่อพวกเขาบอกคุณว่า Linux จะไม่ทำให้ฮาร์ดไดรฟ์ของคุณเสียหาย มันสามารถ ใน Ubuntu 15 เพียงแค่คัดลอกไฟล์ตามด้วยการรีบูตอย่างสม่ำเสมอทำให้ฉันมีข้อผิดพลาดใน chkdsk เช่นนี้:Stage 2: Examining file name linkage ... Found corrupt basic file structure for "<0x32,0x1e63>" ... queued for offline repair. Found an unneeded link ($FILE_NAME: ???) in index "$I30" of directory "\ <0x5,0x5>" ... queued for offline repair. Found missing Index entry for file "<0x32,0x1e63>" from index "\??\D:\found.000" of directory "$I30" ... queued for offline repair.
Mehrdad

1
^ ... ไม่ต้องพูดถึงนี่ไม่ได้อยู่ในแฟลชไดรฟ์มันเป็น SSD หลักของฉัน SSD ใหม่ล่าสุด และมันก็เกิดขึ้นทุกครั้งที่ฉันไม่ได้เพิ่ม I / O พิเศษหลังจากคัดลอกไฟล์ ในคำอื่น ๆ การใช้งานลินุกซ์ของ NTFS จะเสียเท่าที่เป็นแฟน ๆ ของมันจะต้องการที่จะปฏิเสธมันและหลีกเลี่ยงการเชื่อ
Mehrdad

12
นี่เป็นระบบไฟล์ NTFS หรือไม่ FAT32? คุณทำซ้ำได้อย่างน่าเชื่อถือ
Braiam

2
อะไรที่ไม่ดีให้กับการติดตั้งไดรฟ์ที่มีคำสั่งเชลล์ ? ¯\(o_o)/¯
ulidtko

คำตอบ:


104

ไม่ต้องกังวล Ubuntu ไม่ได้สร้างความเสียหายให้กับไดรฟ์ USB ของคุณ แต่เราจะไม่ใช้แฟล็กบิตที่บันทึกไว้อย่างไม่ดีของระบบไฟล์ FAT32, FAT16 หรือ NTFS ใน Windows แฟล็กเหล่านี้บ่งชี้ว่าระบบไฟล์อาจเสียหายเมื่อเราไม่ได้ถอดเมานต์ไดรฟ์อย่างถูกต้องหรือเกิดข้อผิดพลาด I / O ขึ้น

บิตเหล่านั้นอยู่ในรายการที่สงวนไว้ของตารางพาร์ติชัน FAT ตามรายงานของ Microsoft ภายในปี 2004วัตถุประสงค์ของบิตเหล่านี้คือ:

  • ClnShutBitMask:
    ถ้าบิตเป็น 1 ปริมาตรจะ“ สะอาด” สามารถติดตั้งไดรฟ์ข้อมูลเพื่อเข้าถึงได้ ถ้าบิตเป็น 0 ปริมาตร“ สกปรก” แสดงว่าไดรเวอร์ระบบไฟล์ FAT ไม่สามารถยกเลิกการปรับระดับเสียงได้อย่างถูกต้อง (ระหว่างการเมานต์ก่อนหน้านี้) ควรสแกนเนื้อหาปริมาณสำหรับความเสียหายใด ๆ กับเมตาดาต้าระบบไฟล์
  • HrdErrBitMask:
    ถ้าบิตนี้เป็น 1 จะไม่พบข้อผิดพลาดในการอ่าน / เขียนดิสก์ หากบิตนี้เป็น 0 การใช้งานไดรเวอร์ระบบไฟล์จะพบข้อผิดพลาดของดิสก์ I / O บนโวลุ่มในครั้งล่าสุดที่ถูกเมาท์ซึ่งเป็นตัวบ่งชี้ว่าบางเซกเตอร์อาจจะแย่ไป ควรสแกนเนื้อหาที่เป็นโวลุ่มด้วยยูทิลิตี้ซ่อมแซมดิสก์ที่ทำการวิเคราะห์พื้นผิวเพื่อหาเซกเตอร์เสียใหม่

มีการพูดคุยกับนักพัฒนาระบบไฟล์เคอร์เนลเมื่อหลายปีก่อนว่าจะเอาชนะเรื่องนี้อย่างไร แต่ฉันไม่สามารถติดตามผลได้ เห็นได้ชัดว่ามันไม่ได้ทำให้มันกลายเป็นเมล็ดที่ผ่านมา

เนื่องจากมีการตั้งค่าสถานะบิตเพียงเล็กน้อย แต่โดยทั่วไปข้อมูลของเราควรอยู่ในสภาพที่สมบูรณ์เราสามารถเพิกเฉยต่อคำเตือนปัญหา Windows บนไดรฟ์ที่เราเคยใช้ใน Ubuntu ก่อนหน้านี้


3
ฉันไม่เคยมีข้อผิดพลาดเหล่านี้ในไดรฟ์เหล่านี้เมื่อฉันยกเลิกการเมานท์ไดรฟ์อย่างปลอดภัย - คุณแน่ใจหรือไม่ว่าการสนับสนุนบิตเหล่านี้หายไป?
โธมัสวอร์ด

5
@ThomasW บิตเหล่านี้ค่อนข้างคลุมเครือ แต่บางครั้งฉันมีข้อผิดพลาดเหล่านี้กับไดรฟ์ USB ที่จัดรูปแบบ Ubuntu ในที่ทำงาน Windows 7 ของฉันจนถึงตอนนี้ฉันยังไม่เห็นรูปแบบที่เป็นประโยชน์ใด ๆ สิ่งเดียวที่ฉันสามารถพูดได้ก็คือฉันเลิกเมานท์ / ถอดไดรฟ์อย่างถูกต้องเสมอ การทดสอบไม่ใช่เรื่องง่ายเพราะที่บ้านไม่มี Windows ที่ทำงานไม่มี Ubuntu
Takkat

พาดหัวเป็นเท็จ
MatthewRock

@ MatthewRock: ดีกว่าไหม
Takkat

ใช่มันจะดีกว่า
MatthewRock

74

นี่เป็นปัญหาส่วนใหญ่กับ Windows มันคิดว่ามันเป็นระบบปฏิบัติการเดียวในโลกและทำหน้าที่ตรวจจับสิ่งที่ไม่เข้าใจ

เพียงเพราะ Windows บอกว่าคุณต้องซ่อมแซมไดรฟ์ไม่ได้ทำให้มันเป็นจริง

ไดรฟ์ใด ๆ ของฉันที่ใช้กับ Ubuntu ได้รับข้อความนี้จาก Windows ฉันแค่บอกว่าnoมันใช้งานได้ดีกับ Windows

ในระยะสั้นไม่มีอะไรผิดปกติกับไดรฟ์เป็นเพียงมีบางสิ่งในนั้นที่ Windows ไม่เข้าใจและการตอบสนองของมันจะทำลายมัน

ไม่repairไดรฟ์มันจะจัดรูปแบบโดยไม่บอกคุณและคุณจะสูญเสียข้อมูลทั้งหมดในไดรฟ์


40
1. การซ่อมแซมไม่ได้ฟอร์แมตการซ่อมแซมจะบันทึกข้อมูลที่จัดสรรไปยังโฟลเดอร์ สำหรับฉันดูเหมือนว่า Ubuntu จะเขียนกระบวนการไม่ถูกต้อง
jan6352781

10
2. ไดรฟ์ USB ส่วนใหญ่มีรูปแบบ FAT32 ซึ่งพัฒนาโดย Microsoft ดังนั้นทำไม Windows จึงควรเป็นระบบเดียวที่ "ไม่เข้าใจ"
jan6352781

17
-1 เพราะมันไม่มีมูลความจริงและผิด ฉันเคยเห็น Ubuntu 15 ทำให้ไดรฟ์ข้อมูล NTFS ของฉันเสียหาย (ใช่ฉันรู้ว่าคุณจะไม่เชื่อฉัน แต่ฉันเห็นด้วยตาของฉันเองและทำซ้ำอย่างน้อย 3-4 ครั้งติดต่อกันก่อนที่จะเชื่อในตัวเอง) และมัน เกิดขึ้นแม้ว่าฉันจะซิงค์ข้อมูลบัฟเฟอร์ทั้งหมดอย่างชัดเจน ฉันเห็นด้วยกับ @ jan6352781 ว่าฉันสงสัยด้วยเช่นกันว่าเนื่องจากกระบวนการเขียนไม่เสร็จและฉันก็ยังทำอยู่ ในความเป็นจริงถ้าคุณรอนานพอหลังจากเขียนก่อนรีบูต Ubuntu มันทำงานได้ดี เราไม่มีเหตุผลที่จะเชื่อว่า Windows เป็นความผิดที่นี่และทุกเหตุผลที่เชื่อว่า Ubuntu คือ
Mehrdad

7
การซ่อมแซมไดรฟ์ไม่ได้ทำการฟอร์แมต มันทำงาน chkdsk มันไม่ฟอร์แมตดิสก์มากกว่า fsck ฟอร์แมตดิสก์
Geek

16
คำตอบทั้งหมดนี้เป็นเพียงเสียงโวยวายของ Windows ที่มีหลักฐานเป็นศูนย์ (ยกเว้นประวัติ)
Millie Smith

18

ตามที่คุณแนะนำไว้ในความคิดเห็นสิ่งนี้อาจเกี่ยวข้องกับอูบันตูไม่เสร็จสิ้นกระบวนการเขียนก่อนที่คุณจะถอดแฟลชไดรฟ์ออก Ubuntu เขียนไฟล์ไปยัง RAM ในระหว่างกระบวนการคัดลอกและเขียนไฟล์เหล่านี้จากบัฟเฟอร์ไปยังไดรฟ์ USB ในพื้นหลังหลังจากปิดกล่องโต้ตอบการคัดลอก มีคำตอบอื่นที่แนะนำว่านี่เป็นปัญหาโดยเฉพาะอย่างยิ่งสำหรับเครื่องที่มีหน่วยความจำขนาดใหญ่ แต่มีแนวโน้มว่าคุณจะลบไดรฟ์ออกก่อนที่การเขียนเบื้องหลังจะเสร็จสิ้น เมื่อคุณนำไดรฟ์ออกจะเป็นการบังคับให้บัฟเฟอร์ถูกเขียนลงดิสก์ แต่เป็นการยากที่จะบอกเมื่อการเขียนเสร็จสมบูรณ์จริง ๆ มีป๊อปอัปในเวอร์ชันที่ใหม่กว่า (15.10 สำหรับบางที่อาจเป็น 15.04) โดยมีจุดประสงค์เพื่อแก้ไขปัญหานี้ - การแจ้งเตือนสีม่วงจะปรากฏขึ้นหลังจากเวลา (สั้นโดยทั่วไป) ที่บอกบางสิ่งตามแนวของ "[ไดรฟ์] การเขียนเสร็จสิ้น

นี่อาจเป็นเหตุผลที่เพื่อนของคุณแนะนำให้ซิงค์ การรันsyncในเทอร์มินัลจะบังคับให้บัฟเฟอร์ข้อมูลทั้งหมดถูกเขียนลงดิสก์และควรกลับมาเพียงครั้งเดียวเมื่อการเขียนเสร็จสมบูรณ์ (ดูคำตอบนี้ ) ดูคำตอบนี้สำหรับยูทิลิตี้ที่จะช่วยคุณพิจารณาว่านี่เป็นปัญหาหรือไม่


ฉันได้รับป๊อปอัปใน 14.04 (Linux Mint KDE edition) ทุกครั้งที่ฉันเปิดไดรฟ์ USB และยังมีเครื่อง Kubuntu 15.10 เครื่อง ไม่แน่ใจเกี่ยวกับ 15.04 แต่ฉันจะคิดอย่างนั้น
Jon Bentley

1
GUI ไม่ได้ทำให้มันชัดเจน ฉันใช้ejectเทอร์มินัลมาเป็นเวลานานและมีความล่าช้าที่เห็นได้ชัดก่อนที่จะส่งคืนหากฉันเพิ่งคัดลอกไฟล์ขนาดใหญ่
Izkata

1
@Izkata บน vanilla Ubuntu 14.04 เมื่อคุณคลิกที่ปุ่ม eject ใน Nautilus มันจะหายไปทันที แตกต่างจากไดรฟ์ภายในแม้ว่าไดรฟ์ USB จะหายไปจากแถบด้านข้างอย่างสมบูรณ์เมื่อยกเลิกการต่อเชื่อม (เช่นการเขียนเสร็จสิ้น) ดังนั้นจึงมีระยะเวลาที่ไดรฟ์ USB กำลังเขียนอยู่ แต่ดูเหมือนว่าจะถูกเปิดออก
alex_d

5

ฉันเห็นไดรฟ์ usb จำนวนมากโดยเฉพาะอย่างยิ่งแฟลชการ์ด (SD ฯลฯ ) ในอะแดปเตอร์ USB พร้อมระบบไฟล์ FAT (แทบทุกไดรฟ์ USB มาในฟอร์แมตด้วย FAT32) ได้รับความเสียหายขณะใช้งาน Ubuntu และ Ubuntu มันเกือบจะเป็นเหตุการณ์ปกติทุก ๆ สองสามเดือนของการใช้ชีวิตประจำวัน

ถ้ามันเป็นปัญหาของฮาร์ดแวร์การฟอร์แมตพาร์ติชั่นด้วย ext3 (หรือ 4) ก็ไม่ได้ช่วยอะไร แต่ ext3 / 4 ทำให้ระบบไฟล์เป็นแบบกระสุนจริง (ext2 ยังได้รับความเสียหายในช่วงสองสามเดือนที่ฉันลองใช้มันควรจะมีการเขียนน้อยลงดังนั้นอายุการใช้งานที่ยาวนานกว่าสำหรับแฟลชไดรฟ์

ดังนั้น Ubuntu ไม่ควรสร้างความเสียหายให้กับไดรฟ์ USB ด้วยตัวเอง แต่ฉันก็ยังไม่ไว้ใจ 100% กับระบบไฟล์ FAT

ฉันคิดว่าความเสียหายของระบบไฟล์สามารถหลีกเลี่ยงได้โดย:

  • อย่าเพิ่งถอดไดรฟ์ USB จนกว่าจะถูกถอดออก / umount/ นำออก แม้ว่าขณะนี้ไดรฟ์ไม่ได้เขียนอะไรเลย (หากมีแสงไฟก็ไม่กระพริบ) และแม้ว่าคุณจะทำsyncระบบแฟ้มแล้วก็ตาม
  • รออย่างน้อยสองสามวินาทีหลังจากumount/ นำออกก่อนที่จะถอดปลั๊ก ดูเหมือนว่าแม้หลังจากumountไฟกิจกรรมของไดรฟ์บางครั้งอาจกระพริบอยู่ครู่หนึ่ง ผู้ใช้คนอื่นเช่นผู้ชายคนนี้บอกว่ามันใช้เวลาถึงหนึ่งนาที
  • อย่าพึ่งเพียงแค่syncอย่างเดียวเช่นผู้ชายคนนี้ที่ได้รับความเสียหายไฟล์

ลิงก์ที่เกี่ยวข้อง (โดยทั่วไป):


3

สิ่งนี้มีส่วนเกี่ยวข้องกับระบบปฏิบัติการเล็กน้อย นี่เป็นข้อผิดพลาดของระบบไฟล์ซึ่งโดยส่วนใหญ่แล้วบ่งชี้ว่าไดร์ฟนั้นไม่ได้ถูกถอดออกอย่างถูกต้อง (ข้อผิดพลาดของผู้ใช้) มันไม่ได้บ่งบอกถึงความเสียหายอย่างแน่นอน แต่เป็นเพียงความเป็นไปได้ที่จะเกิดความเสียหาย หากมีอยู่ความเสียหายมักจะ จำกัด อยู่ที่ไฟล์ที่เขียนล่าสุด คำสั่ง "ซ่อมแซม" ของ Windows ในกรณีนี้สแกนไดรฟ์สำหรับส่วนที่ทำเครื่องหมายว่า "ครอบครอง" แต่ไม่ได้กำหนดให้กับไฟล์ใด ๆ จากนั้นกำหนดเรื่องที่สนใจและชิ้นส่วนนี้ให้กับไฟล์ใหม่

ข้อผิดพลาดนี้สามารถสร้างขึ้นได้บน Windows หากคุณดึงไดรฟ์ออกระหว่างการเขียนโดยไม่ต้องถอนติดตั้งก่อน (ใน Windows "Eject" จะทำการ unmount)

การเห็นข้อความนี้หมายความว่าไดรฟ์ไม่ได้ถูกถอดออกอย่างถูกต้อง

คุณสามารถตรวจสอบด้วยตัวคุณเองหากระบบไฟล์เกิดความเสียหายจริง ๆ หรือเป็นเพียงการบวกผิด ๆ : ถ้าหลังจากเรียกใช้ "ซ่อมแซม" โฟลเดอร์ใหม่ชื่อ "found000" ปรากฏขึ้นพร้อมกับไฟล์บางไฟล์หมายความว่ามีการเขียนที่ยังไม่เสร็จ ถูกขัดจังหวะ ข้อมูลบางส่วนของคุณสูญหายและเป็นข้อกังวล


2

ฉันใช้อูบุนตูและ windows เป็นเวลาหลายปีกับดูอัลบูตและเมื่อฉันยกเลิกการต่อเชื่อมไดรฟ์ในวิธีที่ถูกต้องใน windows มักจะแสดงข้อความข้อผิดพลาด แต่ไม่เคยมีข้อผิดพลาดในไดรฟ์ usb ของฉัน ใน W10 คุณสามารถปิดข้อความแสดงข้อผิดพลาดนี้ได้

ป้อนคำอธิบายรูปภาพที่นี่


1

แทบจะไม่มีวิธีใดที่ระบบปฏิบัติการใด ๆ จะสามารถสร้างความเสียหายให้กับไดรฟ์ USB ได้หลังจากฟอร์แมตปกติ (ไม่ใช่อย่างรวดเร็ว) ไม่ควรมีร่องรอยเหลืออยู่เลยว่าเคยใช้กับ Ubuntu มาก่อน

ตรวจสอบไดรฟ์ด้วย "H2testw" หรือ "USB Flash Drive Tester" - เซ็กเตอร์ที่ไม่ดีอาจเป็นสาเหตุของข้อผิดพลาดแปลก ๆ มากมาย


4
OP ใช้คำพูดไม่ดี แต่หมายถึง "ระบบไฟล์" ไม่ใช่ "flash ROM"
wizzwizz4

ปรากฏว่า OP อาจหมายถึงไดรฟ์ USB ที่เกิดขึ้นจริงความเสียหายที่พวกเขากล่าวว่า"ผมไม่เคยมีไดรฟ์ USB เสียหายหรือชำรุด แต่ในช่วงสองปีที่ผ่านมาที่สามของไดรฟ์ USB ของฉันกลายเป็นโมฆะ "ถ้าพวกเขามีความหมายเพียงแค่ความเสียหายที่พวกเขาอาจจะได้กล่าวว่าความเสียหาย แทน "inoperative" @ wizzwizz4
Xen2050

3
@ Xen2050 แต่คำตอบอื่น ๆ ทั้งหมดและกระทู้ความคิดเห็นรวมถึง jan6352781 บ่งบอกถึงหรือระบุว่าระบบไฟล์เป็นปัญหาและ "อุปกรณ์ที่ใช้งานไม่ได้" เป็นการคาดการณ์ของพวกเขาที่ทำงานไม่ถูกต้อง
wizzwizz4

@ wizzwizz4 ในคำตอบของ Mark Kirby ความคิดเห็น OP "3. ปีสุดท้ายที่ฉันข้ามการซ่อมแซมเกือบทุกวันจบลงด้วยไฟล์ที่เสียหายและไดรฟ์ USB "ฉันเดาว่ามันมาจากไดรฟ์เก่าที่อาจล้มเหลว windows หรือไม่ แต่พวกเขายังกล่าวด้วยว่า
Xen2050

@ Xen2050 หรือ OP หมายถึงข้อความเก่า "อุปกรณ์เสียหายคุณต้องการให้ Windows แก้ไขหรือไม่" (ถอดความ) ซึ่งบางครั้งก็เกิดขึ้นเมื่อ dll ที่แตกต่างกันจัดการกับปัญหา (ผมเคยมีมันปรากฏตัวเองแม้ว่าผมไม่แน่ใจว่าประโยคสุดท้ายที่ถูกต้อง.)
wizzwizz4

1

ฉันไม่สามารถบอกได้ว่าไดรฟ์ "เสียหาย" อาจเป็นหรือไม่ก็ได้ แต่ในฐานะคนที่สามารถพูดได้เหมือนกัน: "เป็นเวลากว่า 10 ปีที่ทำงานกับ windows ... " ฉันสามารถบอกคุณได้ว่าถ้าคุณใช้ Windows 10 ซึ่งอาจเป็นสาเหตุของปัญหาใหม่ของคุณ ฉันพบปัญหาใหม่ในวันแรกของฉันวันที่ 10: ใน 10 ฐานข้อมูลถูกสร้างขึ้นสำหรับไดรฟ์ภายนอก (อาจเป็นฐานข้อมูลดรรชนีที่ฉันจำไม่ได้) หากฐานข้อมูลนั้นไม่ตรงกับไดรฟ์ระบบจะแจ้งให้คุณทราบว่าไดรฟ์ของคุณเสียหายบางครั้งคุณสามารถเพิกเฉยต่อคำเตือนนี้และบางครั้งคุณไม่สามารถทำได้ (ดูที่เรื่องเล็ก ๆ น้อย) การรัน "ซ่อมแซม" จะแก้ไขฐานข้อมูล

เรื่องเล็ก ๆ น้อย:

ฉันจำไม่ได้ว่าอยู่ที่ไหนฉันพบข้อมูลนี้ แต่ฉันพบเมื่อฉันย้ายโฟลเดอร์เพลง มันบ่นว่าไดรฟ์เสียหายแทนที่จะเพียงแค่บ่นเกี่ยวกับโฟลเดอร์ที่กำลังมองหาที่ไม่มีอยู่อีกต่อไป ก่อนที่ฉันจะซ่อมแซมตำแหน่งใหม่ที่ปรากฏบน Ubuntu และตำแหน่งเก่าใน Windows 10 ... แต่ไฟล์ทั้งหมดไม่สามารถเปิดได้ในวันที่ 10 หลังจากฉันซ่อมแซมตำแหน่งใหม่ของโฟลเดอร์ Music ปรากฏใน Windows โฟลเดอร์เก่า หายไปและทำงานบน Windows อีกครั้ง

การวิ่งsyncก็ไม่ใช่ความคิดที่เลว

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