Cài đặt Linux khác trong một đĩa được mã hóa


7

Gần đây tôi đã có một ổ SSD để thay thế ổ cứng máy tính xách tay của tôi và quyết định thay đổi và sử dụng mã hóa "toàn bộ đĩa".

Tôi đã tạo một phân vùng nhỏ không được mã hóa cho /bootvà một phân vùng LUKS được mã hóa lớn nơi tôi đã sử dụng LVM để tạo 5 khối hợp lý trong một nhóm âm lượng:

  • Một để cài đặt Fedora ( lv_fedora).
  • Một cho hoán đổi ( lv_swap).
  • Một cho hệ điều hành Linux khác ( lv_os2).
  • Và hai cho dữ liệu ( lv_data1lv_data2).

Tôi đã cài đặt Fedora trong lv_fedorahệ điều hành đầu tiên của mình mà không gặp sự cố nào và tôi có thể khởi động nó từ menu của GRUB, nhưng bây giờ tôi không biết làm cách nào tôi có thể cài đặt một hệ điều hành Linux khác (Linux Mint 17) vào đĩa được mã hóa và tạo GRUB2 của Fedora phát hiện nó và khởi động hệ điều hành này là tốt.

Tôi đã thử hai cách tiếp cận khác nhau. trong cả hai trường hợp tôi đã khởi động ubiquity, trình cài đặt Linux Mint, với --no-bootloadertùy chọn, để ngăn Mint cài đặt bộ tải khởi động. Và trong cả hai trường hợp, để bắt đầu cài đặt, trước đây tôi đã mở khóa phân vùng LUKS từ trình quản lý tệp của hình ảnh LinuxMint Live để có thể chọn lv_os2âm lượng logic tương ứng làm mục tiêu cài đặt. Hiện nay:

  • Đầu tiên tôi đã cố gắng để cài đặt Linux Mint trong một phân vùng duy nhất được gán cho /trong lv_os2. Việc cài đặt đã thành công. Từ Fedora, tôi đã thực hiện grub2-mkconfig -o /boot/grub/grub.cfgđể cập nhật các mục GRUB (đó là những gì tôi đã làm cả đời khi sử dụng đĩa không được mã hóa). GRUB đã phát hiện Linux Mint đã có mặt và thêm các mục tương ứng vào menu khởi động. Vấn đề là tôi đã không thể khởi động từ những mục đó sau đó.
  • Sau đó tôi nghĩ có lẽ [1] là do hình ảnh hạt nhân được mã hóa trong bootthư mục trong phân vùng của Linux Mint. Có lẽ GRUB 2 cần các tệp đó trong một phân vùng không được mã hóa, giống như khi tôi cài đặt Fedora lần đầu tiên (tôi đã sử dụng /bootphân vùng không được mã hóa đơn giản vì đó là cài đặt được đề xuất). Vì vậy, lần này tôi đã sao lưu /bootphân vùng của Fedora (chỉ trong trường hợp) và cài đặt lại Linux Mint, nhưng cũng sử dụng phân vùng không được mã hóa /boot, để hình ảnh kernel có thể được sao chép vào thư mục đó và có thể, được khởi động sau khi cài đặt. Quá trình cài đặt đã thành công và các tệp "phụ" được thêm vào /bootbởi Linux Mint không ghi đè lên bất kỳ tệp Fedora nào, vì vậy ít nhất Fedora đã hoạt động và tôi không phải sử dụng/bootbánh mì. Sau đó tôi bắt đầu Fedora và thực hiện grub2-mkconfig -o /boot/grub/grub.cfglại. Lần này còn tệ hơn. GRUB trộn lẫn các mục tạo, ví dụ, một mục cho Fedora (nhắm mục tiêu lv_fedora) đang tải hình ảnh hạt nhân của Linux Mint. Tôi đã cố gắng tự sửa đổi các mục đó, nhưng không thành công.

Tôi cá là tôi đang làm gì đó sai. Có cách nào tốt hơn để cài đặt HĐH Linux thứ cấp vào một ổ đĩa đã được mã hóa và để HĐH Linux chính xử lý bộ tải khởi động không? (cập nhật các mục GRUB của nó để cho phép khởi động từ hệ điều hành phụ)

[1] : như bạn có thể thấy, tôi chỉ đang cố gắng học hỏi, nhưng tôi không hiểu sâu về chủ đề này.


Bạn đã thử vô hiệu hóa os-prober và làm điều này bằng tay chưa? gnu.org/software/grub/manual/ từ
iyrin 16/2/2015

@iyrin: Tôi đã cố gắng sửa đổi thủ công /boot/grub/grub.cfgcác mục sau khi GRUB trộn lẫn tất cả các mục Fedora và LinuxMint ở đó, nhưng không thành công.
Peque

Tôi tự hỏi nếu thử một trong hai cách tiếp cận ở đây sẽ tốt hơn vì bạn sẽ giải mã được trước khi khởi động cùng với bảo mật tốt hơn. Nó có thể là một công việc xung quanh. unix.stackexchange.com/a/30126/87728
iyrin 16/2/2015

