linux学习笔记

本文记录了LFS (Linux From Scratch) 和 BLFS (Beyond Linux From Scratch) 的安装过程与常见问题解决方法,包括目录配置、权限理解、网络配置、启动脚本修改等内容。
 

1.《鸟哥的Linux私房菜》P219:“Linux的档案属性与目录配置”讲到的权限很有用,只是有些地方不是很明白。有空再琢磨琢磨,实践实践。

2.《鸟哥的Linux私房菜》P238:home目录的缩写符号是“~”,比如:
“~”表示当前用户的home目录;
“~soft”则表示soft用户的home目录。

3.《鸟哥的Linux私房菜》P238:书上说/bin、/usr/bin和/usr/local/bin里面是用户执行的二进制文件,而/sbin、/usr/sbin和/usr/local/sbin里面则是系统管理员执行的二进制文件。但是我用ls -al查看文件权限发现,两种目录里面文件的权限好像没什么区别,为什么?

4.《鸟哥的Linux私房菜》P251:“inode本身并不纪录文件名,而是记录档案的相关属性,至于文件名则是记录在目录所属的block 区域!”--这可以解释笔记1中关于权限的一些疑问。

5. 《LFS-BOOK-6.8》P33 - 2.4. Mounting the New Partition
    在/etc/environment文件中添加一行:
    LFS="/mnt/lfs"
    重启后,所有用户(包括su)都拥有这个环境变量。
    此外,Ubuntu基于Debian,其sudo在执行命令时出于安全考虑,会将环境变量重置。
    因此,在作系统相关操作时,我觉得还是使用su的好。
    相关参考:
    http://www.troubleshooters.com/linux/prepostpath.htm
    http://serverfault.com/questions/62178/how-to-specify-roots-environment-variable

6. 《LFS-BOOK-6.8》P33 - 2.4. Mounting the New Partition
    该小节所讲的配置命令,在宿主机重启后,都会被重置。书中并没有提到这个问题。
    似乎有必要写一个脚本,在每次重启后运行:

cat > mount-lfs-part.sh << "EOF"
#!/bin/bash

# Mount the root partition for LFS.
# Modify /dev/sda14 to meet the actual partition, if needed
mount -v -t ext3 /dev/sda14 $LFS

# Mount other partitions for LFS.
# Modify /dev/<xxx> to meet the actual partition, if needed
mount -v -t ext3 /dev/sda16 $LFS/boot
mount -v -t ext3 /dev/sda17 $LFS/home
mount -v -t ext3 /dev/sda18 $LFS/usr
mount -v -t ext3 /dev/sda19 $LFS/opt
mount -v -t ext3 /dev/sda20 $LFS/tmp

# enable swap partition
# Modify /dev/sda15 to meet the actual partition, if needed
#swapon -v /dev/sda15

EOF

7. 板载网卡RTL8101E在Ubuntu 11.04下的驱动安装
    由于Ubuntu 11.04会错误地为该网卡安装r8169驱动,导致无法使用,需要手动安装。
    (1)到Realtek主页www.realtek.com.tw下载该网卡的Linux驱动。
    (2)将驱动包解压后安装提示安装,安装完成后即可使用以太网。但此时如果重启Ubuntu,仍会重新加载r8169驱动。
    (3)将r8101添加到/etc/modules文件,将blacklist r8169添加到/etc/modprobe.d/blacklist.conf文件,然后运行update-initramfs -u。此时r8101将在重启时加载。
    参考:http://askubuntu.com/questions/24334/how-do-i-permanently-load-a-kernel-module

8. Ubuntu 11.04 GRUB启动顺序修改
    (1)查看/boot/grub/grub.cfg文件,其启动项具有以下结构:

menuentry "入口名称" {
}

submenu "入口名称" {
menuentry "入口名称" {
}
}

    同时可以使用命令cat /boot/grub/grub.cfg | grep menuentry获得列表。
    (2)确定位置后,编辑/etc/default/grub文件
    将GRUB_DEFAULT的值改为第(1)步确定的位置,从0开始。
    (3)运行update-grub重新生成/boot/grub/grub.cfg文件。

9. 《LFS-BOOK-6.8》P97 - 6.4. Entering the Chroot Environment
    每次离开chroot环境后(如重启),都要重新运行6.2.2. Mounting and Populating /dev和6.2.3. Mounting Virtual Kernel File Systems里面的内容,然后进入chroot。
    进入chroot后,提示符是“I have no name!”。要根据6.6. Creating Essential Files and Symlinks的方法将其修改。
    不过最后好像发现不用每次都运行exec /tools/bin/bash --login +h,原因未明。
    因此,写了个脚本enter_chroot_env.sh,每次需要时运行:

