portable ubuntu,Ubuntu24.04
本篇文章给大家谈谈portable ubuntu,以及Ubuntu24.04对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
scoop install dark安装失败
1概述
作为一名使用 win10的开发者,搭建开发环境往往是一件比较痛苦的事,需要从网上下载各种软件,在电脑上配置不同软件运行环境,对软件进行各种设置,不仅耗时,而且容易出现各种问题。搭建的环境还会存在下面一些问题:
安装大量程序造成路径污染。安装和卸载比较麻烦。开发环境不能迁移,重装系统或者换电脑需要重新搭建开发环境。软件版本不好控制。为了解决上面这些问题,我们可以使用 WSL+Docker+Scoop搭建开发环境,取代通过图形界面安装软件和 VMware安装 Linux环境的传统方式。
WSL是适用于 Linux的 Windows子系统,可让开发人员按原样运行 GNU/Linux环境-包括大多数命令行工具、实用工具和应用程序-且不会产生传统虚拟机或双启动设置开销。
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux机器或 Windows机器上。
Scoop是 Windows的命令行安装程序,可以让我们从命令行以最小的安装量安装程序,它消除了安装界面和安装程序造成的路径污染,它安装和卸载软件只需一行命令就可以完成,它还可以随意切换软件的版本。
一个完整的开发环境组成:首先使用 WSL搭建一个 Linux环境,然后在 Linux环境里安装 Docker应用,使用 Docker来安装一些常用软件,比如数据库、web环境等,Scoop则是在本机上安装一些开发用到的软件,比如 jdk、maven、idea等。WSL和 Scoop都是比较容易备份和还原的,这两个搭建好了,我们利用备份还原可以快速在另一台机器上搭建同样的一套环境,下面是搭建环境的具体流程。
2 WSL
2.1 WSL安装
使用 WINDOWS键+ R,输入 winver,检查 win10版本,确保内部版本号是 18362.1049以上,否则更新 win10到最新版本。
图片
2.以管理员身份打开 PowerShell并运行下面命令:
dism.exe/online/enable-feature/featurename:Microsoft-Windows-Subsystem-Linux/all/norestart
dism.exe/online/enable-feature/featurename:VirtualMachinePlatform/all/norestart
图片
3.重新启动计算机。
4.下载 Linux内核更新包[1],然后安装。
5.将 wsl2设置为默认版本,以管理员身份打开 PowerShell并运行下面命令:
wsl--set-default-version 2
图片
6.安装 Ubuntu 20.04 LTS,打开 Microsoft Store[2],搜索 Ubuntu 20.04 LTS[3]安装,安装完成后打开 Ubuntu 20.04 LTS,等候几分钟会提示设置用户名和密码,如果不设置用户名和密码直接关闭窗口则默认以 root登录,这里我们直接关闭窗口,不设置用户名和密码。
图片
7.然后重新打开 Ubuntu 20.04 LTS就会进入 Ubuntu 20.04 LTS了,我们也可以在 powershell使用 wsl这个命令进入 Ubuntu 20.04 LTS。
2.2 WSL配置
WSL每次启动后,windows都会给它分配一个随机的 IP地址,这样是不利于我们访问 docker里的服务的,为了解决这个问题,我们可以创建一个脚本文件 wsl2-ip.bat来给 wsl分配一个固定的 IP,在每次启动 wsl后用管理员权限运行这个脚本,文件内容如下:
@echo off
setlocal enabledelayedexpansion
:: set wsl2 ip
wsl-u root ip addr| findstr"192.168.169.2"> nul
if!errorlevel! equ 0(
echo wsl ip has set
) else(
wsl-d Ubuntu-20.04-u root ip addr add 192.168.169.2/28 broadcast 192.168.169.15 dev eth0 label eth0:1
echo set wsl ip success: 192.168.169.2
)
:: set windows ip
ipconfig| findstr"192.168.169.1"> nul
if!errorlevel! equ 0(
echo windows ip has set
) else(
netsh interface ip add address"vEthernet(WSL)" 192.168.169.1 255.255.255.240
echo set windows ip success: 192.168.169.1
)
pause
其中 192.168.169.2表示 Linux的 IP地址, 192.168.169.1表示主机的 IP地址。
有时会遇到 Ubuntu 20.04 LTS无法连接网络,这个非常重要,我们可以运行下面命令解决:
sed-i'4d'/etc/resolv.conf
sed-i'3a\nameserver 8.8.8.8'/etc/resolv.conf
sed-i'4a\nameserver 114.114.114.114'/etc/resolv.conf
2.3 Ubuntu配置
2.3.1替换镜像源
1.备份 sources.list文件,运行下面命令:
mv/etc/apt/sources.list/etc/apt/sources.list.bak
2.创建 source.list文件,运行下面命令:vim/etc/apt/sources.list
3.然后在文件里添加下面内容,下面源任选其一即可。
#清华源
#默认注释了源码镜像以提高 apt update速度,如有需要可自行取消注释
deb focal main restricted universe multiverse
# deb-src focal main restricted universe multiverse
deb focal-updates main restricted universe multiverse
# deb-src focal-updates main restricted universe multiverse
deb focal-backports main restricted universe multiverse
# deb-src focal-backports main restricted universe multiverse
deb focal-security main restricted universe multiverse
# deb-src focal-security main restricted universe multiverse
#预发布软件源,不建议启用
# deb focal-proposed main restricted universe multiverse
# deb-src focal-proposed main restricted universe multiverse
#阿里源
deb focal main restricted universe multiverse
#deb-src focal main restricted universe multiverse
deb focal-security main restricted universe multiverse
#deb-src focal-security main restricted universe multiverse
deb focal-updates main restricted universe multiverse
#deb-src focal-updates main restricted universe multiverse
deb focal-proposed main restricted universe multiverse
#deb-src focal-proposed main restricted universe multiverse
deb focal-backports main restricted universe multiverse
#deb-src focal-backports main restricted universe multiverse
#中科大源
deb focal main restricted universe multiverse
#deb-src focal main restricted universe multiverse
deb focal-updates main restricted universe multiverse
#deb-src focal-updates main restricted universe multiverse
deb focal-backports main restricted universe multiverse
#deb-src focal-backports main restricted universe multiverse
deb focal-security main restricted universe multiverse
#deb-src focal-security main restricted universe multiverse
deb focal-proposed main restricted universe multiverse
#deb-src focal-proposed main restricted universe multiverse
#网易163源
deb focal main restricted universe multiverse
deb focal-security main restricted universe multiverse
deb focal-updates main restricted universe multiverse
deb focal-proposed main restricted universe multiverse
deb focal-backports main restricted universe multiverse
#deb-src focal main restricted universe multiverse
#deb-src focal-security main restricted universe multiverse
#deb-src focal-updates main restricted universe multiverse
#deb-src focal-proposed main restricted universe multiverse
#deb-src focal-backports main restricted universe multiverse
4.进行更新,运行下面命令:
apt update
apt upgrade-y
2.3.2开启 systemctl
安装 daemonize和fontconfig软件,运行下面命令:apt install-y fontconfig daemonize
2.运行 vim/etc/profile命令,在末尾添加下面内容:
SYSTEMD_PID=$(ps-ef| grep'/lib/systemd/systemd--system-unit=basic.target$'| grep-v unshare| awk'{print$2}')
if [-z"$SYSTEMD_PID" ]; then
sudo/usr/bin/daemonize/usr/bin/unshare--fork--pid--mount-proc/lib/systemd/systemd--system-unit=basic.target
SYSTEMD_PID=$(ps-ef| grep'/lib/systemd/systemd--system-unit=basic.target$'| grep-v unshare| awk'{print$2}')
fi
if [-n"$SYSTEMD_PID" ]&& ["$SYSTEMD_PID"!="1" ]; then
exec sudo/usr/bin/nsenter-t$SYSTEMD_PID-a su-$LOGNAME
fi
3.运行 vim/etc/sudoers命令,在末尾添加下面内容:
%sudo ALL=(ALL) NOPASSWD:/usr/sbin/daemonize/usr/bin/unshare--fork--pid--mount-proc/lib/systemd/systemd--system-unit=basic.target
%sudo ALL=(ALL) NOPASSWD:/usr/bin/nsenter-t [0-9]*-a su- [a-zA-Z0-9]*
4.刷新 profile文件,运行下面命令:
source/etc/profile
2.3.2开启 ssh
设置 root账号的密码,用作后续登陆使用,运行下面命令:passwd root
图片
2.备份原始的 sshd_config,运行下面命令:
cp/etc/ssh/sshd_config/etc/ssh/sshd_config.bak
3.修改 sshd_config文件,运行下面命令:
sed-i'15c Port 22'/etc/ssh/sshd_config
sed-i'17c ListenAddress 0.0.0.0'/etc/ssh/sshd_config
sed-i'34c PermitRootLogin yes'/etc/ssh/sshd_config
sed-i'58c PasswordAuthentication yes'/etc/ssh/sshd_config
4.重启 sshd,运行下面命令
systemctl restart sshd
2.4 Docker安装与配置
官方和阿里的源选择其一,建议使用阿里源,速度快。
2.4.1官方安装
1.卸载旧版本,运行下面命令:
apt-get remove docker docker-engine docker.io containerd runc
2.更新 apt软件包索引并安装软件包以允许 apt通过 HTTPS使用存储库,运行下面命令:
apt-get install-y apt-transport-https ca-certificates curl gnupg lsb-release
3.添加 Docker的官方 GPG密钥,运行下面命令:
curl-fsSL sudo gpg--dearmor-o/usr/share/keyrings/docker-archive-keyring.gpg
4.设置稳定的存储库,运行下面命令:
echo"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] $(lsb_release-cs) stable"| sudo tee/etc/apt/sources.list.d/docker.list>/dev/null
5.安装最新版本的 Docker Engine和容器,运行下面命令:
apt-get update
apt-get install-y docker-ce docker-ce-cli containerd.io
apt-mark hold docker-ce docker-ce-cli containerd.io
2.4.2阿里源安装
卸载旧版本,运行下面命令:apt-get remove docker docker-engine docker.io containerd runc
2.更新 apt软件包索引并安装软件包以允许 apt通过 HTTPS使用存储库,运行下面命令:
apt-get install-y apt-transport-https ca-certificates curl gnupg lsb-release
3.添加 Docker的阿里 GPG密钥,运行下面命令:
curl-fsSL sudo apt-key add-
4.设置稳定的存储库,运行下面命令:
add-apt-repository"deb [arch=amd64] $(lsb_release-cs) stable"
5.安装最新版本的 Docker Engine和容器,运行下面命令:
apt-get update
apt-get install-y docker-ce docker-ce-cli containerd.io
apt-mark hold docker-ce docker-ce-cli containerd.io
2.4.3配置镜像加速
创建/etc/docker/daemon.json文件,并填写以下内容:
{
"registry-mirrors": [""]
}
3 Scoop
3.1 Scoop安装
1.以管理员权限打开 PowerShell。
2.自定义用户软件和全局软件安装位置,运行下面命令:
$env:SCOOP='D:\Softwares\Scoop\LocalApps'
[Environment]::SetEnvironmentVariable('SCOOP',$env:SCOOP,'User')
$env:SCOOP_GLOBAL='D:\Softwares\Scoop\GlobalApps'
[Environment]::SetEnvironmentVariable('SCOOP_GLOBAL',$env:SCOOP_GLOBAL,'Machine')
图片
3.配置安全策略以及安装 Scoop,运行下面命令:
Set-ExecutionPolicy RemoteSigned-scope CurrentUser
Invoke-Expression(New-Object System.Net.WebClient).DownloadString(';)
图片
3.2安装失败解决方案如果发生下面错误,这是因为网络原因无法访问 GitHub。
图片
2.访问 IP地址查询网站[4],输入raw.githubusercontent.com域名,查询对应的 IP地址。
图片
3.配置 C:\Windows\System32\drivers\etc\hosts文件,在修改前赋予 hosts文件读写权限。
图片
图片
图片
4.修改 host文件内容如下,第一列是查询出来的ip地址,第二列是其对应的域名,中间有个空格。
图片
5.保存后重新运行安装命令。
Invoke-Expression(New-Object System.Net.WebClient).DownloadString(';)
3.3 Scoop配置
安装 Scoop运行所需要的基础软件:scoop install sudo
sudo scoop install 7zip git innounp dark-g
图片
2.运行下面命令,检查Scoop还存在的问题,输入提示运行的命令,来解决存在的问题,如果你使用的安装路径不是我的路径,请修改命令中的软件安装位置:
scoop checkup
Add-MpPreference-ExclusionPath'D:\Softwares\Scoop\LocalApps'
Add-MpPreference-ExclusionPath'D:\Softwares\Scoop\GlobalApps'
Set-ItemProperty'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem'-Name'LongPathsEnabled'-Value 1
图片
3.配置软件仓库,官方软件仓库目前收录的软件很少,不足以支持我们的使用,添加下面的软件仓库,能让我们安装更多的软件:
scoop bucket add extras
scoop bucket add versions
scoop bucket add nightlies
scoop bucket add nirsoft
scoop bucket add php
scoop bucket add nerd-fonts
scoop bucket add nonportable
scoop bucket add java
scoop bucket add games
scoop bucket add jetbrains
scoop bucket add dorado
scoop bucket add Ash258
scoop bucket add pleiades
scoop bucket add Scoop-Apps
scoop bucket add scoop-zapps
scoop bucket add lemon
scoop bucket add raresoft
图片
4.如果软件仓库添加失败,还是因为网络的原因,大家可以把这些仓库 fork到自己的码云账户下,然后再添加。
5.使用 aria2来加速软件的安装:
scoop install aria2-g
scoop config aria2-max-connection-per-server 16
scoop config aria2-split 16
scoop config aria2-min-split-size 1M
如果想关闭 aria2,可以运行 scoop config aria2-enabled false命令。
3.4 Scoop常用命令
#搜索app
scoop search<应用名>
#检查哪些软件有更新
scoop status
#版本切换
scoop reset<应用名>@<版本切换>
#禁止某app更新
scoop hold<应用名>
#更新所有app
scoop update*
#安装app
scoop install<应用名>
#全局安装app
scoop install-g<应用名>
#安装extras软件源下的app
scoop install extras/<应用名>
#卸载app
scoop uninstall<应用名>
#卸载全局安装的app
scoop uninstall-g<应用名>
4总结
开发环境软件的安装与配置到这里就完成了,利用上面这些软件,你可以快速搭建 Java、Go、C++、Python等开发环境。
参考资料
[1]Linux内核更新包:
[2]Microsoft Store:
[3]Ubuntu 20.04 LTS:
[4]IP地址查询网站:
东芝L700如何运行linux
1概念
顾名思义,就是将 linux系统安装到移动硬盘,并且能在多台不同的电脑上运行——移动硬盘就是要移动着用嘛。不妨称之为 portable-linux或 mobile-linux,或者别的什么名字?
2用途
我想到以下几点——
救急:电脑原来的系统因病毒或其它原因不能正常启动,而又急需里面的资料,这时便可用移动硬盘启动,拷出资料;
便携:今社会电脑随处可见,随身带个移动硬盘,不管走到哪里,随便找台电脑插上就能用,再轻薄的笔记本恐怕也不如这方便,因为硬盘只是电脑的一个配件,电脑做的再小,硬盘永远更小
健壮:电脑出现硬件故障时,拔下移动硬盘,插到另一台机子上便能继续工作;
安全:所有数据都保存在移动硬盘里,电脑上不会留下任何痕迹,真正实现公用电脑、私人数据;
节省:公用电脑无需再买内置硬盘,公司也可以不必为员工配笔记本,每人一块移动硬盘,就能移动办公。
3为什么不是 portable-windows?
首先是版权问题。微软规定,用户购买一份 windows,就只能装在一台电脑上,在第二台电脑上用就算盗版了。
其次是技术问题。我曾尝试把 winXP装到移动硬盘,到“选择安装分区”时,若选了移动硬盘,就会报错,无法继续。文中给出一种方法——通过修改安装文件把 XP强行装进移动硬盘,或许可行。但即使安装成功,也只能在一台机子上使用,因为:1.不同的机子需要不同的驱动,2. windows系统记录有硬件信息,一旦发现换了机器,就会蓝屏。
毫无疑问,微软有能力作出可移动的 windows——技术不是问题,问题在于观念,而观念又取决于利益。说不定哪一天真的会出现 portable-windows——只要符合微软的利益。甚至说不定哪一天微软也开源了,谁知道呢 ^_^
4 portable-linux的可行性
既然目前 windows很难移动起来,那么 linux又如何呢?
作为自由软件,linux自然不存在版权问题,我们只需要考虑技术。很幸运,得益于世界各地伟大的热心的程序员们的无私奉献,portable-linux这一设想是完全可以实现的!
其实早在2004年8月,法国计算机外设厂商 LaCie公司就推出了装有 Mandrake Linux操作系统的移动硬盘,但似乎没能流行;2005年北京博威特公司推出的“一盘通”产品,则是在移动硬盘上安装了 UBUNTU LINUX;2006年中,华旗资讯(爱国者aigo)也推出了装有 rays linux(华镭)的移动硬盘;今年初,Mandriva又发布了预装 Linux软件包“U盘”产品,大受欢迎。
那么,其它 linux发行版是不是也能移动起来呢??我想可以。
所有 linux启动过程都是类似的:开机后运行一个引导器(grub、lilo、syslinux等),将内核和 initrd(如果有的话)载入内存;内核取得控制后,设法找到根文件系统,运行其中的 init,系统就启动起来了。
同样,移动硬盘中的 linux只要实现了上述过程,也能启动。事实上不难做到:只要主板支持 USB-HDD启动,就能从移动硬盘运行引导器,进而加载内核和 initrd;根分区则可通过 UUID来指定,而无需挂念移动硬盘到底是 sda还是 sdb。
另外,为了适应不同机器,需要有自动检测、配置硬件的功能。用惯 windows的朋友可能会觉得这是个 big problem,因为很多时候在以易用性著称的 windows下安装驱动都不是一件简单的事情,更不要说 linux了。其实这是一个错误印象,实际情况恰恰相反,对于日常使用的大部分硬件,linux都能自动识别、自动驱动,无需用户干预。可能对于最新的、不常见的硬件,linux支持稍微差些──主要是因为一些厂商不重视 linux驱动开发。不过随着 linux日益流行,情况在不断好转。
通常要考虑的也就是显卡。xorg内置的开源驱动和 vesa驱动,可以保证绝大多数电脑进入窗口界面,自动检测也很容易实现。要想获得更好的性能(如运行3D桌面),就得用厂商提供的闭源驱动,要麻烦一些。
内核方面,性能不是最重要的,最重要的是兼容性,要保证能够在大多数电脑上启动起来。
至于接口速度,根本不用担心—— USB2.0移动硬盘通常都能达到 20M/S以上,系统完全可以流畅运行。日后 e-sata普及起来,速度更加不是问题。
5一切才刚刚开始
我一直关注 linux在移动硬盘上的应用,一个重要原因:这是 windows目前无法作到的。必须承认,在桌面应用领域,windows很多方面都胜过 linux,然而它无法用在移动硬盘上,这就有了 linux发挥的空间。
想象一下,有一天内置硬盘不再是电脑标配,人手一块移动硬盘,不管走到哪里,都能用上自己的系统……
一个新的时代:-)
如何编译OpenWrt
准备工作
在开始编译Openwrt之前需要您做些准备工作;与其他编译过程一样,类似的编译工具和编译环境是必不可少的:
一个构建OpenWrt映像的系统平台,简单说就是准备一个操作系统(比如Ubuntu、Debian等);
确保安装了所需的依赖关系库,(在debian系统中就是安装各种需要的软件包)
OpenWrt源代码副本
首先,开机登陆到支持编译Openwrt的操作系统(废话了)。实体机或者虚拟机(Vmware或者 Qemu)里的操作系统都行,这里推荐使用Linux系统。 bsd和mac osx系统也可以编,但不推荐,且未验证是否可编译成功。下文假定您使用的是Debian操作系统,使用 apt-get来管理包.替代的选择是 Ubuntu(分支 Kubuntu, Xubuntu等即可)。
第二步,就是安装所需要的各种软件包,包括编译器,解压工具,特定的库等.这些工作可以简单的通过键入以下命令(通常需要root或者是 sudo权限),以root权限安装下列软件包(可能并不完整,会有提示,提示缺少即装就可以了):
32位(x86)请执行下列命令:
# apt-get install build-essential asciidoc binutils bzip2 gawk gettext\
git libncurses5-dev libz-dev patch unzip zlib1g-dev
64位(x86_64)请执行下列命令(多装了哪些库或软件包呢?请您仔细看一看哦):
# apt-get install build-essential asciidoc binutils bzip2 gawk gettext\
git libncurses5-dev libz-dev patch unzip zlib1g-dev ia32-libs\
lib32gcc1 libc6-dev-i386
参考本列表中所列的编译环境所需要软件包或库。
某些依赖的为库或软件包也许操作系统中已经安装过,此时apt-get会作出提示(提示您忽略或重新安装的),别紧张,放轻松些,编译Openwrt不会像编译DD-WRT那样难的(至少本人是体会到了编译DD-WRT的难)。
最后下载一份完整的 Openwrt源码到编译环境中。关于Openwrt的源代码下载,途径有二,一是通过 svn,一是通过 git,建议使用 svn,因为Openwrt主要以 svn来维护Openwrt系统的版本。另外,请注意Openwrt中不同的分支版本,一个是用得较多的开发快照,俗称 trunk,二是稳定版,俗称 backfire。