อัปเดต 19 เมษายน 2558:
หลังจากสองปีที่ผ่านมาดูเหมือนว่าจะมีความสนใจน้อยมากในทรงกลมนี้ อย่างไรก็ตามชุมชน Hackintosh ยังคงใช้งานได้ดีซึ่งหมายความว่าหนึ่งในไม่กี่ bootloaders โอเพนซอร์สที่ไม่ใช่แอปเปิ้ลที่สามารถบูต xnu (Chameleon และส้อม) ยังคงได้รับการบำรุงรักษาและสามารถบูตโยเซมิตี นอกจากนี้ยังมีเรื่องราวความสำเร็จในการบู๊ต OS X Yosemite ภายใน QEMU นอกจากนี้ต้องขอบคุณ (ตอนนี้แอปเปิ้ลจ้าง) นักพัฒนาที่ไปด้วยจับwinocmเรามีพอร์ต ARM ของเคอร์เนล เธอเป็นนักพัฒนาที่กระตือรือร้นที่สุดที่ฉันรู้จักในเรื่องนี้
นอกจากนี้ยังมีภาคต่อของ Mac OS X Internals ของ Amit Singh ในเร็ว ๆ นี้ ฉันมักจะไม่ชอบพูดถึงหน้าส่วนตัวของผู้คน อย่างไรก็ตามเซิร์ฟเวอร์บล็อกที่มีข้อมูลทั้งหมดดูเหมือนจะไม่น่าเชื่อถือเล็กน้อยดังนั้นโปรดดูกล่องข้อมูลในหน้า Twitter ของ ameaijou
ฉันจัดการเพื่อสร้าง toolchain สำหรับการพัฒนาของ Apple (โฮสต์ด้วยตัวเองอย่างไรก็ตาม "Darwin SDK" ก็ถูกส่งไปยัง Linux ด้วย ) ฉันเชื่อว่าระบบปฏิบัติการของดาร์วินอาจเป็นไปได้ที่จะสร้างตั้งแต่เริ่มต้น - เกี่ยวกับสิ่งที่เราอาจขาดหายไปคือ Kexts โอเพนซอร์สบางตัว ดูพื้นที่นี้และถ้าคุณรู้วิธีที่จะเพิ่มความสนใจให้ฉันรู้! :)
คำตอบสั้น ๆ สำหรับคำถามนี้:
ในทางเทคนิค:ใช่
จวน:ไม่มี *
ด้วย Binary Cheats:อาจเป็นไปได้ แต่ยังไม่ถูกกฎหมาย (ยังไม่ทดลอง)
ด้วย Binary Cheats สำหรับฮาร์ดแวร์ทั่วไป: ดังกล่าวข้างต้น (ยังไม่ทดลอง)
* ยกเว้นว่าคุณทำงานที่ Apple (* ล้างคอในทิศทางทั่วไปของ California *)
คำตอบอีกต่อไป:
นี่จะค่อนข้างยาว ฉันแนะนำกาแฟ หากคุณไม่มีเวลา / ความชอบในการอ่านทั้งหมดคุณสามารถข้ามไปที่ "การสรุปข้อสังเกต"
เป็นไปได้จริง (ไม่):
น่าเศร้าที่ Apple ได้ถอนซอร์สโค้ดสำหรับKEXTและไบนารีที่จำเป็นของดาร์วินจำนวนมากเกินไปเพื่อทำการรวบรวมระบบปฏิบัติการดาร์วินอย่างหมดจดจากแหล่งที่เป็นไปได้ มันยังเป็นไปได้ในทางเทคนิค (คุณสามารถเขียนซอร์สเองเพื่อแก้ไขได้อย่างเหมาะสม) แต่ฉันไม่มีเวลาทักษะหรือความชอบในการทำสิ่งนี้ (และฉันสงสัยว่าชุมชนระดมทุนจะสนใจมาก)
จุดเปลี่ยนที่สำคัญที่น่าประหลาดใจคือการเปิดตัว Darwin 10 ซึ่งนำ xnu มาสู่ x86_64-land แหล่งข้อมูลที่จำเป็นส่วนใหญ่อยู่ในช่วงก่อนหน้านั้น แต่เป็น x86 เท่านั้น เมื่อเวลาผ่านไปความหมายของ "โอเพ่นซอร์ส" ของ Apple ดูเหมือนจะเปลี่ยนเป็น "โอเพ่นซอร์สบนฮาร์ดแวร์ของ Apple เท่านั้น" เนื่องจาก KEXT ของ Apple นั้นมีเฉพาะฮาร์ดแวร์ที่มีขนาดใหญ่ดังนั้นแม้ว่าคุณจะสามารถทำทุกอย่างได้แล้ว ใช้งาน (ดูด้านล่าง) คุณจะยังคงถูกกักขังอยู่ในฮาร์ดแวร์ของ Apple
เป็นไปได้ทางเทคนิค (ใช่):
อย่างไรก็ตามทั้งหมดจะไม่สูญหาย คู่มือ LFS มีประโยชน์และแน่นอนว่าการตั้งค่าที่จำเป็นทั้งหมดสามารถทำได้โดยไม่ต้องสร้างระบบปฏิบัติการของดาร์วิน นอกจากนี้ขั้นตอนที่นำเสนอยังช่วยให้คุณมีโรดแมพใกล้เคียงกับลบเคอร์นัล KEXT และ bootloader ฉันจัดการเพื่อแก้ไขปัญหา bootloader แต่ (อย่างน้อยสำหรับฮาร์ดแวร์ Apple)
หากคุณสนใจนี่เป็นภาพรวมทั้งหมดของสิ่งที่คุณต้องทำ:
- ลบพาร์ติชัน (8 GB หรือใหญ่กว่า) บนไดรฟ์ (ภายในหรือภายนอก - ไม่สำคัญ) และฟอร์แมตเป็น Mac OS Extended (Journaled) (HFS +)
ตรวจสอบให้แน่ใจว่ามี GUID Partition Table (GPT) และเมื่อคุณมีพาร์ติชัน EFI วิธีที่ง่ายที่สุดในการทำเช่นนี้คือผ่าน Disk Utility ของ Apple แต่คุณสามารถทำได้บนบรรทัดคำสั่งหากคุณต้องการ (มีแบบฝึกหัดอื่น ๆ จุดสำคัญคือเมื่อคุณเรียกใช้distil list diskNsM
ข้อมูลต่อไปนี้ควรถูกต้อง:
ประเภทพาร์ติชัน: Apple_HFS
สามารถติดตั้งระบบปฏิบัติการได้: ใช่
สื่อแบบอ่านอย่างเดียว: ไม่
ปริมาณการอ่านอย่างเดียว: ไม่
ตอนนี้ให้ทำตามคำแนะนำ LFS (พร้อมการดัดแปลง)
ใส่(โดยใช้จุดเมานท์จริง, ชัดแจ้ง) ลงในและDFS=/Volumes/DarwinOS
.bashrc
.bash_profile
ทำไดเรกทอรีผู้ใช้ ( chown
เป็น 0: 0 ที่สุด):
sudo mkdir -v "$DFS"/usr
ใส่root
:
sudo su -
ทำไดเรกทอรีต้นทางและตั้งค่าบิตเหนียว:
mkdir -v "$DFS"/sources # Make sure you still have $DFS defined; if not, redefine it.
chmod -v a+wt "$DFS"/sources
สร้างไดเรกทอรีเครื่องมือและสร้าง symlink ขึ้นมาเพื่อให้เราสามารถเพิ่มเข้าไปใน $ PATH ได้อย่างง่ายดายในภายหลัง (ยังอยู่ในroot
ทาง):
mkdir -v "$DFS"/tools
ln -sv "$DFS"/tools /
logout # Leave root
ดาวน์โหลดที่มาของแพ็คเกจทั้งหมดที่คุณต้องการ แน่นอนนี่คือสิ่งที่คุณติดอยู่ สิ่งที่จำเป็นทั้งหมดไม่ได้อยู่ที่นั่น (บังเอิญฉันชอบ GNU binutils
อยู่ดี)
สมมติว่าคุณสามารถดาวน์โหลดทุกสิ่งที่คุณต้องการได้ในทันที
สร้างผู้ใช้ที่ด้อยโอกาสโดยเฉพาะสำหรับ DFS (แนะนำโดย LFS):
sudo dscl . -create /Users/lfs
sudo dscl . -create /Users/lfs UserShell /bin/bash
sudo dscl . -create /Users/lfs RealName "LFS DFS"
sudo dscl . -create /Users/lfs UniqueID "2070" # whatever you like
sudo dscl . -create /Users/lfs PrimaryGroupID 20 # Default 'staff'
sudo dscl . -create /Users/lfs NFSHomeDirectory /Users/lfs
sudo dscl . -passwd /Users/lfs dfs # Again to taste.
หมายเหตุคุณต้องสร้าง homedir ของผู้ใช้ใหม่ด้วยตนเองบน Mac:
sudo mkdir /Users/lfs
sudo chown -R lfs:staff /Users/lfs/
ตอนนี้ให้สิทธิ์ผู้ใช้ใหม่เข้าถึงแหล่งที่มาและเครื่องมือ
sudo chown -v lfs $DFS/tools
sudo chown -v lfs $DFS/sources
เข้าสู่ระบบ:
su - lfs
Password: dfs
รันคำสั่งต่อไปนี้เพื่อล้างสภาวะแวดล้อม (จาก LFS):
cat > ~/.bash_profile << "EOF"
echo "Entering clean environment…"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF
ตอนนี้รันคำสั่งต่อไปนี้ (ดู LFS สำหรับสิ่งที่มันทำถ้าคุณไม่แน่ใจ):
cat > ~/.bashrc << "EOF"
set +h
umask 022
DFS=/Volumes/*DarwinOS* # As previously
LC_ALL=POSIX
LFS_TGT=$(uname -m)-dfs-darwin1242 # Look inside gcc/configure for possibilities!
PATH=/tools/bin:/bin:/usr/bin # Note symlink from before
export LFS LC_ALL LFS_TGT PATH
echo ".bashrc script complete. Environment is ready."
EOF
GCC /configure
นั้นค่อนข้างยืดหยุ่น ลอง grepping *-
รูปแบบหรือเพียงแค่เรียกใช้gcc -v
เพื่อดูวิธีการกำหนดค่าเครื่องโฮสต์ของคุณและคัดลอกที่
- ตอนนี้ออกจากระบบของผู้ใช้ lfs และเข้าสู่ระบบตอนนี้คุณควรมีสภาพแวดล้อมที่สะอาด
- ทุกอย่างจะเกิดขึ้นภายในผู้ใช้ lfs คุณจะสังเกตเห็นว่าฉันขี้เกียจเล็กน้อยในการแปลงครึ่งสัญลักษณ์ 'LFS' เป็นสัญลักษณ์ 'DFS' ขออภัยเกี่ยวกับเรื่องนี้ แต่คุณได้รับแนวคิด
โอเคตอนนี้กับส่วนสมมุติ
จากที่นี่มันเป็นขั้นตอนมาตรฐาน LFS ที่ค่อนข้างดี: แยกซอร์สสร้างติดตั้งทดสอบลบแหล่งที่มา โปรดทราบว่า binutils 2 รอบ, GCC และ Glibc ยังคงมีความจำเป็น แต่คุณต้องมีสำเนาที่ใช้งานได้libc++.1.dylib
- และคุณจะต้องทำเช่นนั้นใน 2 รอบ คุณสามารถดูหน้า libcxxของโครงการ LLVM สำหรับรายละเอียดเพิ่มเติมเล็กน้อย /usr/lib
เมื่อรวบรวมคุณสามารถวางไว้ใน คุณจะต้องรวบรวมและติดตั้งเคอร์เนล xnu (มีบทเรียนไม่กี่เว็บสำหรับวิธีการทำเช่นนั้น) แล้วติดตั้ง KEXT แม้ว่า KEXT ที่จำเป็นทั้งหมดนั้นมีอยู่คุณยังคงต้องใส่ลงในแพ็คเกจ. kext ด้วยมือ อีกครั้งมีบทช่วยสอนสำหรับวิธีฝีมือ KEXT ในบรรทัดคำสั่ง
บิตสุดท้ายคือการทำให้ระบบสามารถบูตได้ ในการทำเช่นนั้นคุณจะต้องรันคำสั่งต่อไปนี้:
"$DFS/usr/sbin/bless" --folder "$MOUNT/System/Library/CoreServices" --bootefi --verbose
ที่จริงแล้วสถานที่ให้พรไม่ได้สร้างความแตกต่างจริงๆ โฟลเดอร์นั้นเป็นเพียงมาตรฐานของ Apple
ในกรณีใด ๆ สมมติว่าเคอร์เนลและ kexts อยู่ในสถานที่ที่เหมาะสมที่คุณมีสำเนาที่เหมาะสมของdyld
, launchd
ฯลฯ ในสถานที่และboot.efi
ทำงานได้อย่างถูกต้องระบบควรจะทำงานและสามารถบูตได้!
หมายเหตุถ้าคุณต้องการให้คุณเรียกใช้มารยาทlaunchd
ซึ่งเป็นเพียงสคริปต์เพื่อเรียกใช้ bash prompt นั่นคือสิ่งที่PureDarwin Nanoทำ
อีกครั้งโดยทั้งหมดให้เขียน KEXTs และไบนารีด้วยตัวคุณเองหากคุณต้องการ - เป็นไปได้ในทางเทคนิค เพียงโทรหาฉันเมื่อคุณทำเสร็จแล้ว
ด้วย Binary Cheats: อาจเป็นไปได้ แต่ยังไม่ถูกกฎหมาย (ยังไม่ทดลอง)
ดังนั้นทำไมคุณไม่สามารถริปแบบไบนารี KEXT และไฟล์ที่ต้องการจาก Mountain Lion ให้พรได้ปริมาณและไป? คุณก็สามารถทำได้ แต่คุณต้องมีใบอนุญาตในการทำเช่นนี้ นอกจากนี้หากคุณทำสิ่งนี้คุณเพียงแค่สร้างสำเนาของ Mountain Lion นั่นไม่ใช่จุดที่ใช่มั้ย
ด้วย Binary Cheats สำหรับฮาร์ดแวร์ทั่วไป: ดังกล่าวข้างต้น (ยังไม่ทดลอง)
นี่เป็นโครงการ OSx86 อีกครั้งที่คุณพบเจอปัญหาทางกฎหมายในทันที ไม่ต้องสงสัยเลยว่าวิธีการสองวิธีสุดท้ายนี้เป็นไปได้อย่างแน่นอนความจริงที่ว่าคุณสามารถเรียกใช้ Mountain Lion บนฮาร์ดแวร์ทั่วไปเป็นข้อพิสูจน์ได้ - แต่ประเด็นทั้งหมดนี้ก็คือการรวบรวมระบบปฏิบัติการดาร์วินของคุณเองจากแหล่งกำเนิด
หมายเหตุด้านข้าง
คุณอาจสังเกตเห็นว่าฉันตั้งใจหลีกเลี่ยงสิ่งใด 32- บิต ในโลกที่ทุก ๆ ระบบปฏิบัติการที่สำคัญมีอยู่ใน 64- บิตมีจุดไม่มากในการรวบรวม 32- บิตหนึ่ง แอปเปิ้ลไม่จริงให้ภาพดิสก์ของดาร์วิน (จนถึงดาร์วิน 9) ที่นี่ มันทำงานได้อย่างสมบูรณ์บนกล่อง Windows ของฉัน
สรุปข้อสังเกต
ฉันเดาว่าในตอนท้ายของวันคนไม่ซื้อ Mac สำหรับดาร์วินพวกเขาซื้อ Mac สำหรับ Aqua ด้วยเหตุนี้การสนับสนุนดาร์วินในฐานะผลิตภัณฑ์โอเพ่นซอร์สแบบสแตนด์อโลนจึงค่อย ๆ ลดลงจนถึงจุดที่เป็นเพียงการแสดงสัญลักษณ์ของชุมชนโอเพ่นซอร์ส ความจริงที่น่าขันเล็กน้อยอีกประการหนึ่งคือเพื่อเรียนรู้เกี่ยวกับสิ่งนี้มากมายคุณต้องกระโดดเข้าสู่โครงการ OSx86 ซึ่งไม่ได้ถูกลงโทษอย่างแน่นอน ถึงอย่างนั้นก็ยังมีข้อมูลไม่มากนัก PureDarwinเป็นจุดเริ่มต้นที่ยอดเยี่ยมและหนังสือของ Jonathan Levin เป็นหนังสืออ้างอิงที่ทรงคุณค่าสำหรับทุกสิ่งที่ xnu
นี่เป็นปีแห่งการศึกษาที่ยิ่งใหญ่มากและฉันก็ดีใจที่รู้วิธีการทำอย่างที่ฉันอยากจะทำ ฉันจะต้องหยุดทำงานในบางช่วงแม้ว่าตอนนี้เป็นเวลานั้นแล้ว ในฐานะที่เป็นคนสุดท้ายที่ไร้ประโยชน์ตะโกนออกไปที่ Apple มันจะมากเกินไปไหมถ้าคุณขอให้ดาร์วินสร้างอีกหนึ่งครั้งเมื่อคุณปล่อย Mavericks?