网络开启linux,网络启动笔记linux版

网络启动笔记linux版

关键字pxelinux,syslinux,openwrt,memdisk,无盘,启动

原理

计算机开机bios自检后运行网卡的pxe程序,这段程序会通过网络中的dhcp服务器获得ip地址信息和bootloader文件名

计算机分配到一个ip地址后就可以和其它计算机通信,根据获得的bootloader文件名从tftp服务器下载bootloader文件,并运行它。剩下的事情就是交给bootloader。bootloader或者会需要其它文件,至于它是怎么获得其它文件的,我不知道,只要道它能通过网络得到即可。等它将一切准备就绪,并下载linux内核到内存,将控制权交给linux后,linux是怎么管理文件的,这就是linux的事(通过nfs吧?还有windows无盘是怎么实现的,我就不清楚原理了)

必要条件

从原理上可以看出,要为其它计算机提供网络启动服务,就必需一个dhcp服务器,一个tftp服务器。

我用的是kubuntu 14.10,dhcp服务器软件是dhcpd,它的配置文件是/ect/dhcp/dhcpd.conf,内容如下:

default-lease-time 600;

max-lease-time 7200;

allow booting;

subnet 192.168.88.0 netmask 255.255.255.0 {

range 192.168.88.3 192.168.88.253;

option broadcast-address 192.168.88.255;

option routers 192.168.88.254;             # our router

option domain-name-servers 192.168.88.254; # our router, again

next-server 192.168.88.107;

filename "pxelinux.0"; # (this we will provide later)

}

其中最重要的是filename,它指定了bootloader文件名。

1\tftp服务器软件用的是tftpd-hpa,安装可以用如下命令

sudo apt-get install tftpd-hpa

2\建立tftpboot目录,作为服务器的目录

sudo mkdir ~/tftpboot

释放权限:(服务器目录,需要设置权限为777,chomd 777)

sudo chmod 777 ~/tftpboot

3.配置TFTP服务器

sudo gedit /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"

TFTP_DIRECTORY="/home/writer15/tftpboot"

TFTP_ADDRESS="[::]:69"

TFTP_OPTIONS="--secure"

其它最重要的就是TFTP_DIRECTORY,要把bootloader和它相关的文件放在这个目录里。

接下来是最重要的bootloader了,这部分资料相当少呀,只知道用的是pxelinux,它是syslinux的一部份。

从网络下载,并编译它。但是编译后,却不知怎么用,因为编译后的目录比较乱,也不知哪些文件有用,哪些没用……

查阅了网络的资料后,只能理出了个大概,因为网络上的资料都比较旧,新版的syslinux都模块化了……

但是经过不断的尝试,还是成功了。

我先卖个关子,容我去喝水回来继续/:D

syslinux编译后生成三个目录,bios,efi32,efi64,这三个目录结构上基本都一样。我需要的是bios目录下的文件,因为我的电脑还是从bios启动的(新出或者高端的主板好像现在是efi或者uefi的,好像配合操作系统,启动速度可以很快)。

将syslinux目录下几个文件复制到上面的~/tftpboot目录

bios/core/pxelinux.0

bios/com32/menu/menu.c32

bios/com32/menu/vesamenu.c32

bios/com32/elflink/ldlinux/ldlinux.c32

bios/com32/lib/libcom32.c32

bios/com32/libutil/libutil.c32

bios/memdisk/memdisk

这样一切就准备好了,剩下的只是配置pxelinux,这个不难,它的配置文件和grub差不多,相当容易,下面是我的测试配置文件

DEFAULT vesamenu.c32

MENU TITLE  HELLO-PXE

PROMPT 0

TIMEOUT 300

LABEL  Core-current.iso

LINUX     memdisk

INITRD    Core-current.iso

APPEND    iso

LABEL  winpe

LINUX     memdisk

INITRD    winpe.iso

APPEND    iso

LABEL  memtest86+-5.01.iso

LINUX     memdisk

INITRD    memtest86+-5.01.iso

APPEND    iso

LABEL DOS98

LINUX     memdisk

INITRD    DOS98.IMG

LABEL plpbt.iso

LINUX memdisk

INITRD plpbt.iso

APPEND iso

label openwrt

kernel openwrt-x86-generic-vmlinuz

label linux

kernel debian-installer/linux

append vga=normal initrd=debian-installer/initrd.gz ramdisk_size=11057 root=/dev/rd/0 devfs=mount,dall rw --

pxelinux相当强大,基本和grub相当,从img文件启动,从iso文件启动,从内核文件启动……

END;

后话:我研究网络启动的原因是因为想从网络启动一个系统,之后DD openwrt的ext4 img文件到硬盘上,这样我就不用拆硬盘下来……

有空也研究下网络克隆,这样装机什么的,也方便。

阅读(598) | 评论(0) | 转发(0) |

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值