Tôi không chắc Fedora sử dụng cái gì, nhưng tôi thấy rằng bạc hà sử dụng /etc/crypttabthay vì /etc/mkinitcpio.conf. update-initramfsđược sử dụng để tạo hình ảnh khởi động. Xem accit.us/?p=4 này (mặc dù bạn có thể muốn chỉ định phiên bản kernel mint thay vì sử dụng -k alltùy chọn đó )
iyrin 16/2/2015

Điều này cũng có thể liên quan đến tình huống của bạn nơi các initramfs của người dùng được đặt bên trong một thùng chứa LUKS. Hãy ghi nhớ sự khác biệt cho bạc hà, điều này có thể chỉ cho bạn đi đúng hướng. bbs.archlinux.org/viewtopic.php?id=169492
iyrin 16/2/2015

Câu trả lời:


1

Từ tất cả những gì tôi đã đọc, dường như có các initramfs "được nhúng vào kernel và được tải ở giai đoạn đầu của quá trình khởi động." 1

Đối với Mint, bạn sẽ phải cấu hình /etc/crypttab, sau đó sử dụng update-initramfs. 2

Theo những gì tôi hiểu, điều này sẽ phục vụ như một hướng dẫn để tạo hình ảnh initramfs sau khi cài đặt Mint, mà bạn dường như đã cài đặt. Hy vọng điều này bao gồm tất cả mọi thứ, nhưng hãy chắc chắn để tự nghiên cứu từng phần.

Live boot Mint , mountchrootđể phân vùng bạn cài đặt Mint trên. 3

Tạo và cấu hình /etc/crypttab để mở khóa khi khởi động. 4 Đây là nơi bạn thêm đường dẫn đến lvm nơi Mint được cài đặt, dựa trên câu hỏi của bạn, nên được đặt trong /dev/mapper/lv_os2hoặc /dev/<big encrypted LUKS>/lv_os25

Hầu hết các ví dụ tôi đã thấy /etc/crypttabgiống như sau :
root /dev/mapper/lv_os2 none luks. Bốn trường tương ứng là: theo lựa chọn của bạn, đường dẫn đến lvm nơi bạn đã cài đặt Mint, noneđặt mật khẩu được nhập thủ công trong khi khởi động hệ thống và luksbuộc chế độ LUKS, nhưng dường như không cần thiết.

Khi không có chế độ nào được chỉ định trong trường tùy chọn và thiết bị khối chứa chữ ký LUKS, nó sẽ được mở dưới dạng thiết bị LUKS; mặt khác, nó được coi là ở định dạng thô dm-crypt (chế độ đơn giản).

Cấu hình /etc/fstab để gắn kết /dev/mapper/<name>mà bạn vừa tạo trong /etc/crypttabthư mục gốc /. Một cái gì đó như:
/dev/mapper/<name> / <fs_vfstype> <fs_mntops>
Xem man fstab.

Khi bạn đã có /etc/crypttab/etc/fstabđịnh cấu hình theo ý thích của mình, bạn có thể sử dụng update-initramfsđể xây dựng / cập nhật hình ảnh khởi động.

Xem man update-initramfs. Có thể tốt nhất là sử dụng phiên bản kernel cụ thể được hiển thị uname -rtrong Mint. Lệnh sẽ trông giống như update-initramfs -u -k 3.11.0-26-genericngoại trừ thay thế phiên bản kernel bằng của riêng bạn.

Tại thời điểm này , bạn có thể có thể khởi động lại Fedora và thử grub2-mkconfig -o /boot/grub/grub.cfgtùy chọn phát hiện Mint trước đó. Nếu điều đó không hiệu quả thì hãy làm theo cấu hình thủ công đa khởi động trong hướng dẫn GRUB. 6

Đặc biệt, phần này:

Trong tất cả các hệ điều hành cài đặt các công cụ GRUB nhưng vô hiệu hóa cài đặt GRUB trong bộ khởi động, do đó bạn sẽ có sẵn menu.lst và grub.cfg. Đồng thời vô hiệu hóa sử dụng os-prober bằng cách cài đặt:

GRUB_DISABLE_OS_PROBER=true

trong /etc/default/grub

Hy vọng rằng điều này bao gồm phần lớn những gì bạn cần để có được Mint để khởi động.


Cảm ơn câu trả lời chi tiết của bạn, @iyrin, tôi sẽ thử trước khi tiền thưởng kết thúc. :-)
Peque

Chúc may mắn! Vui lòng chỉnh sửa khi cần thiết.
iyrin 17/2/2015

