|
FireWRT运行debian系统[申精]
发表于 2015-3-26 14:26:45
浏览:24778
|
回复:27
打印
只看该作者
[复制链接]
楼主
本帖最后由 小c 于 2015-3-26 15:35 编辑
最近拿到了一块firewrt的工程板子,十分强大,突发奇想,能不能在MT7621上面跑其他linux系统。
一开始想跑ubuntu看看的,但是ubuntu没有mips架构的文件系统。所以只能试试跑debian。
参考了恩山上的这个帖子:
http://www.right.com.cn/forum/thread-50766-1-1.html
Let's start!
debian的文件系统不大,但是想放在板子上的flash是不可能的。只能放在u盘。 (或者SD卡)
先把u盘格式化为ext4。用mkfs.ext4就可以了。格式化后就可以用来制作文件系统了。
查了一下资料,制作debian文件系统是使用debootstrap来制作的。一开始用电脑来制作,但是后来发现这是没法成功的。(至于为什么等会再解释)
所以只能在路由器上安装debootstrap来制作文件系统。
顺便吐槽一下,因为firewrt的镜像库还没搭建好,官方的镜像库又有点问题。所以想要什么软件就只能自己编译了。
make menuconfig 中选中debootstrap。 (ext4 , usb storage这些肯定要选的,就不多说了)
另外还要注意的是,内核必须配上MIPS FPU Emulator 。 执行make kernel_menuconfig 来配置。
设置好了就可以编译了。
烧写编译好的固件后。连上网络,把u盘mount一下,就可以开始制作debian的文件系统了。
执行:
debootstrap --arch mipsel --variant=buildd wheezy /mnt/ http://ftp.cn.debian.org/debian/
来到这里要说一下,刚刚为什么说要在电脑上不能制作,运行debootstrap的时候,过一会儿就会自动chroot去完成下一阶段的软件安装,因为我们下载的是mipsel的文件系统,所以如果在x86的电脑上,执行到这里就会出错,文件系统不完整。(在这里纠结了很久)
下载完后就可以尝试一下chroot切换过去了。
chroot /mnt /bin/bash
su root
mount proc proc /proc
mount sysfs sysfs /sys
安装必要的软件:
apt-get updates
apt-get install vim
apt-get install isc-dhcp-client
apt-get install iputils-ping
apt-get install ifupdown
apt-get install net-tools
到此,文件系统就做好了。u盘好好拿稳。
下一步,我们要抛弃openwrt的文件系统。让debian自动启动。
因为openwrt都是把驱动编译成内核模块的,如果我们不用openwrt,这些内核模块就无法启动。所以我们要把启动buildin。
clean一下openwrt的配置。make menuconfig 把之前选过的usb,ext4这些通通去掉。
然后我们开始配置一下内核。
make kernel_menuconfig . 把里面 usb , ext4 这些配置全部配置成 y 。
大概有一下几个:
CONFIG_BLK_DEV_SD=y
CONFIG_EXT4_FS=y
CONFIG_FS_MBCACHE=y
CONFIG_JBD2=y
CONFIG_MIPS_FPU_EMULATOR=y
CONFIG_NLS=y
CONFIG_SCSI=y
CONFIG_USB=y
CONFIG_USB_COMMON=y
CONFIG_USB_STORAGE=y
CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_PCI=y
CONFIG_USB_SUPPORT=y
CONFIG_USB_XHCI_PLATFORM=y
CONFIG_USB_MT7621_XHCI_PLATFORM=y
CONFIG_USB_PHY=y
这两个配置要去掉
CONFIG_CMDLINE="rootfstype=squashfs,jffs2"
CONFIG_CMDLINE_BOOL=y
这里说明一下,为什么把usb从openwrt中去掉,又在内核中配置上呢? 因为在openwrt中配置,是配置为m的,我们不需要op的文件系统,所以没法加载到usb驱动。
最后配置一下CMDLINE。
编辑 target/linux/ramips/dts/FIREWRT.dts
把 bootargs 换成:
bootargs = "console=ttyS0,57600 root=/dev/sda1 rw rootwait init=/sbin/init";
这样启动的时候就会从u盘引导文件系统了。
配置好了,就可以编译了。虽然我们只要内核。但是为了方便就整个op编译吧。
make V=s -j4
编译好了,内核的位置在:
build_dir/target-mipsel_1004kc+dsp_uClibc-0.9.33.2/linux-ramips_mt7621/firewrt-kernel.bin
烧写进开发板。 由于没有了op的文件系统,所以这个内核应该很小,很快就烧完了。
下面是见证奇迹的时刻吧!!!!!!
最后,因为网卡什么的一直没调通,郁闷了很久。 有哪位大神可以指点一下~
附一个编译好的内核:
|
|