1 điểm bởi GN⁺ 2024-07-03 | 1 bình luận | Chia sẻ qua WhatsApp

Khởi động Linux từ Google Drive

Nhưng bằng cách nào?

  • Muốn tự giải quyết mà không cần thiết bị phụ trợ
  • Sử dụng FUSE để thiết lập hoạt động như một trình điều khiển hệ thống tệp trong không gian người dùng
  • Cần cài đặt chương trình FUSE vào initramfs của nhân Linux và cấu hình mạng

Quy trình khởi động Linux

  1. Firmware (BIOS/UEFI) khởi động và tải boot loader
  2. Boot loader tải kernel
  3. Kernel giải nén hệ thống tệp tạm thời vào RAM để cung cấp công cụ gắn kết hệ thống tệp thực
  4. Kernel gắn kết hệ thống tệp thực và chuyển tiến trình sang hệ thống init chạy trên hệ thống tệp mới

Bản chứng minh khái niệm

  • Cần initramfs có hỗ trợ mạng và chứa binary FUSE phù hợp
  • Có thể dễ dàng build initramfs tùy chỉnh bằng Dracut
  • Quyết định build dựa trên Arch Linux

Google can thiệp

  • Sử dụng dự án google-drive-ocamlfuse để mount Google Drive bằng FUSE
  • Phát sinh nhiều vấn đề: symbolic link, hard link, tốc độ, quyền truy cập, v.v.
  • Tự tạo symbolic link thủ công và điều chỉnh thêm các thiết lập khác để giải quyết vấn đề

Chạy trên phần cứng thực tế

  • Sử dụng đúng driver Ethernet và thay đổi cấu hình mạng
  • Build tệp EFI tích hợp trên USB drive để thử nghiệm trên phần cứng thực tế

Kết luận

  • Dự án này cho thấy tiềm năng của điện toán cloud-native
  • Có nhiều ứng dụng khả thi như khởi động Linux từ SSH hoặc từ kho Git

Ý kiến của GN⁺

  • Đây là một thử nghiệm thú vị nhằm khám phá khả năng của điện toán cloud-native
  • Có thể học được cách giải quyết nhiều vấn đề phát sinh trong quá trình khởi động Linux từ Google Drive bằng FUSE
  • Cần cân nhắc các vấn đề về hiệu năng và độ ổn định của hệ thống tệp dựa trên đám mây
  • Các dự án khác cung cấp chức năng tương tự có thể kể đến như gitfs
  • Khi áp dụng công nghệ mới, cần thận trọng xem xét các khía cạnh như hiệu năng, độ ổn định và bảo mật

1 bình luận

 
GN⁺ 2024-07-03
Ý kiến trên Hacker News
  • Gọi kỹ thuật này là "khởi động" thì chưa chính xác, vì kernel thực ra đã được khởi động sẵn

    • Sẽ công nhận nếu hỗ trợ "mounting" google-drive được thêm vào grub
    • Đây là việc đặt rootfs ở một nơi kỳ lạ
    • Nhân tiện, dự án của tôi là đặt rootfs của NixOS trên IPFS
  • Trước đây từng có thể khởi động Sun Solaris qua HTTP

    • Nó được gọi là wanboot
    • Đây là một tùy chọn firmware OpenBoot PROM trên máy SPARC
    • Ví dụ cấu hình network boot:
      ok setenv network-boot-arguments dhcp,hostname=myclient,file=https://192.168.1.1/cgi-bin/wanboot-cgi
      ok boot net
      
    • Nó tải initramfs và kernel qua (liên)mạng
    • Liên kết tài liệu liên quan:
  • Khởi động Linux bằng bittorrent thì sao?

    • Ví dụ nbdkit-torrent-plugin
    • Vấn đề là khi khởi động Linux từ thiết bị có độ trễ cao, kernel timeout các yêu cầu I/O quá nhanh (khoảng 60 giây)
    • Cần tăng thời gian timeout lên
  • Nếu khởi động một rootfs vài megabyte từ initramfs cục bộ, thì có thể gọi là khởi động từ xa không?

  • Điều mọi người thực sự muốn, đặc biệt trong các hệ thống nhúng, là thời gian khởi động tính bằng giây

    • Đây là một bài toán khó, nhưng có vẻ không ai quan tâm đến nghiên cứu CS để giải quyết nó
  • Có nhắc đến việc khởi động từ S3

    • Đổi sang Google Drive thì độ trễ còn tăng thêm
    • Dù vậy vẫn làm tốt
  • Khi lần đầu lắp cable modem ở nhà, tôi từng có thể dùng đĩa mềm khởi động để cài BSD qua mạng

    • Hồi đó đúng là đáng kinh ngạc
    • Không chắc bây giờ còn làm được không
    • Có lẽ khi đó các file được host qua FTP hoặc TFTP
    • Ngày nay hầu hết là file ISO
  • Tôi từng làm điều tương tự: khởi động từ kho RPM trên DVD cài đặt Tumbleweed

    • Mục tiêu ban đầu là viết một hệ thống file fuse để mount các gói RPM
    • Tôi muốn xem có thể đi được xa đến đâu
    • Cuối cùng đi được khá xa:
    • Hệ thống khởi động vào một desktop hoạt động được, và trông như thể mọi gói trên DVD đều đã được cài đặt
  • Trên Windows, người ta thường làm việc này bằng Citrix

    • Nó được gọi là pvs
    • Bạn thực hiện một lần pxe boot nhỏ rồi stream image máy chủ Windows
  • "Tôi chìm trong cơn mê loạn, và giữa hàng nghìn năm công sức lập trình cùng những tiếng thét điên cuồng, tôi tìm thấy kiệt tác của mình"

    • Xứng đáng được đề cử Pulitzer