跳至主要内容

Fedora 9,糟糕的体验(1)-安装

Fedora 9 经过短暂的延期时,终于发布了。
这次Fedora 9 带来了很很多的特性,吸引Fedora 粉丝眼球。 具体情况,你可以从Fedora 9的发行说明 中进行了解。

喜欢尝鲜的朋友可以会迫不及待的安装试用,而我的安装经历不是那么愉快。

Fedora 常见的两种安装方法,光盘直接安装和Live CD 进行安装。

1.光盘安装

要体验的ext4等,安装时内核启动时加上参数linux ext4,具体细节请查阅官方网站上的安装手册。
我一般都用reiserfs。
我添加了 linux reiserfs selinux=0。

selinux=0,表示禁用selinux的使用。

如果在现有系统上进行安装,可以选择升级和全新安装。
一般最好选择全新安装,以前的Fedora 升级经验告诉我,它并不能做Redhat 企业版本那样无缝升级。 导致升级后问题会很多。

我一般都是选择全新安装,这样才能真正体验到新版本带来的特性。
安装之前,首先要进行现有硬盘数据进行保护,以免安装过程重要数据丢失。
主要是
/etc
/opt
/home
几个目录。
如果/opt,/home是单独分区,安装时可以选择将它们挂到新系相应的目录上,但要注意的是,千万不要对其进行格式化。
也可以先不挂载任何分区,安装完之后,再修改/etc/fstab,将它挂上去。

2.Live CD 安装
我首先使用过的Live CD是Knoppix ,后来这种方式在Ubuntu 中发扬光大。Fedora 提供Live CD 是最近两版本的事。
Live CD可以提供在先不安装的情况下,试用linux。 我现在还没有试用Fedora Linux 提供的Live CD ,不知道与Ubuntu 的方式有什么差别。但是Ubuntu的Live CD 安装方式在我机器上体验不是很好。

3.使用Preupgrade进行升级
除用光盘安装与升级外,Fedora 9 声称提供另外一种新的特性进行升级,称为PreUpgrade
Preupgrade声称提供系统的无缝升级,目前支持F7,F8-》F9的升级。
在Fedora 8 下必须使用0.9.3-3版本才能看到看到Fedora 9,现在已包含Fedora 8官方安装源中,直接用yum安装即可。
从命令行中启动preupgrade,如图所示。
接下来会进行几个步骤。
  1. 下载新版本发行信息
  2. 对比现有的操作系统,计算哪些包需要更新
  3. 下载要更新的包
  4. 下载安装文件image
完成后,会提示重新启动系统。 这期间可能会遇到两个问题: 第一个是一些mirror的上没有.treeinfo这个文件,导致第四步下载终止(新版本可能已经修正)。 把官方Fedora 官方源添加到/var/cache/yum/anaconda-upgrade/mirrorlist.txt的第一个位置。 第二个问题,所有下载完成即第四步完成时,会写grub.conf。打开grub.conf文件,定位到最上面的Upgrade to ...部分。 如果你的/boot没有单独分区的话,在stage2=hd:sda1:boot....的boot 加上/。即 stage2=hd:sda1:/boot.... 如果/boot是一个单独分区,去掉"/boot"。 按照官方文档,重启就行了,会启动anaconda安装程序对系统进行升级,它会自动安装好我们刚刚下载的软件包。 而我重启之后,出现读取image文件错误,然后提示选择安装所需要的image文件,看起来和硬盘安装一样。 非常奇怪,google 一下,发现也有人有这个问题,不知道是什么原因。 经过多次重试,结果还是一样。我不得不放弃这种方式升级,选择传统的光盘安装。

评论

此博客中的热门博文

Build a Reactive application with Angular 5 and Spring Boot 2.0

I have created a post to describe Reactive programming supports in Spring 5 and its subprojects, all codes of this article are updated the latest Spring 5 RELEASE, check spring-reactive-sample under my Github account.
In this post, I will create a simple blog system, including:
A user can sign in and sign out.An authenticated user can create a post.An authenticated user can update a post.Only the user who has ADMIN role can delete a post.All users(including anonymous users) can view post list and post details.An authenticated user can add his comments to a certain post. The backend will be built with the latest Spring 5 reactive stack, including:
Spring Boot 2.0, at the moment the latest version is 2.0.0.M7Spring Data MongoDB supports reactive operations for MongoDBSpring Session adds reactive support for WebSessionSpring Security 5 aligns with Spring 5 reactive stack The frontend is an Angular based SPA and it will be generated by Angular CLI.
The source code is hosted on Github, …

Activating CDI in JSF 2.3

Activating CDI in JSF 2.3 When I upgraed my Java EE 7 sample to the newest Java EE 8, the first thing confused me is the CDI beans are not recoganized in Facelects template in a JSF 2.3 based web applicaiton, which is working in the development version, but in the final release version, they are always resolved as null. I filed an issue on Mojarra and discussed it with the developers from communities and the JSF experts.
According to the content of README, In a JSF 2.3 application, to activate CDI support, declaring a 2.3 versioned faces-config.xml and adding javax.faces.ENABLE_CDI_RESOLVER_CHAIN in web.xml is not enough, you have to declare @FacesConfig annotated class to enable CDI.
Here is the steps I created a workable JSF 2.3 applicatoin in Java EE 8.
Create a Java web application, this can be done easily by NetBeans IDE, or generated by Maven archetype, for exmaple.
$ mvn archetype:generate -DgroupId=com.example -DartifactId=demo -DarchetypeArtifactId=maven-archetype-w…

JSF 2.3:Websocket support

Websocket support One of the most attractive features is JSF 2.3 added native websocket support, it means you can write real-time applications with JSF and no need extra effort.
To enable websocket support, you have to add javax.faces.ENABLE_WEBSOCKET_ENDPOINT in web.xml.
<context-param> <param-name>javax.faces.ENABLE_WEBSOCKET_ENDPOINT</param-name> <param-value>true</param-value> </context-param> Hello Websocket Let's start with a simple example.
@ViewScoped@Named("helloBean") publicclassHelloBeanimplementsSerializable { privatestaticfinalLoggerLOG=Logger.getLogger(HelloBean.class.getName()); @Inject@PushPushContext helloChannel; String message; publicvoidsendMessage() { LOG.log(Level.INFO, "send push message"); this.sendPushMessage("hello"); } privatevoidsendPushMessage(Objectmessage) { helloChannel.send(""+ message +" at &…