Làm cách nào để cài đặt syslinux / extlinux vào tệp ảnh đĩa mà không yêu cầu quyền root


13

Tôi đã xây dựng một bản phân phối Linux tự phát triển và tôi có thể tạo tệp hình ảnh đĩa hoàn chỉnh dưới dạng người dùng không phải root với một ngoại lệ - cài đặt bộ tải khởi động. Tôi đang sử dụng syslinux (thực sự là extlinux) và để cài đặt nó, tôi phải quay lại mount phân vùng khởi động, đòi hỏi phải có quyền root / sudo. Các lệnh được chạy từ makefile và các tên biến sẽ chỉ rõ những gì cần thay thế chúng.

sudo losetup -o $(BOOT_FS_PARTITION_OFFSET) $(LOOP_DEVICE) $(IMAGE_FILE_NAME)
sudo mount $(LOOP_DEVICE) $(LOOP_MOUNT_POINT)
sudo $(EXTLINUX) -S $(DISK_SECTORS) -H $(DISK_HEADS) -i $(LOOP_MOUNT_POINT)
sudo umount $(LOOP_MOUNT_POINT)
sudo losetup -d $(LOOP_DEVICE)

Có cách nào để ghi syslinux hoặc extlinux vào tệp ảnh đĩa mà không yêu cầu quyền root không?


Bạn có tự hỏi nếu có thể thực hiện tất cả các lệnh mà không cần root? Hay chỉ là lệnh extlinux?
BenjiWiebe

@BenjiWiebe Nếu có một cách khác, thì bất kỳ lệnh nào cũng được yêu cầu, nhưng theo tôi hiểu, bạn cần một hệ thống tệp được gắn để chạy extlinux, và sau đó extlinux cần chạy với quyền root khi thực hiện theo cách này.

Câu trả lời:


8

Điều này có thể cho syslinux:

syslinux ~/floppy.ima

Trình syslinuxcài đặt chứa đủ phép thuật để chạy trên một hệ thống tập tin chưa được đếm. (Trên thực tế, nó được thiết kế để làm điều đó.) Trình extlinuxcài đặt dự kiến ​​sẽ được chạy trên một hệ thống tập tin được gắn kết, mặc dù.

Nó gần như là chắc chắn có thể tách ra các extlinuxtrình cài đặt thành phần mà bản sao các tập tin ( giống như mtools cho FAT , đó là hiếm nhưng dường như tồn tại , mặc dù người ta chỉ có thể tích hợp chúng trực tiếp với genext2fs), và một phần là cài đặt các bootsector ( Tôi có thể có thể kết hợp điều này với nhau).

Tôi đã làm một cái gì đó như thế này cho GRUB 2, cài đặt vào khoảng trống giữa MBR và phân vùng đầu tiên, cho Grml ; điều này thực sự dễ thực hiện hơn vì GRUB, không giống như SYSLINUX, không yêu cầu nhiều từ bộ khởi động. Về cơ bản nó phụ thuộc vào yêu cầu rộng hơn của bạn. Nếu phần trên về SYSLINUX không giúp bạn, hãy liên hệ với tôi, để chúng tôi có thể giải quyết vấn đề.


cảm ơn bạn vì thông tin này. Tôi đang sử dụng genext2fs, vì vậy đề xuất của bạn có vẻ như là lựa chọn tốt nhất. Đây có phải chỉ đơn giản là vấn đề lấy mã extlinux vào MBR và sao chép các tệp vào fs hay các tệp cần phải đi trong một số khối nhất định trong fs?

Tôi chưa xem chi tiết về EXTLINEUX (sẽ làm như vậy và sau đó xóa nhận xét này, nhưng cho tôi một chút thời gian) nhưng đối với SYSLINUX, LILO, GRUB và các bộ tải khởi động khác, thường là do mã được sao chép vào PBR (bản ghi khởi động phân vùng, bộ khởi động âm hộ, không phải MBR), và sau đó mã được chỉnh sửa để có vị trí của tệp được mã hóa cứng trong đó (do đó cần có trình cài đặt). Tôi sẽ cùng nhau làm điều gì đó cho bạn.
mirabilos

@Patrick Tôi có một số nhu cầu thảo luận về vấn đề này, tôi đã mở một cuộc trò chuyện
mirabilos

Bạn có thể chỉ cho tôi thực hiện điều này bằng cách sử dụng grub? Tôi hiện đang có grub-install, nhưng nó vẫn yêu cầu phân vùng khởi động được gắn kết.
sao chép

@copy đây là cách nó được sử dụng trong OpenADK, nó có khả năng tạo hình ảnh linh hoạt hơn cả Grml (chỉ cần tạo một hệ thống tệp ISO 9660). Có lẽ điều đó giúp? Nếu không, liên hệ với tôi trực tiếp. - Chỉnh sửa: oh chờ đã, không, core.imgthế hệ Lọ thấy tôi kiểm tra cuộc gọi ở đây để nhận grub-mkimagecuộc gọi. Điều này phụ thuộc nhiều vào môi trường đích (về cơ bản, các mô-đun cần thiết để tải các mô đun khác một cách linh hoạt; GRUB 1 dễ dàng hơn nhiều).
mirabilos

5

Nếu bạn thêm một dòng trong /etc/fstabkhi nói điều gì đó như:

/dev/loop0      /mnt                                    ext4    defaults,user   0 0

sau đó bạn có thể gắn kết / ngắt kết nối /dev/loop0như một người dùng thông thường.

Và nếu bạn làm điều chown youruser:youruser <MOUNTPOINT> <LOOPDEVICE>đó extlinux, losetup, mkfs, vv có thể được thực hiện như youruser.


Tôi muốn đây là một phần của quy trình xây dựng chung và vị trí của tệp hình ảnh và điểm gắn kết có thể khác nhau tùy theo người dùng. Tôi không muốn yêu cầu chỉnh sửa fstab cho mỗi người dùng.

@Patrick Chỉnh sửa fstab là toàn cầu.
BenjiWiebe

Nhưng losetup vẫn chỉ root, không?
bmargulies

@bmargulies Không phải khi thiết bị lặp được chown'd hoặc chmod'ed để người dùng có quyền truy cập vào nó ... hoặc, ít nhất là trên Fedora, bạn chỉ có thể thêm người dùng vào disknhóm. (Hoặc tạo một loopnhóm và sử dụng ...)
BenjiWiebe
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.