2 คะแนน โดย GN⁺ 2025-02-21 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • จากการวิเคราะห์เชิงนิติวิทยาศาสตร์ของ s1/s2 ในเทป DMR ได้ประกอบเป็น ระบบ UNIX ที่ใช้งานได้ โดย s1 คือ UNIX INIT DECtape ที่มีเคอร์เนล และ s2 มีไฟล์แจกจ่ายส่วนใหญ่
  • เคอร์เนล s1 เป็น เคอร์เนล UNIX ที่เครื่องอ่านได้ที่เก่าแก่ที่สุด เท่าที่ตรวจพบจนถึงปัจจุบัน อยู่ระหว่าง V1 กับ V2 และสามารถรัน a.out ของทั้ง V1 และ V2 ได้
  • ขนาด user core เพิ่มขึ้นเป็น 16 KiB(8K words) เหมือน V2 แต่ syscall table เหมือนกับเคอร์เนล V1 และ unix-jun72 จึงไม่มี syscall ของ V2 รวมอยู่
  • เงื่อนไขการบูตค่อนข้างจุกจิก มีเพียง PDP-11/20 เอมูเลเตอร์ ของ aap ที่บูตเคอร์เนลสำเร็จ ส่วน SIMH และ Ersatz-11 หยุดก่อนถึง login prompt
  • RF disk image ที่เผยแพร่มีเฉพาะไฟล์จาก s1/s2 และบูตได้บนเอมูเลเตอร์ของ aap โดยจากพฤติกรรมของ init(7) ดูเหมือนว่า /usr เคยอยู่บน RF

UNIX V2 “Beta” ที่กู้คืนจากเทป s1/s2

  • จากการวิเคราะห์เชิงนิติวิทยาศาสตร์ของเทป DMR พบว่าสามารถสร้าง ระบบที่ทำงานได้ จากเทป s1/s2
    • DMR tapes คือชุดเทปที่ถูกนำมาวิเคราะห์
    • s1 tape คือ UNIX INIT DECtape ที่บรรจุเคอร์เนล
    • s2 tape มีไฟล์แจกจ่ายส่วนใหญ่
  • เคอร์เนล s1 เป็น เคอร์เนล UNIX ที่เครื่องอ่านได้ ที่เก่าแก่ที่สุดเท่าที่ตรวจพบจนถึงปัจจุบัน อยู่ในช่วงระหว่าง V1 กับ V2
    • เคอร์เนล unix-jun72 ที่ไม่ได้แก้ไขรองรับเฉพาะ a.out ของ V1
    • เคอร์เนล s1 สามารถรัน a.out ของทั้ง V1 และ V2 ได้โดยตรง
    • ขนาด user core เพิ่มจาก 8 KiB(4K words) เป็น 16 KiB(8K words)
  • syscall table เหมือนกับเคอร์เนล V1 และ unix-jun72
    • ไม่มี syscall ของ V2 รวมอยู่
    • ในแง่ syscall จึงใกล้เคียง V1 แต่มีลักษณะของ V2 ในแง่ขนาด core และการรันไบนารี V2 จึงถือว่าเป็น “V2 beta”
  • ระบบสามารถรัน ed, cc, a.out ได้
    • ในเซสชันตัวอย่าง มีการเขียน คอมไพล์ และรันโปรแกรม hello world!

