2014年7月1日 | 标签: , , ,

台式机型号Dell Vostro 230,网卡在Linux不能工作(Arch 201406 + Ubuntu 14.04)。

ip link 能够显示端口

解决方法如下:

rmmod tg3
modprobe broadcom
modprobe tg3

问题在于kernel module加载到顺序不对。参考 https://bbs.archlinux.org/viewtopic.php?id=110026

至于启动时调整加载顺序,上面到帖子里rc.conf现在已经不再使用。其他到方法如下,没有十足把握:

1. vi /etc/modprobe.d/blacklist 将驱动加入黑名单,这样udev就不会自动加载了

vi /etc/modules 再将驱动加入这个文件

2.  vi /etc/initramfstools.d/modules 添加需要加载到驱动顺序,然后update
Sudo initramfs-update -k all -u

还是驱动问题,能用就行了吧……

知其然,知其所以然。得搞清楚这个module加载过程以及udev。

参考:

http://paulgraydon.co.uk/blog/2009/01/26/changing-the-order-modules-load-in-ubuntu/

http://www.linuxquestions.org/questions/linux-general-1/module-load-order-648599/

1 条评论 (250 views)
2014年6月30日 | 标签: ,

首先我觉得arch  wiki的english和中文版本都写得不错,安装之前仔细看一遍还是有必要的。然后再到网上搜搜别人的安装教程/记录,一切就都搞定了。

============

安装时使用的语言和键盘布局设置,中文用户不需要

设置网络连接(没有网络就不要安装了)
# ip link
# ip addr
# dhcpcd
# ping -c 3 xxx.com

# iw dev
# iwconfig
# wifi-menu
# netctl / wpa_supplicant

==================
分区 格式化 挂载

这里首先要决定分区表类型是GPT还是MBR,然后选择不同的工具

# fdisk, gdisk, cfdisk, cgdisk, parted
# lsblk -f

——————————–
# mkfs.ext4 /dev/sdaX

swap区
# mkswap /dev/sdaX
# swapon /dev/sdaX

UEFI用户格式化ESP分区(整个硬盘全新安装才需要
# mkfs.vfat -F32 /dev/sdaX

——————————–

注意要按照顺序挂载,先挂载根分区到/mnt
# mount /dev/sdaX /mnt

然后挂载/home分区和其余单独分区(/boot,/var等)
# mkdir /mnt/home
# mount /dev/sda2 /mnt/home

如果是UEFI主板,挂载UEFI分区
# mkdir -p /mnt/boot
# mount /dev/sdXY /mnt/boot

或者像这样挂载ESP分区
# mkdir -p /mnt/boot/efi
# mount /dev/sdaX /mnt/boot/efi

这里存在一个问题,关于ESP分区的挂载点问题。见此贴的讨论:
EFI System Partition mount point

后面一种挂载的ESP分区安装grub后的目录路径大致如下,ubuntu就是这样的
grub的在ESP分区中的boot loader文件 /boot/efi/EFI/grub
grub的主目录 /boot/grub/

================================
选择安装源
# vi /etc/pacman.d/mirrorlist

mirrorlist文件也会被pacstrap复制到新系统,所以现在就可以设置好
国内的 ustc、tsinghua有ipv6地址,放到最前,然后是163、hust两个,这5个放到最前面已经够了

安装基本系统
# pacstrap -i /mnt base base-devel

================================
生成 fstab
# genfstab -U -p /mnt >> /mnt/etc/fstab
# vi /mnt/etc/fstab 检查一下

================================
Chroot 到新系统,进行新系统的配置
# arch-chroot /mnt /bin/bash

================================
地区编码
# vi /etc/locale.gen

取消注释 en_US.UTF-8,zh_CN.UTF-8,zh_CN.GBK

生成指定的本地化文件,每次glibc更新之后也会运行locale-gen一次。
# locale-gen

locale.conf默认不存在,一般设置LANG项就行了,它是其它设置的默认值。
# vi /etc/locale.conf
LANG=en_US.UTF-8
警告: 不推荐在此设置中文locale,会导致tty乱码;

================================
时区
# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

================================
时间设置
以前搞清楚过,现在又不会了! google linux 时间设置

# hwclock –systohc –utc
# hwclock –systohc –localtime

================================
Hostname
# echo xxxx > /etc/hostname

# vi /etc/hosts 进行相应修改

观点一:现在已不需编辑/etc/hosts。The step is not required for a base installation since /etc/nsswitch.conf ships with “hosts: files dns myhostname” where nss-myhostname takes care of the local hostname resolution.
观点二:按官方论坛帖所述,有必要在/etc/hosts中配置hostname,因為一些应用程式需要它;

================================
配置网络

# systemctl enable dhcpcd
# systemctl enable dhcpcd@interface_name.service

【netctl】
# cd /etc/netctl
# cp examples/ethernet-static my_network

# vi my_network
修改Interface,Address,Gateway和DNS

# netctl enable my_network

无线网络
# iwconfig
# wifi-menu wlp3s0

# pacman -S iw wpa_supplicant wireless_tools netctl
# pacman -S dialog

配置网络的工具和命令真多,有点眼花缭乱的感觉!!

================================
创建初始 ramdisk 环境
# mkinitcpio -p linux

================================
设置 Root 密码
# passwd

================================
安装grub2

# pacman -S grub efibootmgr dosfstools os-prober

# grub-install –target=x86_64-efi –efi-directory=/boot/efi –bootloader-id=Grub –recheck

# grub-mkconfig -o /boot/grub/grub.cfg

os-prober会自动检测硬盘中安装的其他程序,这里因为是从U盘启动的,检测有点问题,重启后再次运行就检测到了。
另外可以手动加入菜单menuentry,编辑40_custom,也挺方便。

我发现如果还要安装ubuntu的话,这里貌似可以不安装grub了,因为ubuntu还是要安装。
================================
退出重启

#umount /mnt/boot/efi
#umount /mnt

# exit

# reboot

================================
安装完成后的工作
添加用户
显卡、声卡驱动
中文字体、输入法
图形界面 X

应用软件

 

参考:【原创】在预装Win8 (UEFI)的ThinkPad上加装ArchLinux系统

没有评论 (252 views)
2014年6月30日 | 标签: , , ,

终于搞定了启动U盘,下面可以进行安装了。安装ArchLinux是必须要联网的,所以首先进行网络配置。

我的电脑是Thinkpad E440,使用arch 201406的iso进入后内核版本是3.14.4-1-ARCH,然后我发现我的无线和有线网卡都不能正常工作!

问题描述

lspci -v

有线网卡:Ethernet controller: Realtek Semiconductor RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 10)