#Mounting and Populating /dev
mount -v --bind /dev $LFS/dev

#Mounting Virtual Kernel File Systems
mount -vt devpts devpts $LFS/dev/pts
mount -vt tmpfs shm $LFS/dev/shm
mount -vt proc proc $LFS/proc
mount -vt sysfs sysfs $LFS/sys

#Entering the Chroot Environment
chroot "$LFS" /tools/bin/env -i HOME=/root TERM="$TERM" PS1='\u:\w\$ ' PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin /tools/bin/bash --login +h

#Remove the "I have no name!" prompt
#exec /tools/bin/bash --login +h

10. 《LFS-BOOK-6.8》6.64. Cleaning Up
   从这一节开始,进入chroot命令改为
chroot "$LFS" /usr/bin/env -i HOME=/root TERM="$TERM" PS1='\u:\w\$ ' PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/bash --login
    因为此时不再需要/tools目录里面的程序。将修改更新到脚本enter_chroot_env.sh。

11. Linux系统备份命令实例:
进入/mnt目录
time tar -cjvvpf /home/zoogar/lfs_bak/lfs.tar.bz2 lfs > /home/zoogar/lfs_bak/tar.log

另一例子
tar --preserve-permissions --preserve-order --exclude=dev --exclude=lost+found -cjvvf /home/ux30/lfs/ROOT.tar.bz2 lfs
解压时要加上--preserve-permissions --preserve-order

对于/分区,解压后需要创建/dev目录及Nodes,详见第21点。

12. 《BLFS-6.3.pdf》P54 - Creating Log Files During Installation
    ( <command> 2>&1 | tee compile.log && exit $PIPESTATUS )
    此命令格式的效果是:执行<command>命令,将错误信息重定位到标准输出,同时向complie.log文件输出执行信息,exit $PIPESTATUS保证了整个命令作为子shell时(用括号括起来),其返回值不是tee命令的返回值,而是<command>命令的返回,值。

13. 《BLFS-6.3.pdf》P54 - File Redirection to Automate Input
    使用文件重定位输入来自动回答编译时的询问,从而达到执行自动化。如:
    make check < ../cups-1.1.23-testsuite_parms

14. 《BLFS-6.3.pdf》P55 - Using yes to Automate Input
    格式:yes '[string]' | <command>
    yes命令默认输出y。当string为空时,相当于回车。

15. 《BLFS-6.3.pdf》P56 - File Redirection to Automate Output
    对于需要翻页的输出,可以通过重定位实现自动跳过。例如:
    ls -l /usr/bin | more > redirect_test.log 2>&1
    进一步,某些license agreement需要翻页,并且在最后要按y来同意。可以这样实现:
    yes | <command> > command.log 2>&1

16. 公司联想电脑做LFS6.8遇到的Kernel panic- not syncing: VFS: Unable to mount root fs on unknown-block (xx,xx)问题解决(2011.9.23上午)
    在网上查了一下,这类问题的原因也是多种多样。尝试了网上的许多办法后,都无法解决。
    奇怪的是,家里的华硕EeePC 1000HE没有碰到这个问题,LFS系统很快就做好了。

    折腾了大概一个星期,还是无果。今天上午无意中看到一篇帖子:http://ubuntuforums.org/showthread.php?t=1618195
    帖子里说:often seen recently, check your bios to set it on: AHCI or better on COMPATIBLE if you have the choice (check for bios update too)
    于是我决定看看BIOS。将联想BIOS里面的SATA模式由IDE改为AHCI,启动LFS系统,成功!
    不过发现Ubuntu 11.04无法启动,后来启动其恢复模式后,也解决了。

    由于原来修改了一些内核编译选项,为了确认,使用默认的选项:
    make mrproper
    make menuconfig  -->直接exit保存
    make
    ...

    也正常启动。

17. blfs-book-svn-html-2011-10-14: 13. Connecting to a Network
    这里没有讲到将ipv4-static的ONBOOT="yes"改为ONBOOT="on",导致启动后有两个地址:一个静态IP地址,一个DHCP获得的地址。

18. 今天将lfs6.8-lenovo-2011092301.tar.bz2复制到ASUS UX30笔记本中,出现了mounting kernel-based file systems:/procmount的问题。
    复制的过程也很麻烦,因为当初没有按照http://www.linuxfromscratch.org/hints/downloads/files/backing-up-lfs.txt来进行备份,而是把整个$LFS/都打包。
    后来看到帖子http://www.linuxsir.org/bbs/thread346672.html,跟我的错误有点类似,于是重新编译安装util-linux(没有重编译perl,因为util-linux安装时没有出错)。
    重装完util-linux后重启就OK了。
    那应该也是mount程序出了问题,不知道是不是我的备份方法不对引起的。