ข้อจำกัดในการบูตและ RF disk image

  • สภาพแวดล้อมที่บูตได้มีจำกัด
    • มีเพียง PDP-11/20 emulator ของ aap ที่บูตเคอร์เนลสำเร็จ
    • SIMH และ Ersatz-11 หยุดก่อนจะไปถึง login prompt
  • ขั้นตอนติดตั้งดั้งเดิมคือบูตจาก s1 แล้วกู้คืนไฟล์จาก s2
    • เอมูเลเตอร์ของ aap ไม่รองรับ TC11 จึงติดตั้งโดยตรงจากเทป s1/s2 ได้ยาก
  • การประกอบระบบจริงทำด้วยวิธีสร้าง RF disk image แบบอ้อม ๆ
    • แยกไฟล์จาก s1 tape แล้ววางลงใน RF disk เปล่า
    • ติดตั้งเคอร์เนล unix-jun72 แล้วบูตจาก RF บน SIMH
    • แยกไฟล์ที่เหลือจาก s2
    • ในขั้นสุดท้าย ใช้ hex editor แทนที่เคอร์เนล unix-jun72 ด้วยเคอร์เนล s1
  • RF image ที่สร้างขึ้นมีเฉพาะไฟล์ที่มาจาก s1/s2
    • สามารถดาวน์โหลดได้จาก Research-UNIX-V2-Beta
    • มีลิงก์ดาวน์โหลดตรงของ s1s2unix_rf.img
    • image นี้บูตได้บนเอมูเลเตอร์ของ aap แต่บูตไม่ได้บน SIMH
  • โปรแกรม init(7) ไม่ mount RK ไปที่ /usr
    • พฤติกรรมนี้ชี้ว่า /usr น่าจะถูกเก็บอยู่บน RF

