it-swarm-vi.com

Có thể cài đặt kernel Linux một mình không?

Tôi chỉ tò mò liệu có thể cài đặt kernel Linux một mình hay không, nếu bạn cần sử dụng một trong những hương vị. Nếu có thể, bạn sẽ làm thế nào? Tôi không cần một hướng dẫn chi tiết. Tôi chỉ muốn biết làm thế nào nó sẽ được thực hiện về mặt khái niệm. Tôi không giỏi với những thứ cấp thấp và muốn biết làm thế nào bạn có được một hệ điều hành vào máy tính. Tôi tưởng tượng nó có liên quan đến MBR.

Ồ và tôi nhận thấy rằng rất nhiều câu trả lời cho thấy một sự phân phối nhất định của một số Linux tối thiểu. Tôi có lẽ nên tuyên bố rằng tôi không tìm cách cài đặt một Linux xương tối thiểu hoặc trần. Câu hỏi này hoàn toàn là lý thuyết. Tuy nhiên, tôi thực sự đánh giá cao tất cả các câu trả lời và sẽ tham khảo chúng ngay lập tức, nếu có bao giờ tôi muốn cài đặt một Linux thực sự được cá nhân hóa.

50
cesar

Về mặt kỹ thuật, bạn có thể chỉ cài đặt một bộ tải khởi động và kernel, nhưng ngay khi kernel khởi động, nó sẽ phàn nàn về việc không thể khởi động "init", sau đó nó sẽ chỉ ngồi đó và bạn không thể làm gì với nó.

BTW, nó là một phần của bộ tải khởi động có trong MBR. Nhân nằm ở đâu đó trên khu vực thông thường của đĩa. Bộ tải khởi động được cấu hình để biết đó là đâu, vì vậy nó có thể tải kernel và thực thi nó.

54
Shawn J. Goff

Tôi không nghĩ bạn hiểu chính xác những gì bạn đang hỏi, nhưng bạn có thể muốn xem dự án Linux From Scratch .

20
Shadur

Nếu bạn đang hỏi liệu bạn có thể chỉ cần cài đặt hoặc nâng cấp kernel "qua" một hệ thống hiện có mà không cần cài đặt một loạt các chương trình khác không?

Nhân Linux là một tệp nhị phân thường có tên vmlinuz-x.x.x-x-name trong thư mục boot (thường là một phân vùng nhỏ riêng biệt ở đầu ổ cứng) trong đó x là số phiên bản. "name" chỉ là tên được chọn cho kernel có thể được đặt tại thời gian biên dịch, bạn có thể sử dụng nó để xác định loại máy hoặc kiến ​​trúc mà kernel dành cho hoặc vì bất kỳ lý do nào khác.

Nó được tải vào lúc khởi động bởi bộ tải khởi động, thường là GRUB được gọi bằng mã khởi động trong MBR, được gọi bởi ROM ROM. Khi nó được tải, nó không "giữ mở" hoặc được bảo vệ đặc biệt. Vì vậy, bạn có thể thay thế tập tin đó bằng một kernel làm việc khác. Nhưng, GRUB có một tính năng thú vị cho phép bạn chọn nhiều hạt nhân để khởi động. Vì vậy, sẽ rất thông minh khi thêm kernel bổ sung của bạn vào danh sách đó, nhưng hãy giữ kernel hoạt động ban đầu đã biết chỉ trong trường hợp có sự cố.

Hầu như tất cả các bản phân phối tôi tin rằng tạo ra một hạt nhân "mô-đun" trong đó trình điều khiển thiết bị nằm trong các tệp riêng biệt. Vì vậy, hầu hết các hạt nhân đều cần một hệ thống tập tin chứa các trình điều khiển có sẵn cho nó khi khởi động và đó là những gì một "initrd" (ban đầu RAM) hoặc "initramfs" dành cho. GRUB sẽ tải kernel tại một vị trí trong bộ nhớ và initrd ở một vị trí khác và nhảy tới kernel cho biết vị trí của initrd, khởi động Linux.

Trình điều khiển cũng có thể được "tích hợp" vào kernel và do đó được tải tự động và khả dụng khi bộ tải khởi động tải hình ảnh vmlinuz. Các hạt nhân hoạt động trên các hệ thống khác nhau (chẳng hạn như hầu hết các bản phân phối) thường giảm thiểu những gì được tích hợp trong kernel vì phần cứng khả dụng sẽ được quét sau trong quá trình khởi động và chỉ các mô-đun đại diện cho phần cứng hiện tại sẽ được tải.

Có các công cụ để sửa đổi và tạo initrd. Debian có các công cụ Nice và tôi tưởng tượng các bản phân phối khác cũng vậy.

Vì vậy, nếu bạn tải xuống một kernel mới hơn từ kernel.org và biên dịch nó để tạo một hình ảnh nhị phân kernel mới, bạn cần tạo hoặc cập nhật một initrd với các trình điều khiển hoạt động với kernel đó. Các initrd cũ sẽ không hoạt động vì các trình điều khiển phải khớp với phiên bản kernel đang chạy.

Tệp initrd được đặt tên initrd.img-x.x.x.x-name tương tự như kernel và có thể được thay thế sau khi khởi động giống như kernel, và cách tốt nhất sẽ cho thấy bạn không xóa initrd hoạt động đã biết cho đến khi bạn biết bạn có thể khởi động vào kernel + initrd mới thành công.