dmesg | grep r8169

灯不亮,默认的驱动是r8169,报错“can’t disable ASPM; OS doesn’t have ASPM control”

无线网卡:Network controller: Realtek Semiconductor Device b723

直接没有驱动可用,后来才知道这无线网卡的驱动是rtl8723be,而3.14的kernel里面还没有包含这个驱动。

iwconfig —-> no wireless extensions

ip link —-> 只有两个接口,lo和enp4s0

 

解决过程

1、查看Arch wiki和google了N次,应该手动加载驱动,而r8169不能正常工作则用r8168替代。

驱动的加载方式根据Makefile、install.h、PKGBUILD的文件的内容就知道大概怎么做了。

这位博主最近的文章“Fedora 20 的 r8168 与 rtl8723be 驱动”几乎与我的问题一样,直接下载来用无效。去arch官方repository找编译好的驱动,也不行。问题在于内核版本不一致,报错“disagrees about version of symbol module_layout”。所以只能在虚拟机中安装一个3.14.4-1-ARCH内核的环境,从以上源文件编译再安装了。

 

2、VMware使用UEFI启动,需要创建一个win8 64的虚拟机,然后修改vmx文件,加入一行“firmware=“efi””就可以了。但是创建的时候选择linux是不行的。

让虚拟机从U盘启动,按着教程安装完毕(耗时操作!),结果内核变成3.15了!原来arch的ISO只是一个启动环境,安装的基础系统都是从网络下载的,而arch的内核已经滚动升级到3.15版本了。没办法只能想办法让内核降级了!

在arch wiki的downgrade package里面找到了相关方法,但是我没有编译好的linux-3.14.4.内核二进制包,在网上怎么找都找不到!最后终于在ARM找到了——这个地方ARM不是CPU,而是Arch Rollback Machine,感谢做着东西的家伙。下载文件,执行命令,成功降级。

pacman -U linux-3.14.4xxx.pkg.tar.xz linux-headers-3.14xxx.pkg.tar.xz

然后就是编译。因为U盘作为启动的iso disk,是read-only的,所以拷贝到其他地方编译,再拷回去就可以了(…)。使用命令行的ftp命令与宿主机传递文件,还是很方便的。还有很多地方要用到vi命令,不记得就马上查一下。

 

3、安装rtl8723be无线网卡驱动(下载:rtl8723be-for_3.14.4-1-ARCH.zip),运行wifi-menu后就可以连接上无线网络了。

但是r8168驱动还是不能用!试了好几个AUR,以及官方的dependencies linux>=3.15 & linux<3.16的package也拿来编译,试试都不行。其实他们的源码都是一样的,不知道这些个AUR有什么不同。

最后经过不懈的尝试和google,终于搞定。

ethtool -s enp4s0 autoneg off
dhclient enp4s0

我在arch论坛的跟帖:https://bbs.archlinux.org/viewtopic.php?id=176413&p=2

