Cập nhật ngày 19 tháng 4 năm 2015:
Sau hai năm vẫn xuất hiện rất ít sự quan tâm đến lĩnh vực này. Tuy nhiên, cộng đồng Hackffy vẫn hoạt động mạnh mẽ, có nghĩa là một trong số ít các bộ tải khởi động không phải của Apple có khả năng khởi động xnu (Chameleon và dĩa) vẫn được duy trì và có thể khởi động Yosemite. Cũng có những câu chuyện thành công khi khởi động OS X Yosemite trong QEMU. Hơn nữa, nhờ một nhà phát triển (hiện đang làm việc cho Apple), người điều khiển winocm , chúng tôi có một cổng ARM của hạt nhân xnu . Cô ấy là nhà phát triển tích cực nhất mà tôi biết trong lĩnh vực này.
Sắp có phần tiếp theo của Mac OS X Internals của Amit Singh sắp ra mắt. Tôi thường không muốn đề cập đến trang cá nhân của mọi người; tuy nhiên, máy chủ blog với tất cả thông tin dường như không đáng tin cậy một chút, vì vậy hãy xem hộp thông tin trên trang Twitter của ameaoman .
Tôi đã quản lý để xây dựng chuỗi công cụ phát triển của Apple (một máy chủ tự lưu trữ, tuy nhiên "SDK Darwin" cũng đã được chuyển sang Linux ). Tôi tin rằng một hệ điều hành Darwin có thể chưa thể xây dựng từ đầu - về tất cả những gì chúng ta có thể thiếu là một số Kexts nguồn mở. Xem không gian này, và nếu bạn biết làm thế nào để thu hút sự quan tâm, hãy cho tôi biết! :)
Câu trả lời ngắn cho câu hỏi này:
Về mặt kỹ thuật: Có
Thực tế: Không *
Với trò chơi nhị phân: Có thể, nhưng cũng không hợp pháp (chưa được kiểm tra)
Với Binary Cheats cho phần cứng chung: Như trên (chưa được kiểm tra)
* trừ khi bạn làm việc tại Apple (* hắng giọng theo hướng chung của California *)
Câu trả lời dài hơn:
Điều này sẽ khá dài. Tôi đề nghị cà phê. Nếu bạn không có thời gian / thiên hướng để đọc tất cả, bạn có thể bỏ qua phần "Nhận xét kết luận".
Thực tế có thể (Không):
Đáng buồn thay, Apple đã rút mã nguồn cho quá nhiều KEXT và nhị phân cần thiết của Darwin để làm cho việc biên dịch hệ điều hành Darwin hoàn toàn từ nguồn có thể. Về mặt kỹ thuật vẫn có thể (bạn có thể tự viết nguồn để vá nó đúng cách), nhưng tôi đơn giản là không có thời gian, kỹ năng hoặc thiên hướng để làm điều này (và tôi nghi ngờ cộng đồng tài trợ đám đông sẽ rất quan tâm).
Không có gì đáng ngạc nhiên khi điểm bùng phát quan trọng là việc phát hành Darwin 10, đã đưa xnu vào x86_64-đất. Hầu hết các nguồn cần thiết là khoảng trước đó, nhưng chỉ là x86. Khi thời gian trôi qua, ý nghĩa của "Nguồn mở" của Apple dường như đã chuyển sang "Chỉ nguồn mở trên phần cứng của Apple" vì các KEXT của Apple hiện đang đặc biệt về phần cứng, vì vậy ngay cả khi bạn có thể nhận được mọi thứ và đang chạy (xem bên dưới) bạn vẫn sẽ bị giới hạn trong phần cứng của Apple.
Về mặt kỹ thuật có thể (Có):
Tuy nhiên, tất cả là không bị mất. Hướng dẫn LFS đã có ích và chắc chắn tất cả các thiết lập cần thiết có thể được tiến hành mà không thực sự xây dựng HĐH Darwin. Hơn nữa, các bước được trình bày cung cấp cho bạn một lộ trình gần như chính xác của con đường phía trước, trừ hạt nhân, KEXT và bộ nạp khởi động. Tôi đã quản lý để giải quyết vấn đề bootloader, (ít nhất là đối với phần cứng của Apple).
Nếu bạn quan tâm, đây là tổng quan đầy đủ về những gì bạn sẽ phải làm:
- Xóa phân vùng (tốt nhất là 8 GB hoặc lớn hơn) trên ổ đĩa (bên trong hoặc bên ngoài - không quan trọng) và định dạng nó dưới dạng Mac OS Extended (Nhật ký) (HFS +).
Đảm bảo nó có Bảng phân vùng GUID (GPT) và khi bạn thực hiện thì nó có phân vùng EFI. Cách dễ nhất để thực hiện việc này là thông qua Tiện ích đĩa của Apple, nhưng bạn có thể thực hiện trên dòng lệnh nếu muốn (có hướng dẫn ở nơi khác về cách thực hiện việc này). Điểm quan trọng là khi bạn chạy distil list diskNsM
, thông tin sau phải chính xác:
Loại phân vùng: Apple_HFS
Hệ điều hành có thể được cài đặt: Có
Phương tiện chỉ đọc: Không
Tập chỉ đọc: Không
Bây giờ để làm theo hướng dẫn LFS (có thích ứng).
Chèn (sử dụng điểm gắn kết thực tế, rõ ràng) vào vàDFS=/Volumes/DarwinOS
.bashrc
.bash_profile
Tạo thư mục người dùng ( chown
cuối cùng là 0: 0):
sudo mkdir -v "$DFS"/usr
Nhập root
:
sudo su -
Tạo thư mục nguồn và thiết lập bit dính:
mkdir -v "$DFS"/sources # Make sure you still have $DFS defined; if not, redefine it.
chmod -v a+wt "$DFS"/sources
Tạo thư mục công cụ và tạo một liên kết tượng trưng cho nó để chúng ta có thể dễ dàng thêm nó vào $ PATH sau (vẫn root
bằng cách này):
mkdir -v "$DFS"/tools
ln -sv "$DFS"/tools /
logout # Leave root
Tải về nguồn của tất cả các gói bạn muốn. Đây là, tất nhiên, nơi bạn bị mắc kẹt. Tất cả những thứ cần thiết không có ở đó. (Ngẫu nhiên, tôi thích GNU hơn binutils
.)
Giả sử trên thực tế bạn có thể tải xuống tất cả những thứ bạn cần, hãy nhấn vào.
Tạo một người dùng bị thiệt thòi đặc biệt cho DFS (được đề xuất bởi 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.
Lưu ý rằng bạn phải tạo homedir của người dùng mới theo cách thủ công trên máy Mac:
sudo mkdir /Users/lfs
sudo chown -R lfs:staff /Users/lfs/
Bây giờ cấp cho người dùng mới quyền truy cập vào các nguồn và công cụ
sudo chown -v lfs $DFS/tools
sudo chown -v lfs $DFS/sources
Đăng nhập:
su - lfs
Password: dfs
Chạy lệnh sau để làm sạch môi trường (từ LFS):
cat > ~/.bash_profile << "EOF"
echo "Entering clean environment…"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF
Bây giờ hãy chạy lệnh sau (xem LFS để biết nó làm gì nếu bạn không chắc chắn):
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
là khá linh hoạt. Hãy thử lấy *-
mẫu hoặc chỉ chạy gcc -v
để xem cách máy chủ của bạn được cấu hình và sao chép mẫu đó.
- Bây giờ hãy đăng xuất khỏi người dùng lfs và đăng nhập lại. Bây giờ bạn sẽ có một môi trường sạch sẽ.
- Mọi thứ từ bây giờ diễn ra bên trong người dùng lfs. Bạn sẽ nhận thấy tôi hơi lười biếng khi chỉ chuyển đổi một nửa biểu tượng 'LFS' thành biểu tượng 'DFS'. Xin lỗi về điều đó nhưng bạn có được ý tưởng.
Được rồi bây giờ đến phần giả thuyết.
Từ đây trở đi, đây sẽ là quy trình LFS tiêu chuẩn: Trích xuất nguồn, xây dựng, cài đặt, kiểm tra, xóa nguồn. Lưu ý rằng 2 lượt binutils, GCC và Glibc vẫn cần thiết NHƯNG bạn C haveNG phải có một bản sao hoạt động libc++.1.dylib
- và bạn cũng cần phải làm điều đó trong 2 lượt. Bạn có thể xem trang libcxx của dự án LLVM để biết thêm chi tiết. Sau khi biên dịch, bạn có thể đặt nó vào /usr/lib
. Bạn sẽ cần phải biên dịch và cài đặt kernel xnu (có một vài hướng dẫn trên web để biết cách thực hiện) và sau đó cài đặt KEXTs. Ngay cả khi tất cả các KEXT yêu cầu đã có sẵn, bạn vẫn cần phải đặt chúng vào gói .kext bằng tay. Một lần nữa, có các hướng dẫn về cách tạo thủ công KEXT trên dòng lệnh.
Bit cuối cùng là làm cho hệ thống có khả năng khởi động. Để làm điều đó, bạn sẽ chạy lệnh sau:
"$DFS/usr/sbin/bless" --folder "$MOUNT/System/Library/CoreServices" --bootefi --verbose
Trên thực tế, vị trí để ban phước không thực sự tạo ra sự khác biệt. Thư mục đó chỉ là tiêu chuẩn của Apple.
Trong mọi trường hợp, giả định hạt nhân và KEXTs là ở các vị trí bên phải, bạn đã có bản sao hợp lý dyld
, launchd
, vv tại chỗ và boot.efi
đang làm việc một cách chính xác, hệ thống sẽ làm việc và khả năng khởi động!
Lưu ý nếu bạn thực sự muốn, bạn có thể chạy giả - launchd
đó chỉ là một tập lệnh để chạy dấu nhắc bash - đó là những gì PureDarwin Nano làm.
Một lần nữa, bằng mọi cách, hãy tự viết KEXT và nhị phân nếu bạn thích - về mặt kỹ thuật là có thể. Chỉ cần gọi cho tôi khi bạn hoàn thành.
Với trò chơi nhị phân: Có thể, nhưng cũng không hợp pháp (chưa được kiểm tra)
Vì vậy, tại sao bạn không thể tách các tệp nhị phân, KEXT và các tệp yêu cầu ra khỏi Mountain Lion, ban phước cho âm lượng và đi? Vâng, bạn có thể có thể. Nhưng bạn cũng cần một giấy phép để làm điều này. Ngoài ra, nếu bạn làm điều này, về cơ bản bạn đã tạo một bản sao của Mountain Lion. Đó không phải là loại bên cạnh điểm?
Với Binary Cheats cho phần cứng chung: Như trên (chưa được kiểm tra)
Điều này khá nhiều là dự án OSx86. Một lần nữa, bạn gặp khá nhiều vấn đề pháp lý ngay lập tức. Không có câu hỏi nào về hai phương pháp cuối cùng này chắc chắn là có thể - việc bạn có thể chạy Mountain Lion trên phần cứng chung là bằng chứng cho điều đó - nhưng toàn bộ vấn đề này là có thể biên dịch hợp pháp hệ điều hành Darwin của bạn từ nguồn.
Lưu ý bên
Bạn có thể nhận thấy tôi đã cố tình tránh bất cứ thứ gì 32-bit. Trong một thế giới nơi mọi hệ điều hành chính đều có sẵn trong 64 bit, không có nhiều điểm trong việc biên dịch một hệ điều hành 32 bit. Apple thực sự đã cung cấp hình ảnh đĩa của Darwin (cho đến Darwin 9) tại đây . Họ đã làm việc hoàn hảo trên hộp Windows của tôi.
Kết luận
Tôi đoán vào cuối ngày, mọi người không mua Mac cho Darwin, họ mua Mac cho Aqua. Kết quả là, sự hỗ trợ cho Darwin như một sản phẩm nguồn mở độc lập đã dần dần giảm xuống đến mức nó thực sự chỉ là một cử chỉ mã thông báo cho cộng đồng nguồn mở. Một sự thật hơi mỉa mai khác là để tìm hiểu về nhiều thứ này, bạn phải nhảy ngay vào dự án OSx86, vốn không bị xử phạt chính xác (để nói một cách nhạt nhẽo). Ngay cả sau đó, không có nhiều thông tin xung quanh. PureDarwin là một nơi tuyệt vời để bắt đầu, và cuốn sách của Jonathan Levin là một tài liệu tham khảo vô giá cho tất cả mọi thứ xnu.
Đây là một năm làm việc cực kỳ giáo dục và tôi gần như hạnh phúc khi biết cách làm nó như tôi sẽ thực sự làm nó. Tôi sẽ phải dừng công việc ở một số giai đoạn và bây giờ là lúc đó. Như một tiếng hét vô ích cuối cùng với Apple, sẽ là quá nhiều để yêu cầu chỉ có thêm một bản dựng của Darwin khi bạn phát hành Mavericks?