2015-03-04 15 views
6

Tôi có một số a.out mà tôi muốn chạy khi khởi động BeagleBone của mình. Nó thực sự là một máy chủ socket mà tôi muốn bắt đầu ngay sau khi các quyền hạn BeagleBone lên. Tôi đã cố gắng để đặt này trong /etc/init.d, nhưng nó đã không giúp đỡ. Tôi đã viết một kịch bản shell để chạy thực thi này, nhưng ngay cả điều đó cũng không giúp được gì.Thực thi tập lệnh khi khởi động bằng BeagleBone Black

Tôi có thể làm gì để chạy tập lệnh ngay khi khởi động?

+0

Chào mừng bạn đến với Stack Overflow! Tôi đã viết lại câu hỏi của bạn như vậy mà nó rất dễ dàng để chọn ra và tôi đã liên kết với hội đồng quản trị chỉ trong trường hợp bất cứ ai không quen thuộc với nó. –

+0

Chính xác phân phối Debian (và phiên bản) bạn đang sử dụng trên BBB của bạn là gì? Tôi hỏi, bởi vì những gì bạn cần phải tìm ra đầu tiên, đó là [init system] (http://en.wikipedia.org/wiki/Init) đang được sử dụng cho phân phối của bạn. Theo tôi nhớ, một số phiên bản của BBB đi kèm với [systemd] (http://en.wikipedia.org/wiki/Systemd). Nếu đó là trường hợp của bạn - bạn cần tìm ra cách tạo init script cho systemd, hoặc thay thế nó bằng sysv-init.Ngoài ra, hãy xem [câu hỏi này] (http://stackoverflow.com/questions/28141116/debian-etc-init-d-script-not-running). –

+0

Tôi tìm thấy một giải pháp, tôi đã viết một dịch vụ trong/lib/systemd để chạy tập tin a.out của tôi trên power-up, nó hoạt động tốt. Dù sao, cảm ơn sự giúp đỡ Sam –

Trả lời

8

Tôi mất khá nhiều thời gian để tìm ra điều này, nhưng với rất nhiều nghiên cứu, cuối cùng tôi đã tìm thấy những gì tôi đang tìm kiếm.

  1. Biên dịch mã bắt buộc.

  2. Tạo một kịch bản bash rằng sẽ tung ra mã lúc khởi động/khởi động

    cd /usr/bin/ 
    

    Loại nano scriptname.sh

    #!/bin/bash 
    /home/root/name_of_compiled_code 
    

    Lưu và cấp quyền thực thi

    chmod u+x /usr/bin/scriptname.sh 
    
  3. Tạo dịch vụ

    nano /lib/systemd/scriptname.service 
    
  4. Chỉnh sửa tệp ở trên khi cần thiết để gọi các chức năng khác nhau như mạng. Chỉ bật những mã này nếu mã cần dịch vụ cụ thể đó. Vô hiệu hóa những cái không mong muốn để giảm thời gian khởi động.

    [Unit] 
    Description=description of code 
    After=syslog.target network.target 
    [Service] 
    Type=simple 
    ExecStart=/usr/bin/scriptname.sh 
    [Install] 
    WantedBy=multi-user.target 
    
  5. Tạo liên kết tượng trưng để cho thiết bị biết vị trí của dịch vụ.

    cd /etc/systemd/system/ 
    ln /lib/systemd/scriptname.service scriptname.service 
    
  6. Make systemd tải lại tập tin cấu hình, bắt đầu dịch vụ ngay lập tức (giúp để xem nếu dịch vụ này được hoạt động bình thường) và cho phép các tập tin đơn vị quy định tại các dòng lệnh.

    systemctl daemon-reload 
    systemctl start scriptname.service 
    systemctl enable scriptname.service 
    
  7. Khởi động lại BBB ngay lập tức để xem nó có chạy như dự định hay không.

    reboot 
    

(Tất cả tín dụng đi vào http://mybeagleboneblackfindings.blogspot.com/2013/10/running-script-on-beaglebone-black-boot.html)

0

tôi theo 7 bước để tạo ra một dịch vụ nhưng nó không làm việc cho tôi, sau đó tôi đặt lệnh shellscript của tôi để chạy chương trình của tôi, trong /etc/rc.local và nó hoạt động.

#!/bin/sh -e 
# 
# rc.local 
# 
# This script is executed at the end of each multiuser runlevel. 
# Make sure that the script will "exit 0" on success or any other 
# value on error. 
# 
# In order to enable or disable this script just change the execution 
# bits. 
# 
# By default this script does nothing. 

cd /home/my_program_directory 
/home/my_program_directory/my_executable 

exit 0 
Các vấn đề liên quan