การฟื้นคืนชีพของ UNIX V2 "Beta" ปี 1972
(tuhs.org)- จากการวิเคราะห์เชิงนิติวิทยาศาสตร์ของ 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 ความคิดเห็น
ความคิดเห็นจาก Hacker News
นึกถึงมุกที่เคยได้ยินในบรรยายของ Brian Kernighan เรื่องคือ Ken Thompson สร้าง ตัวแก้ไขข้อความ, คอมไพเลอร์ B และโครงร่างสำหรับจัดการไฟล์อินพุต/เอาต์พุต ได้ภายใน 3 สัปดาห์ และสุดท้ายสิ่งนั้นก็กลายเป็น UNIX
ใจความของมุกคือ ทุกวันนี้เราอาจมีประสิทธิภาพน้อยกว่าสมัยนั้นอยู่นิดหน่อย
เท่าที่จำได้ ภรรยาพาลูก ๆ ไปอังกฤษ ทำให้ Ken ทำอะไรก็ได้ตามใจ แน่นอนว่าเขามีประสบการณ์สูงมากอยู่แล้วก่อนจะเขียน UNIX ตัวแรก
ถ้าเป็นโปรแกรมเมอร์ที่มีโปรเจกต์อยู่ในหัว ก็น่าลองทำดูสักครั้ง ตัดตัวเองออกจากงานและครอบครัวไปอยู่ที่กระท่อมหรือที่คล้าย ๆ กันสัก 3 สัปดาห์ เตรียมหนังสือและเอกสารที่จำเป็น แล้วตัดอินเทอร์เน็ต ถ้าเป็นไปได้ก็ใช้ฟีเจอร์โฟน แล้วดูว่าจะไปได้ไกลแค่ไหน
แต่ต้องเป็นโปรเจกต์ที่คิดไว้มากพอแล้ว และมีโค้ดเขียนไว้บ้างเล็กน้อยด้วย พอคิดต่อแล้ว โปรเจกต์ระดับล่าง ที่แทบไม่พึ่งพาไลบรารีภายนอกน่าจะเหมาะกับการทดลองแบบนี้ที่สุด ถ้าเป็นโปรเจกต์ที่พึ่งกองไลบรารีของบุคคลที่สาม พอไม่มีอินเทอร์เน็ตแล้วเจอปัญหาก็มักติดขัดง่าย และ Ken ก็เรียกได้ว่าเลือกโปรเจกต์ได้เหมาะ
เป็นวิดีโอหนึ่งชั่วโมง และ Thompson เล่าเรื่องสนุก ๆ เยอะมาก Kernighan ก็ทำหน้าที่ได้ยอดเยี่ยมในการปล่อยให้ Thompson เป็นคนพูด
อยากรู้ว่าพวกเขาทำงานเหมือนงาน 9 โมงถึง 5 โมง หรือเข้าสู่ โหมดกอบลิน ทิ้งเรื่องอื่น ๆ ในชีวิตไว้ข้างหลังเพื่อทำให้เสร็จกันแน่
แต่ 20% ที่เหลือจะยืดยาวเป็นหางยาว และมักกลายเป็นงานทรมานมหาศาลจนบั่นทอนแรงใจ
น่าสนใจจนสป็อกยังต้องทึ่ง อยากลองเรียนวิธีคอมไพล์ PDP-11 emulator บน Mac
จากนั้นลองติดตั้งดิสทริบิวชัน 2.11BSD ก็น่าจะดี เอกสารทำไว้ดี และออกมาหลังจากความวุ่นวายจำนวนมากของ Unix ยุคแรกผ่านพ้นไปแล้ว หลังจากนั้นการเอา RT-11 มาลองเล่นก็สนุกมากเหมือนกัน และจริง ๆ ก็ได้เขียนแอปเล็ก ๆ ไปสองสามตัวด้วย
ทำงานได้ดีบน Apple Silicon ด้วย
ดีมากจริง ๆ
นี่เป็นครั้งแรกที่ได้เห็นคนใช้ ed ทำงานจริง
แล้วก็สงสัยด้วยว่าเคยมีใครบ้างที่ต้องรับมือกับ ed ช่วงนี้ผมต้องเข้าไปในระบบเก่ามากที่ไม่มี vi เลยต้องสร้าง editor เอง ถ้าใครต้องการ editor สำหรับระบบโบราณก็ติดต่อมาได้ มันไม่ได้หรูหรามากนัก
งานของคนที่สร้างซอฟต์แวร์นี้และนักวิจัยเหล่านี้น่าทึ่งมาก ขอคารวะวิศวกรตัวจริง
จำรายละเอียดไม่ได้มาก แต่ตอนสร้างไฟล์ใหม่เรียกด้วย
makeถ้าพิมพ์make loveมันจะพิมพ์not warก่อนเข้าสู่ editorหลังจากนั้นก็ไม่เคยใช้อีก และแม้หลายปีต่อมาจะได้ใช้ Xenix ก็ไม่ได้ใช้ ed เพราะ vi เป็นทางเลือกที่สมเหตุสมผลกว่ามาก
มีคนบอกว่าแป้นพิมพ์บนหน้าจอของ Android แย่มากสำหรับ vi จนเขาใช้ ed บนมือถือแทน และพอมันก็จริงเลยลองดู บนมือถือ ed แย่กว่า vi เล็กน้อย แต่ทั้งสองแย่กันคนละแบบ
ถ้าใช้ HeliBoard การพิมพ์คำสั่ง ed บนคีย์บอร์ดง่ายกว่า vi มาก แต่มีอยู่สองสามครั้งที่สับสนกับสถานะของบัฟเฟอร์ ซึ่งถ้าเป็น vi คงไม่งง อาจดีขึ้นได้ถ้าฝึก แต่สุดท้ายก็กลับไปใช้ vi
ed ใช้งานได้ก็จริง แต่ตามมาตรฐานปัจจุบันไม่สนุกเลย ถึงอย่างนั้น ถ้าเทียบกับเอาต์พุตของโทรพิมพ์แล้ว การใช้บนหน้าจอคงยอดเยี่ยมมาก
เพิ่มเติมคือ 3B2 ที่แรงราว 1 MIP สามารถรองรับผู้ใช้พร้อมกันได้ประมาณ 20 คน
ผมใช้ ed อยู่บ่อย ๆ และจริง ๆ เมื่อวานก็เพิ่งใช้ เพราะต้องแก้ไขอะไรบางอย่างโดยไม่ล้างหน้าจอ
ก่อนหน้านั้นเคยทำ editor สำหรับภาพการ์ดที่เก็บบนดิสก์ด้วย แต่มันดิบมาก
บางครั้งผมชอบแวะดู เมลลิงลิสต์ tuhs การได้เห็นชื่ออย่าง Ken Thompson, Rob Pike รวมถึงชื่ออื่น ๆ ที่ไม่ค่อยเป็นที่รู้จัก แต่เคยมีส่วนร่วมกับ UNIX ยุคแรกและหน้างานคอมพิวติ้งนั้นยอดเยี่ยมมาก
เหมือนโบราณคดีซอฟต์แวร์
มัน ชั่วคราวและใช้แล้วทิ้ง อย่างสิ้นเชิง เหมือนวัฒนธรรมที่ผลิตและบริโภคบนโซเชียลมีเดีย หรืออีกหลายแง่มุมของวัฒนธรรมอินเทอร์เน็ต ไม่มีประวัติศาสตร์ และไม่มีอนาคต
SaaS ไม่ได้แค่ปิดกั้นเท่านั้น แต่ในทางปฏิบัติมักถูกผูกไว้กับการติดตั้งเพียงชุดเดียวแบบแทบจะตรงตัว อาจจะเก็บถาวรไว้แล้วบูตที่อื่นได้ก็จริง แต่การทำแบบนั้นในอีกหลายปีต่อมาโดยไม่มีทีมเดิม จะเป็นงานที่ใหญ่กว่าการบูต Unix ปี 1972 บน emulator ของพีซีสมัยใหม่มาก
Unix นั้นมีคู่มือ และถูกออกแบบมาให้ติดตั้งและรันได้ในสภาพแวดล้อมการแจกจ่ายหลายแบบ ส่วน SaaS ใกล้เคียงกับของผสมปนเปที่มีแต่ผู้เขียนเท่านั้นที่ deploy ได้ ไม่จำเป็นต้องเป็นเพราะตั้งใจ แต่เพราะไม่มีแรงกดดันเชิงวิวัฒนาการที่ทำให้ต้องสร้างมันแบบนั้น
ภายในมักพันกับ SaaS อื่นๆ ด้วย จนอาจต้องเก็บและกู้คืน สถานะทั้งคลาวด์ ราวกับเป็นคอมพิวเตอร์ส่วนกลางเครื่องเดียวที่ซอฟต์แวร์กรรมสิทธิ์กำลังถูกแก้ไขอยู่กับที่
มีใครมีเอกสารอ้างอิงไหมว่า permission ของไฟล์พวกนั้นหมายความว่าอะไร? พอเดาได้คร่าวๆ แต่หาแล้วไม่เจอข้อมูลเกี่ยวกับ permission ของ Unix v2
เอาต์พุต
lsดูคุ้นอยู่ แต่ส่วนsdrwrwเท่านั้นที่ไม่คุ้นhttps://gitlab.com/segaloco/v1man/-/blob/master/man1/stat.1?...
ใน
sdrwrwคอลัมน์แรกเป็นsหรือlหมายถึง small หรือ large คอลัมน์ที่สองเป็นd,x,u,-หมายถึงไดเรกทอรี, รันได้, setuid, หรือไม่มี ส่วนที่เหลือคือบิตอ่าน/เขียนของเจ้าของและผู้ที่ไม่ใช่เจ้าของhello world ขนาด 1328 ไบต์ เนี่ยนะ? บวมขึ้นแล้ว!
ผมคิดว่าเป็นคอมไพเลอร์ Rust รุ่นแรกๆ แต่หาแหล่งอ้างอิงไม่เจอ อาจจะเป็น Go ก็ได้
แก้ไข: เจอแล้ว 'rust-lang/rust#13871: "hello world" contains Lovecraft quotes' https://github.com/rust-lang/rust/issues/13871
printfได้ในขนาด ต่ำกว่า 1 KiB ส่วน hello world ด้วยwriteต่ำกว่า 170 ไบต์เจ๋งดี เข้าไปในพอร์ทัลเวลานั้นแล้วไปอยู่ใน โลกคู่ขนาน ได้ไหม?
หา 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 อะไรทำนองนั้น