19. PGP公钥导入
    gpg --keyserver subkeys.pgp.net --recv 8位钥匙号

20. 设置分区的label
    e2label device [ new-label ]

21. (2011.12.17 13:50) 今天将ux30的blfs备份解压到Dell Optiplex-380上,启动时提示rc used greatest stack depth,然后停住。
    blfs备份和解压是按照第11点上的“另一例子”进行的。刚才查了一下网上,帖子http://www.linuxsir.org/bbs/thread377917.html说是/dev目录的问题。
    由于备份时加了--exclude=dev,因此/dev目录是没有的。即使不加--exclude=dev,实际上/dev目录里面的Device Nodes也是会备份失败。
    解决办法是按照LFS6.8的6.2. Preparing Virtual Kernel File Systems重新创建目录和Nodes:
    mkdir -v $LFS/dev
    mknod -m 600 $LFS/dev/console c 5 1
    mknod -m 666 $LFS/dev/null c 1 3
    重启,问题解决。

22. (2011.12.17 14:50) 将blfs解压到dell optiplex-380后,出现无法重启的问题,重启命令后出现PCI INT A Disabled,最后在machine restart挂住。
    poweroff可以关机,但是关机重开后,启动异常。进入single模式后,重启(失败)后又可以重新进入多用户模式。
    根据帖子http://groups.google.com/group/kernelarchive/browse_thread/thread/03242a58b2560533/21e92808e0c76600?在grub.cfg中添加reboot=force,可以重启。
    不知道是什么原因,也不知道根本问题解决了没有。会不会更后来在BLFS中安装的包有关?

23. ubuntu下将dos文本转换成unix文本
    ubuntu没有dos2unix的安装包,使用tofrodos替代。
    安装好tofrodos后,使用“fromdos 文件名”进行转换。
    http://www.ylmf.net/ubuntu/guide/201011028183.html

24. (2011.12.19 9:47) Dell Optiplex-380的LFS以太网没有起来(32位系统),今天准备解决这个问题。
    lspci查看:
Network:        eth0: Broadcom NetLink BCM57780 Gigabit PCIe, 14:fe:b5:f0:47:cc

    根据LFS6.8 - 7.13. Configuring the network Script查看网络规则:
    cat /etc/udev/rules.d/70-persistent-net.rules
# PCI device 0x1969:0x1063 (atl1c)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="90:e6:ba:3a:b2:c5", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
    这个不对,是原来ux30的网卡。
    于是重新生成网络规则,并将原来的网卡注掉。

    重启,还是不行。

    dmesg查看,有这么一段:
[    1.672105] tg3.c:v3.115 (October 14, 2010)
[    1.672220] tg3 0000:02:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[    1.672339] tg3 0000:02:00.0: setting latency timer to 64
[    1.688623] tg3 mdio bus: probed
[    1.688731] tg3 0000:02:00.0: No PHY devices
[    1.688884] tg3 0000:02:00.0: Problem fetching invariants of chip, aborting
[    1.689013] tg3 0000:02:00.0: PCI INT A disabled

    查看内核配置,Broadcom Tigon3 support已经编译进去。

    google一下,看到这个帖子https://bugzilla.redhat.com/show_bug.cgi?id=525966,似乎就是我遇到的问题。我的dmesg提示No PHY devices,那就是加载tg3时发现没有Broadcom的PHY。

    查看内核配置,发现居然Broadcom的PHY没有配置,位置在:
  |     -> Device Drivers
  |       -> Network device support
  |         -> PHY Device support and infrastructure
  |           ->Drivers for Broadcom PHYs

    选上后重新编译内核,重启,eth0 OK。

25. (2011.12.20 15:04) 安装OpenSSH-5.9p1后,无法访问。查看启动,提示/lib/lsb/init-functions找不到。
    原因是blfs的启动脚本blfs-bootscripts-20111028.tar.bz2中的sshd是基于LFS7.0的启动脚本。
    于是把BLFS6.3的启动脚本blfs-bootscripts-20080816.tar.bz2找到,重新运行make install-sshd,问题解决。

26. 解压xz文件:
    xz -dk 文件名
    其中-d是解压,-k是保留xz文件。

27. Ubuntu 10.04对于Intel915显卡的支持有问题,频繁死机。解决办法是在grub.cfg文件的quiet splash后面添加i915.modset=1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值