最后我发现r8169的问题在ubuntu中也存在,只要执行第一条命令就可以了。

在驱动这里的折腾耗费了我大量时间,这也是linux不那么适用于大众的一个原因吧。

4 条评论 (453 views)
2014年6月30日 | 标签: , , , ,

1、准备引导文件(512字节)。这是对于MBR而言,Bootice就可以干这活,还有grub4dos本身也还类似的文件xxx.mbr。下面的命令适用于linux

dd if=/dev/sda3 of=/mnt/hd/linux.bin bs=512 count=1 

2、使用bcdedit添加启动选项(administrator账户运行命令行)。这里的application我想用os-loader来测试,但是不清楚该怎么做……

bcdedit /create /d “Linux” /application BOOTSECTOR

这一步会产生一个{ID},记下来备用

3、为此{ID}设置基本参数

bcdedit /set {ID} device partition=c:

bcdedit /set {ID}  path \linux.bin

4、添加到启动列表(这一步之前还不会显示此选项!)

bcdedit /displayorder {ID} /addlast

5、修改倒计时时间

bcdedit /timeout 30

6、删除此启动项

bcdedit /delete {ID}

最后windows7会自动加载windowsXP时代的boot.ini文件,所以在这个文件中加一行“c:\linux.bin=”Linux”是最简单的方法了。Windows8就不行了,bcd文件已经放到了ESP分区。

参考资料:

http://alien.slackbook.org/blog/adding-linux-to-the-windows7-boot-menu/

http://www.kisa747.com/windows7-grub4dos.html

没有评论 (228 views)
2014年6月29日 | 标签: , , , , , ,

其实在这之前我已经安装过好几次archlinux了,只是时间长了我就又不记得了。我也好久不用linux了 – -||。

1、下载镜像与前期准备

archlinux-2014.06.01-dual.iso

md5: 6539A93751C388DB424B2600290A2B4F

arch wiki 有好几个安装指南,一步一步阅读就差不多了。不过那个beginner’s guide 还真够长的,简化版的安装指南又有点太简单了。

2、制作启动U盘,从U盘安装ArchLinux

我安装过不少系统,各有各的安装方法,但是从N年前我就不再刻盘安装了,还是U盘用起来最方便。

Windows 7/8 我一般启动相应的32bit/64bit WinPE,用虚拟光驱载入镜像,然后双击安装。XP重启后还要读取光驱,所以需要解压出来硬盘安装——虽然XP已经被淘汰了。

老毛桃的WinPE是使用grub4dos引导的,可以直接在内存中载入ISO,所以Ubuntu这样安装最简单直接了。另外还可以用initrd和vmlinuz引导,也可以简单暴力的写入硬盘镜像。

阅读全文…

没有评论 (367 views)
2014年3月13日 | 标签: ,
没有评论 (682 views)
2014年1月16日 | 标签: , , , , , ,

UEFI/GPT相关的知识

维基百科:Unified Extensible Firmware Interface  统一可扩展固件接口

无忧论坛的帖子:http://bbs.wuyou.com/forum.php?mod=viewthread&tid=299643&extra=page%3D1 比较靠近实际,易操作

UEFI支持x64和x86,但是x86的UEFI还是很少见的,而且一般UEFI启动x86的时候就直接转到传统bios兼容模式了。

GPT是UEFI下面的一个标准,但是GPT是可以单独使用的。

UEFI与传统BIOS最大的不同可能就是,UEFI是从文件启动的,再也不用写入什么MBR了。这对U盘启动来说特别方便。

windows 8

原来windows 8 中文版不能使用组策略和被远程桌面连接,无法用这个版本了。用了下windows 8,能感觉到微软是想要windows 8 往移动互联网方向发展的,有一些手机系统的特征。

联想OEM出厂分区

发现很简单,就是windowsRE分区+ESP分区(+MSR分区+)+OS分区+…+恢复镜像分区。

WindowsRE分区用来系统恢复,U盘winPE可以替代;支持UEFI的操作系统会将引导文件写入ESP分区,所以ESP删除也没问题;MSR目前根本没用;恢复镜像带一大堆垃圾软件,不如不要,重装来得清爽。

推荐的UEFI/GTP驱动器分区

关于windowsRE还是微软官方的资料好用,参见 部署 Windows RE 以及链接出去的N多页面。还有几个命令行工具的使用方法diskpart、dism、reagentc。

还有几个问题:

ESP分区除了存储启动程序等efi应用,还是可以存放efi驱动,没见过这种驱动?

UEFI启动的顺序由ROM里的变量控制,这些变量可以通过UEFI bios进行修改(联想貌似没有设置,也没提供uefi shell。。。),这些变量的内容具体到文件还是驱动器?

没有评论 (841 views)
第1页/共16页12345...10...最后一页»