Tôi hy vọng rằng cung cấp một số bối cảnh.

Nếu bạn đang tìm kiếm bản cài đặt Linux "barebones" có ít hoặc không có chương trình bổ sung nào được cài đặt cùng với nó, thì lựa chọn yêu thích của tôi luôn là cài đặt hình ảnh Debian netinst. Khá nhiều bạn chỉ có các công cụ cơ bản nhất cần thiết để chạy bảng điều khiển văn bản dòng lệnh và nano làm trình soạn thảo văn bản.

13
LawrenceC

Rootfs thực thi đơn

Hệ thống tối thiểu tuyệt đối chạy một /init chương trình như tôi đã giải thích tại Ứng dụng duy nhất Linux | Siêu người dùng

Tối thiểu Linux Live

https://github.com/ivandavidov/minimal

Đối với một hệ thống tương tác thú vị hơn, đây là một kịch bản nhỏ (chủ yếu là giáo dục):

  • tải nguồn cho kernel và busybox
  • biên dịch chúng
  • tạo ra ISO 8Mb có thể khởi động cùng với chúng

ISO sau đó để bạn trong một Shell tối thiểu với busybox.

Với QEMU bạn có thể dễ dàng khởi động vào hệ thống.

Tôi đã sửa đổi nó để cho phép chạy nó từ thư mục nguồn kernel: https://github.com/cirosantilli/runlinux

Sử dụng:

git clone https://github.com/ivandavidov/minimal
cd minimal/src
./build_minimal_linux_live.sh
# Wait.
# Install QEMU.
# minimal_linux_live.iso was generated
./qemu64.sh

và bạn sẽ được để lại bên trong Cửa sổ QEMU cùng với hệ thống tối thiểu mới. Tuyệt vời.

Vì nó nhỏ, đây là một lựa chọn tốt để đọc nguồn và hiểu những gì đang xảy ra.

Đã thử nghiệm trên Ubuntu 16.04.

Buildroot

https://buildroot.org/

Tập hợp lớn các tập lệnh Makefile quản lý:

  • Công cụ biên dịch chéo GCC
  • biên dịch kernel
  • trình biên dịch bootloader
  • thế hệ rootfs
  • có hàng tấn công thức tải xuống/xây dựng gói trong cây nguồn, bao gồm những thứ phức tạp như GTK. Có một hệ thống phụ thuộc.

Ví dụ tối thiểu:

git clone git://git.buildroot.net/buildroot
cd buildroot
git checkout 2016.05
make qemu_x86_defconfig
# Can't use -jN, use `BR2_JLEVEL=2` instead.
BR2_JLEVEL=2 make
# Wait.
# cat board/qemu/x86_64/readme.txt
qemu-system-x86_64 -M pc -kernel output/images/bzImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append root=/dev/vda -net nic,model=virtio -Net User
# You are now in a Shell with BusyBox utilities.

Nó thậm chí còn có các công thức để xây dựng X11 từ đầu: Cách cài đặt X11 trên hệ thống Linux Buildroot của riêng tôi?

Công cụ chuyên nghiệp.

Linux Linux

https://github.com/gliderlabs/docker-Alpine

Phân phối nhúng với trình quản lý gói cung cấp các tệp nhị phân được biên dịch sẵn từ một trang web.

Xem thêm

Có thể cài đặt kernel Linux mà không cần các công cụ không gian người dùng thông thường. Điều này thường được thực hiện trong các hệ thống nhúng như bộ định tuyến. Thông thường, kernel được tải từ ROM hoặc bộ nhớ Flash và đã được tùy chỉnh cho thiết bị được đề cập (thường là với các trình điều khiển được yêu cầu được biên dịch vào kernel thay vì được tải dưới dạng mô-đun).

Ít nhất một chương trình không gian người dùng cần tồn tại, để trở thành quy trình 'init' (không nhất thiết phải gọi là init, nhưng được khởi động bởi kernel là quy trình 1 và là cha mẹ tự động của bất kỳ quy trình mồ côi nào) - trừ khi kernel đã được sửa đổi (thay vì chỉ đơn giản là tùy chỉnh) để không yêu cầu điều này.

Chắc chắn không cần thiết phải có sẵn Shell để có một thiết bị chạy Linux hoạt động, mặc dù nó có thể giúp phát triển dễ dàng hơn nhiều!

3
Toby Speight

Tôi muốn thứ hai Shadur's đề nghị bạn nên làm bẩn tay Linux từ Scratch.
[.__.] Ngoài ra, một cái gì đó tương tự, hãy thử Pocket Linux .

Hướng dẫn Pocket Linux trình bày cách xây dựng một hệ thống GNU/Linux nhỏ dựa trên bàn điều khiển chỉ sử dụng mã nguồn và một vài đĩa. Nó dành cho người dùng Linux, những người muốn hiểu sâu hơn về cách hệ thống của họ hoạt động bên dưới lớp vỏ của các tính năng và công cụ cụ thể phân phối.

3
Philomath

Nhiều distro cung cấp cài đặt "cốt lõi". Đây là cái bạn muốn. Xem phần mềm tối thiểu, cài đặt mạng debian, archlinux (mặc định chỉ là cốt lõi).

Các câu trả lời khác hữu ích nếu bạn muốn tìm hiểu, nhưng đó có thể không phải là trường hợp = p

2
user606723