Cách khởi động Ubuntu từ BIOS thức dậy và nếu không thì khởi động Windows


2

Tôi có một hệ thống khởi động kép. Phân vùng Ubuntu của tôi cần tự động khởi động trên đánh thức theo lịch trình BIOS (và Wakeonlan nếu có thể) Nếu không, tôi muốn khởi động vào Windows theo mặc định. (nút nguồn)

Làm thế nào người ta có thể cấu hình hệ thống để khởi động vào Ubuntu chỉ sau khi thức dậy BIOS hoặc Wakeonlan, trong khi nếu không thì mặc định là Windows? Có thể cấu hình hoặc script grub để làm điều này?


Thay vì chỉ nhìn vào GRUB, bạn cũng có thể kiểm tra cài đặt chương trình cơ sở của mình. Máy tính xách tay ThinkPad của tôi có một danh sách ưu tiên khởi động khác khi được bật bởi WoL.
Daniel B

Câu trả lời:


0

Điều này đã được hỏi một số lần trong nhiều năm mà không có câu trả lời thỏa đáng:

Được biết, một hệ điều hành có thể phát hiện lý do đánh thức. Có vẻ hợp lý khi một cái gì đó giống như grubcó thể làm tương tự, nhưng điều này hiện không phải là trường hợp.

"Giải pháp" duy nhất tôi có thể tìm thấy liên quan đến việc thiết lập grubkhởi động kép với Linux làm mặc định. Thức dậy như bình thường. Đăng nhập vào máy tính (từ xa hoặc cách khác) và tự khởi động lại vào Windows với một cái gì đó như sudo grub-reboot Windows. Thiết lập và sử dụng được mô tả ở đây .


0

Hai (hoặc ba) cách khác nhau

Sử dụng mạng khởi động thông qua máy chủ PXE.

Tôi đã sử dụng một mẹo như thế này cho các trạm windows dự phòng (có ntfsclonehoặc partclone) trong khi người dùng đi vắng, vào ban đêm.

  1. Tạo máy chủ khởi động PXE (dhcpd + tftpd) để khởi động qua mạng (Bạn có thể tạo menu khởi động cụ thể cho từng máy tính trên mạng hoặc tạo nhóm. Menu khởi động mạng có thể trỏ đến ổ cứng cục bộ.)

  2. Chuẩn bị hai menu khởi động khác nhau trên máy chủ này: một mặc định cho ubfox và một mặc định khác cho cửa sổ.

  3. Liên kết menu khởi động mặc định với cửa sổ sẽ được phục vụ bởi máy chủ pxe.

  4. Chuẩn bị một wakeup kịch bản cho

    1. ) Liên kết menu khởi động mặc định với Ubuntu để được phục vụ bởi máy chủ pxe.
    2. ) Gửi wake-on-lan tín hiệu để đánh thức máy tính lên
    3. ) Đợi yêu cầu menu khởi động trong nhật ký TFTP (quan tâm đến thời gian chờ và giới hạn, giả sử ngoại lệ).
    4. ) Liên kết menu khởi động mặc định với cửa sổ sẽ được phục vụ bởi máy chủ pxe.
  5. Bạn thậm chí có thể thử chạy tương tự thông qua crontab để được đồng bộ hóa bởi BIOS wakup, nhưng nếu trong crontab, bạn chỉ có thể chạy tập lệnh được xác định tại 4..

Điều này sẽ làm công việc.

(Không phải là máy chủ khởi động pxe nhẹ và có thể được cài đặt ngay cả trên raspberry pi, NAS bị hack hoặc trên bộ định tuyến DD-WRT, để lấy mẫu.).

Sử dụng dmidecodethông tin

Bạn có thể sử dụng dmidecode để chạy grub-reboot windowskhi khởi động từ công tắc nguồn.

Chỉ cần tạo một tập lệnh chứa nội dung như:

/bin/sh
dmidecode  | grep -q 'Wake-up Type: Power Switch' && echo grub-reboot windows
reboot

Bạn có thể chạy tập lệnh này ở mỗi lần khởi động, bằng cách thêm chúng vào crontab bằng @rebootchỉ thị.

(Nota: cho grub-reboot, bạn có thể phải chỉnh sửa /etc/default/grub. Xem man grub-reboot)

Điều này sẽ làm việc nhưng sẽ tăng thời gian khởi động windows rất nhiều!

Để tránh điều này, bạn có thể tạo một initramdiskwich đặc biệt có thể làm công việc này, nhưng điều này không đơn giản.

Sử dụng ipxe(có thể)

Tôi không biết công cụ này , nhưng tôi nghe thấy những phản hồi tốt.

iPXE là phần mềm khởi động mạng nguồn mở hàng đầu. Nó cung cấp một triển khai PXE đầy đủ được tăng cường với các tính năng bổ sung


1
Tại sao bạn hạ cấp này, đây là một câu trả lời đúng (được sử dụng ở đâu đó và hoạt động tốt)
F. Hauri

Giải pháp này đã chỉ khởi động Linux khi nó đã được ngủ đông trước đó. Không nơi nào OP chỉ ra rằng đây sẽ là trường hợp.
Daniel B

Nếu ai đó có thể đăng bình luận về iPXE, họ sẽ được chào đón!
F. Hauri
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.