1 ความคิดเห็น

 
GN⁺ 2025-02-21
ความคิดเห็นจาก Hacker News
  • นึกถึงมุกที่เคยได้ยินในบรรยายของ Brian Kernighan เรื่องคือ Ken Thompson สร้าง ตัวแก้ไขข้อความ, คอมไพเลอร์ B และโครงร่างสำหรับจัดการไฟล์อินพุต/เอาต์พุต ได้ภายใน 3 สัปดาห์ และสุดท้ายสิ่งนั้นก็กลายเป็น UNIX
    ใจความของมุกคือ ทุกวันนี้เราอาจมีประสิทธิภาพน้อยกว่าสมัยนั้นอยู่นิดหน่อย

    • Ken เป็น โปรแกรมเมอร์ระดับสุดยอด อย่างไม่ต้องสงสัย และถ้าคนแบบนั้นมีเวลาโฟกัส 3 สัปดาห์ ก็ทำอะไรได้มากจริง ๆ
      เท่าที่จำได้ ภรรยาพาลูก ๆ ไปอังกฤษ ทำให้ Ken ทำอะไรก็ได้ตามใจ แน่นอนว่าเขามีประสบการณ์สูงมากอยู่แล้วก่อนจะเขียน UNIX ตัวแรก
      ถ้าเป็นโปรแกรมเมอร์ที่มีโปรเจกต์อยู่ในหัว ก็น่าลองทำดูสักครั้ง ตัดตัวเองออกจากงานและครอบครัวไปอยู่ที่กระท่อมหรือที่คล้าย ๆ กันสัก 3 สัปดาห์ เตรียมหนังสือและเอกสารที่จำเป็น แล้วตัดอินเทอร์เน็ต ถ้าเป็นไปได้ก็ใช้ฟีเจอร์โฟน แล้วดูว่าจะไปได้ไกลแค่ไหน
      แต่ต้องเป็นโปรเจกต์ที่คิดไว้มากพอแล้ว และมีโค้ดเขียนไว้บ้างเล็กน้อยด้วย พอคิดต่อแล้ว โปรเจกต์ระดับล่าง ที่แทบไม่พึ่งพาไลบรารีภายนอกน่าจะเหมาะกับการทดลองแบบนี้ที่สุด ถ้าเป็นโปรเจกต์ที่พึ่งกองไลบรารีของบุคคลที่สาม พอไม่มีอินเทอร์เน็ตแล้วเจอปัญหาก็มักติดขัดง่าย และ Ken ก็เรียกได้ว่าเลือกโปรเจกต์ได้เหมาะ
    • บทสัมภาษณ์อยู่ที่นี่: https://www.youtube.com/watch?v=EY6q5dv_B-o
      เป็นวิดีโอหนึ่งชั่วโมง และ Thompson เล่าเรื่องสนุก ๆ เยอะมาก Kernighan ก็ทำหน้าที่ได้ยอดเยี่ยมในการปล่อยให้ Thompson เป็นคนพูด
    • มุกแบบยุคนี้ก็คือ Ken Thompson ออกแบบ Go ร่วมกับ Rob Pike และ Robert Griesemer ระหว่างรอ C / C++ คอมไพล์
    • สงสัยว่าเหล่านักพัฒนา UNIX รุ่นแรก ๆ ไปถึงระดับผลิตภาพแบบนี้ได้อย่างไร
      อยากรู้ว่าพวกเขาทำงานเหมือนงาน 9 โมงถึง 5 โมง หรือเข้าสู่ โหมดกอบลิน ทิ้งเรื่องอื่น ๆ ในชีวิตไว้ข้างหลังเพื่อทำให้เสร็จกันแน่
    • 80% แรก ของฟีเจอร์ในโปรเจกต์บางทีก็เดินหน้าได้เร็วจริง ๆ โดยเฉพาะเมื่อมันน่าสนใจและมีแรงจูงใจสูง
      แต่ 20% ที่เหลือจะยืดยาวเป็นหางยาว และมักกลายเป็นงานทรมานมหาศาลจนบั่นทอนแรงใจ
  • น่าสนใจจนสป็อกยังต้องทึ่ง อยากลองเรียนวิธีคอมไพล์ PDP-11 emulator บน Mac

    • การคอมไพล์อีมูเลเตอร์ค่อนข้างง่าย ลองดู simh ได้เลย มันพกพาได้ดี จึงน่าจะทำงานได้แทบจะทันที
      จากนั้นลองติดตั้งดิสทริบิวชัน 2.11BSD ก็น่าจะดี เอกสารทำไว้ดี และออกมาหลังจากความวุ่นวายจำนวนมากของ Unix ยุคแรกผ่านพ้นไปแล้ว หลังจากนั้นการเอา RT-11 มาลองเล่นก็สนุกมากเหมือนกัน และจริง ๆ ก็ได้เขียนแอปเล็ก ๆ ไปสองสามตัวด้วย
    • https://opensimh.org/
      ทำงานได้ดีบน Apple Silicon ด้วย
    • ให้ความรู้สึกเหมือนช่วงเวลาที่ใช้เครื่องตรวจโลหะแล้วขุดพบ วัตถุศักดิ์สิทธิ์ทางศาสนา
    • ง่ายเกินไป! เดี๋ยวจะสร้างเองด้วย NAND gate
  • ดีมากจริง ๆ
    นี่เป็นครั้งแรกที่ได้เห็นคนใช้ ed ทำงานจริง
    แล้วก็สงสัยด้วยว่าเคยมีใครบ้างที่ต้องรับมือกับ ed ช่วงนี้ผมต้องเข้าไปในระบบเก่ามากที่ไม่มี vi เลยต้องสร้าง editor เอง ถ้าใครต้องการ editor สำหรับระบบโบราณก็ติดต่อมาได้ มันไม่ได้หรูหรามากนัก
    งานของคนที่สร้างซอฟต์แวร์นี้และนักวิจัยเหล่านี้น่าทึ่งมาก ขอคารวะวิศวกรตัวจริง

    • จำได้ว่าในทศวรรษ 1960 เคยใช้ editor คล้าย ed ผ่าน Teletype ASR-33 บนระบบ time-sharing ของ Honeywell
      จำรายละเอียดไม่ได้มาก แต่ตอนสร้างไฟล์ใหม่เรียกด้วย make ถ้าพิมพ์ make love มันจะพิมพ์ not war ก่อนเข้าสู่ editor
    • แม้ไม่ใช่ ed แต่ได้รับอิทธิพลมาแน่นอน ผมแก่พอที่จะเคยสอบโรงเรียนพิมพ์ดีดด้วย edlin ของ MS-DOS 3.3
      หลังจากนั้นก็ไม่เคยใช้อีก และแม้หลายปีต่อมาจะได้ใช้ Xenix ก็ไม่ได้ใช้ ed เพราะ vi เป็นทางเลือกที่สมเหตุสมผลกว่ามาก
    • เมื่อเดือนสิงหาคม ผมใช้ ed ใน Termux บนมือถือเขียน http://canonical.org/~kragen/sw/dev3/justhash.c
      มีคนบอกว่าแป้นพิมพ์บนหน้าจอของ Android แย่มากสำหรับ vi จนเขาใช้ ed บนมือถือแทน และพอมันก็จริงเลยลองดู บนมือถือ ed แย่กว่า vi เล็กน้อย แต่ทั้งสองแย่กันคนละแบบ
      ถ้าใช้ HeliBoard การพิมพ์คำสั่ง ed บนคีย์บอร์ดง่ายกว่า vi มาก แต่มีอยู่สองสามครั้งที่สับสนกับสถานะของบัฟเฟอร์ ซึ่งถ้าเป็น vi คงไม่งง อาจดีขึ้นได้ถ้าฝึก แต่สุดท้ายก็กลับไปใช้ vi
    • ช่วงกลางยุค 90 ผมมี AT&T 3B2 เครื่องหนึ่ง ซึ่งมีแค่ ed และใช้ผ่านเทอร์มินัล DEC VT-102
      ed ใช้งานได้ก็จริง แต่ตามมาตรฐานปัจจุบันไม่สนุกเลย ถึงอย่างนั้น ถ้าเทียบกับเอาต์พุตของโทรพิมพ์แล้ว การใช้บนหน้าจอคงยอดเยี่ยมมาก
      เพิ่มเติมคือ 3B2 ที่แรงราว 1 MIP สามารถรองรับผู้ใช้พร้อมกันได้ประมาณ 20 คน
    • งานคอนซัลต์ช่วงแรก ๆ งานหนึ่งคือเขียน บทเรียน ed สำหรับระบบ Coherent
      ผมใช้ ed อยู่บ่อย ๆ และจริง ๆ เมื่อวานก็เพิ่งใช้ เพราะต้องแก้ไขอะไรบางอย่างโดยไม่ล้างหน้าจอ
      ก่อนหน้านั้นเคยทำ editor สำหรับภาพการ์ดที่เก็บบนดิสก์ด้วย แต่มันดิบมาก
  • บางครั้งผมชอบแวะดู เมลลิงลิสต์ tuhs การได้เห็นชื่ออย่าง Ken Thompson, Rob Pike รวมถึงชื่ออื่น ๆ ที่ไม่ค่อยเป็นที่รู้จัก แต่เคยมีส่วนร่วมกับ UNIX ยุคแรกและหน้างานคอมพิวติ้งนั้นยอดเยี่ยมมาก

  • เหมือนโบราณคดีซอฟต์แวร์

    • หนึ่งในหลายเหตุผลที่ไม่ชอบยุค SaaS คือเรื่องแบบนี้จะไม่เกิดขึ้นอีกแล้ว ในปี 2075 คงไม่มีใครบูต Notion หรือ Figma เก่าๆ เพื่อการวิจัยหรือเพราะความคิดถึง
      มัน ชั่วคราวและใช้แล้วทิ้ง อย่างสิ้นเชิง เหมือนวัฒนธรรมที่ผลิตและบริโภคบนโซเชียลมีเดีย หรืออีกหลายแง่มุมของวัฒนธรรมอินเทอร์เน็ต ไม่มีประวัติศาสตร์ และไม่มีอนาคต
      SaaS ไม่ได้แค่ปิดกั้นเท่านั้น แต่ในทางปฏิบัติมักถูกผูกไว้กับการติดตั้งเพียงชุดเดียวแบบแทบจะตรงตัว อาจจะเก็บถาวรไว้แล้วบูตที่อื่นได้ก็จริง แต่การทำแบบนั้นในอีกหลายปีต่อมาโดยไม่มีทีมเดิม จะเป็นงานที่ใหญ่กว่าการบูต Unix ปี 1972 บน emulator ของพีซีสมัยใหม่มาก
      Unix นั้นมีคู่มือ และถูกออกแบบมาให้ติดตั้งและรันได้ในสภาพแวดล้อมการแจกจ่ายหลายแบบ ส่วน SaaS ใกล้เคียงกับของผสมปนเปที่มีแต่ผู้เขียนเท่านั้นที่ deploy ได้ ไม่จำเป็นต้องเป็นเพราะตั้งใจ แต่เพราะไม่มีแรงกดดันเชิงวิวัฒนาการที่ทำให้ต้องสร้างมันแบบนั้น
      ภายในมักพันกับ SaaS อื่นๆ ด้วย จนอาจต้องเก็บและกู้คืน สถานะทั้งคลาวด์ ราวกับเป็นคอมพิวเตอร์ส่วนกลางเครื่องเดียวที่ซอฟต์แวร์กรรมสิทธิ์กำลังถูกแก้ไขอยู่กับที่
    • ไม่ได้เจ๋งเท่าที่ฟังดูหรอก
  • มีใครมีเอกสารอ้างอิงไหมว่า permission ของไฟล์พวกนั้นหมายความว่าอะไร? พอเดาได้คร่าวๆ แต่หาแล้วไม่เจอข้อมูลเกี่ยวกับ permission ของ Unix v2
    เอาต์พุต ls ดูคุ้นอยู่ แต่ส่วน sdrwrw เท่านั้นที่ไม่คุ้น

    • ในเธรดเมลลิงลิสต์มีคนลิงก์หน้า manual ที่ดึงออกมาไว้
      https://gitlab.com/segaloco/v1man/-/blob/master/man1/stat.1?...
      ใน sdrwrw คอลัมน์แรกเป็น s หรือ l หมายถึง small หรือ large คอลัมน์ที่สองเป็น d, x, u, - หมายถึงไดเรกทอรี, รันได้, setuid, หรือไม่มี ส่วนที่เหลือคือบิตอ่าน/เขียนของเจ้าของและผู้ที่ไม่ใช่เจ้าของ
  • hello world ขนาด 1328 ไบต์ เนี่ยนะ? บวมขึ้นแล้ว!

    • นึกถึงคอมไพเลอร์สมัยก่อนที่เคยแกล้งใส่บทกวียาวๆ ลงในไบนารีทุกตัว คงเคยได้ยิน magic number กันมาแล้ว แต่นั่นเหมือนมี magic sonnet อยู่ด้วย
      ผมคิดว่าเป็นคอมไพเลอร์ Rust รุ่นแรกๆ แต่หาแหล่งอ้างอิงไม่เจอ อาจจะเป็น Go ก็ได้
      แก้ไข: เจอแล้ว 'rust-lang/rust#13871: "hello world" contains Lovecraft quotes' https://github.com/rust-lang/rust/issues/13871
    • https://github.com/pts/minilibc686 ของผมบน i386 สามารถทำ hello world ด้วย printf ได้ในขนาด ต่ำกว่า 1 KiB ส่วน hello world ด้วย write ต่ำกว่า 170 ไบต์
    • ได้เวลาจูน Unix ของผมแล้ว!
  • เจ๋งดี เข้าไปในพอร์ทัลเวลานั้นแล้วไปอยู่ใน โลกคู่ขนาน ได้ไหม?

    • หมายถึงยุคที่ใช้น้ำมันเบนซินผสมตะกั่ว ควันบุหรี่เป็นเรื่องปกติทุกที่ และใยหินถูกใช้กับทุกสิ่งที่นึกออกน่ะหรือ? เป็นทศวรรษที่น่าหลงใหลก็จริง แต่คุณภาพชีวิตน่าจะดีขึ้นอย่างมหาศาลหลังจากนั้น
    • ทำได้อยู่ ซื้อ VT terminal ของจริงสักเครื่องก็พอ เช่น https://www.ebay.com/itm/176698465415?_skw=vt+terminal&itmme...
      หา adapter มาเชื่อมกับคอมพิวเตอร์ แล้วรัน *nix ที่ต้องการบน simh แนะนำ https://jstn.tumblr.com/post/8692501831 เป็นเอกสารอ้างอิง
      พอทำให้ใช้งานได้แล้ว ก็ผลักเครื่อง host ไปไว้หลังโต๊ะหรือที่ที่มองไม่เห็น เท่านี้ก็ใช้ชีวิตเหมือนปี 1980 ได้
  • ถ้าลองกู้คืนเทป RF จะเห็น พื้นที่บัฟเฟอร์ ที่ DOS หรือไฟล์ .iso ไม่ได้ใช้ แม้ดูแค่ไฟล์ข้อความธรรมดาก็ตาม
    แม้แต่ในดิสทริบิวชัน 2.11 BSD ก็ยังต้องติดตั้งตัวจัดเรียงหน้าต่างแบบ tile พื้นฐานและ window manager ลงบน OS เนทีฟ ดังนั้นก็เลยต้องใช้ KDE หรือ X11 window manager อะไรทำนองนั้น