Không quản lý để làm cho nó hoạt động. Dù sao cũng cảm ơn sự giúp đỡ của bạn. :-) Tôi nghĩ rằng tôi sẽ thử một cách tiếp cận khác: có tất cả các /bootphân vùng được mã hóa và cài đặt GRUB trong phân vùng không được mã hóa (về mặt lý thuyết hiện nay nó có thể đọc từ các phân vùng được mã hóa). Sau đó, tôi sẽ tải bộ tải khởi động vào /bootphân vùng được mã hóa tương ứng , tùy thuộc vào hệ điều hành được chọn. Hoặc có thể không cần tải chuỗi, tôi sẽ phải thử, nhưng thật đáng buồn, không có nhiều tài liệu về việc sử dụng GRUB với các /bootphân vùng được mã hóa ... :-P
Peque

1

Nó không thực sự trả lời câu hỏi của bạn "như thế nào", nhưng sẽ cung cấp cho bạn một cái nhìn sâu sắc - và nó quá dài cho một nhận xét.

Trước hết, bạn không thể khởi động phân vùng được mã hóa. Đơn giản là vì chuỗi khởi động không hiểu mã hóa chỉ khá muộn trong quy trình:

  1. phần cứng tải phần sụn - thường là BIOS của UEFI (trên nền tảng x86). Phần cứng như vậy hoàn toàn không biết dữ liệu - nó chỉ tải bất cứ thứ gì nó tìm thấy trong một số lưu trữ liên tục (trên một địa chỉ được xác định trước).

  2. Phần sụn tải bộ tải khởi động hoặc trực tiếp kernel. Như với CPU, nó không có ý tưởng nào về các chế độ mã hóa có thể (không phải là không thể, nhưng nó thường không như vậy).

  3. Nếu bộ tải khởi động có liên quan, nó sẽ tải kernel (hoặc bộ tải khởi động được xâu chuỗi chẳng hạn khi khởi động Windows) và thường xuyên hơn không phải là một ramdisk ban đầu (có thể ở trong một tệp độc lập hoặc được nhúng trong hình ảnh kernel). Ở đây nó trở nên thú vị hơn, ví dụ GRUB2 có thể khởi động từ thiết bị LUKS, nhưng tài liệu dường như khá khan hiếm .

  4. Gắn kết hệ thống tập tin kernel gốc và chạy init(System V init, systemd, OpenRC, upstart... lựa chọn phong phú).

  5. Nếu khởi động với ramdisk ban đầu, đầu tiên nó được mở rộng vào bộ nhớ, sau đó được gắn kết và hệ thống init được chạy từ đó. Các initramfs shuold chứa mọi thứ cần thiết để gắn hệ thống tệp gốc thích hợp - thông thường nó chứa mọi trình điều khiển có sẵn (ví dụ trình điều khiển RAID cần thiết khi rootfs cuối cùng trên thiết bị RAID), cơ sở hạ tầng khởi động đồ họa - thường có nghĩa là tối thiểu (hoặc ngăn xếp X11 không tối thiểu - và cũng thường là công cụ để gắn các phân vùng được mã hóa. Sau khi tất cả được thiết lập và các rootfs cuối cùng gắn hệ thống init chạy từ initramfs pivot_root()(xem trang pivot_root(8)pivot_root(2)man để biết thêm chi tiết), do đó chuyển sang /hệ thống tệp thích hợp.

Bây giờ, thông thường, cách dễ nhất để khởi động một khối lượng được mã hóa là thực hiện cài đặt mật mã ở bước 5 - chủ yếu là do hạt nhân sẽ chạy và nó có thể sử dụng cơ sở hạ tầng được cung cấp bởi bất kỳ phân phối gần đây nào.

Do đó, bạn có thể muốn xem xét chính xác Fedora và Mint khởi động từ khối lượng được mã hóa như thế nào. Giải pháp cho vấn đề của bạn có thể là ví dụ tạo một hình ảnh initramfs thích hợp cho nhân Mint. Bạn thậm chí có thể sử dụng một initramfs cho cả hai kernel, miễn là bạn chắc chắn rằng có một rootfs có điều kiện tùy thuộc vào kernel đã khởi động, mặc dù tôi không khuyên bạn, đặc biệt là nếu bạn quyết định sử dụng khác nhau (ví dụ: stock ) kernel cho mỗi phân phối.

Điều đó nói rằng bạn cũng có thể muốn xem xét liệu bạn có thực sự muốn có hai cài đặt song song hay không - có thể thuận tiện hơn khi chạy một ảo hóa.


1
Các initramfs nên chọn hệ thống tập tin gốc để gắn kết trên cơ sở các tùy chọn kernel như thế nào root=. Do đó, hoàn toàn có thể có một initramfs hoạt động cho hai HĐH khác nhau (với các phân vùng gốc và phân vùng gốc khác nhau); bạn chỉ cần cẩn thận rằng các thành phần trong initramfs tương thích với cả hai hoặc các thành phần khác cho cả hai đều được chứa và chọn chính xác. Tuy nhiên, có thể dễ dàng hơn để tạo hai initramfs và nói với các mục Grub để tải chính xác.
Tom Hunt
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.